= Концептуален дизајн - ЕР Дијаграм и податочни побарувања = == ER дијарграм == [[Image(ER-min.PNG)]] == Податочни Побарувања == === Ентитети === **users – Етитет кој што ги дефинира корисниците на апликацијата. Во множина затоа што User е резервиран збор во sql.** * id – нумерички тип (примарен клуч) * first_name – текстуален тип (задолжителен атрибут) * last_name – текстуален тип (задолжителен атрибут) * username – текстуален тип (задолжителен атрибут, уникатен) * hashed_password – текстуален тип (задолжителен атрибут) * e_mail – текстуален тип (задолжителен атрибут, уникатен) * gender – текстуален тип (опционален атрибут) * date_created – датумски тип (задолжителен атрибут) **Client – Профил на клиентот. Произлегува од users.** * id – нумерички тип (примарен клуч) * first_name – текстуален тип (задолжителен атрибут) * last_name – текстуален тип (задолжителен атрибут) * username – текстуален тип (задолжителен атрибут, уникатен) * hashed_password – текстуален тип (задолжителен атрибут) * e_mail – текстуален тип (задолжителен атрибут, уникатен) * gender – текстуален тип (опционален атрибут) * date_created – датумски тип (задолжителен атрибут) * is_verified – булова вредност (задолжителен атрибут) **pharmacist – Профил на фармацевтот. Произлегува од users.** * id – нумерички тип (примарен клуч) * first_name – текстуален тип (задолжителен атрибут) * last_name – текстуален тип (задолжителен атрибут) * username – текстуален тип (задолжителен атрибут, уникатен) * hashed_password – текстуален тип (задолжителен атрибут) * e_mail – текстуален тип (задолжителен атрибут, уникатен) * gender – текстуален тип (опционален атрибут) * date_created – датумски тип (задолжителен атрибут) **admins – Профил на администраторот. Произлегува од users. Во множина затоа што Admin е резервиран збор во sql** * id – нумерички тип (примарен клуч) * first_name – текстуален тип (задолжителен атрибут) * last_name – текстуален тип (задолжителен атрибут) * username – текстуален тип (задолжителен атрибут, уникатен) * hashed_password – текстуален тип (задолжителен атрибут) * e_mail – текстуален тип (задолжителен атрибут, уникатен) * gender – текстуален тип (опционален атрибут) * date_created – датумски тип (задолжителен атрибут) **company – Ентитет кој ги претставува компаниите што учествуваат во системот.** * id – нумерички тип (примарен клуч) * name – текстуален тип (задолжителен атрибут) * description – текстуален тип (опционален атрибут) * registration_number – текстуален тип (задолжителен атрибут, уникатен) **pharmacy – Аптека која продава лекови на клиентите.** * id – нумерички тип (примарен клуч) * name – текстуален тип (задолжителен атрибут) * description – текстуален тип (опционален атрибут) * registration_number – текстуален тип (задолжителен атрибут, уникатен) **manufacturer – Производител на брендирани лекови.** * id – нумерички тип (примарен клуч) * name – текстуален тип (задолжителен атрибут) * description – текстуален тип (опционален атрибут) * registration_number – текстуален тип (задолжителен атрибут, уникатен) **distributor – Дистрибутер што ги снабдува аптеките со лекови.** * id – нумерички тип (примарен клуч) * name – текстуален тип (задолжителен атрибут) * description – текстуален тип (опционален атрибут) * registration_number – текстуален тип (задолжителен атрибут, уникатен) **deliverycompany – Компанија за достава на нарачки до клиентите.** * id – нумерички тип (примарен клуч) * name – текстуален тип (задолжителен атрибут) * description – текстуален тип (опционален атрибут) * registration_number – текстуален тип (задолжителен атрибут, уникатен) **contactinformation – Контакт информации за корисници и локации на компанија.** * id – нумерички тип (примарен клуч) * phone – текстуален тип (опционален атрибут) * address – текстуален тип (опционален атрибут) **facility – Објекти поврзани со компаниите (аптеки, складишта).** * id – нумерички тип (примарен клуч) * name – текстуален тип (задолжителен атрибут) * code – текстуален тип (задолжителен атрибут, уникатен) **medicine – Ентитет кој ги дефинира генеричките не-брендирани лекови.** * id – нумерички тип (примарен клуч) * name – текстуален тип (задолжителен атрибут) * active_ingredient – текстуален тип (опционален атрибут) **brandedmedicine – Ентитет кој ги претставува брендираните лекови со комерцијални имиња.** * id – нумерички тип (примарен клуч) * price – нумерички тип (задолжителен атрибут) * description – текстуален тип (опционален атрибут) * dosage_form – текстуален тип (задолжителен атрибут) * strength – текстуален тип (задолжителен атрибут) * origin_country – текстуален тип (опционален атрибут) **brandedmedicineimage – Слики на брендираните лекови.** * id – нумерички тип (примарен клуч) * image – текстуален тип (задолжителен атрибут) **inventory – Магацин на одреден објект.** * id – нумерички тип (примарен клуч) **clubcard – Клуб картичка за лојални клиентите.** * id – нумерички тип (примарен клуч) * club_program – текстуален тип (задолжителен атрибут) * points – нумерички тип (задолжителен атрибут) **paymentmethod – Начин на плаќање (картичка, готово, банкарски трансфер).** * id – нумерички тип (примарен клуч) * name – текстуален тип (задолжителен атрибут) **payment – Информации за уплатите извршени од клиентите.** * id – нумерички тип (примарен клуч) * payment_date – датумски тип (задолжителен атрибут) * amount – нумерички тип (задолжителен атрибут) * status – текстуален тип (задолжителен атрибут) **sensitivepclientdata – Чувствителни податоци за клиентот, кои се користат за верификација.** * id – нумерички тип (примарен клуч) * embg – текстуален тип (задолжителен атрибут) * portrait_photo – текстуален тип (задолжителен атрибут) **prescription – Рецепт издаден од лекар за клиент.** * id – нумерички тип (примарен клуч) * issued_by – текстуален тип (задолжителен атрибут) * issued_at – датумски тип (задолжителен атрибут) * valid_to – датумски тип (задолжителен атрибут) * embg – текстуален тип (задолжителен атрибут) **orders – Нарачки направени од страна на клиентот.** * id – нумерички тип (примарен клуч) * order_date – датумски тип (задолжителен атрибут) * expected_arrival_date – датумски тип (задолжителен атрибут) * status – текстуален тип (задолжителен атрибут) * total_price – нумерички тип (задолжителен атрибут) **shoppingcart – Кошничка за купување на клиентот.** * id – нумерички тип (примарен клуч) **supplyorder – Нарачка за снабдување на аптека од страна на дистрибутер.** * id – нумерички тип (примарен клуч) * order_date – датумски тип (задолжителен атрибут) * expected_arrival_date – датумски тип (задолжителен атрибут) **healthprofile – Здравствен профил на клиентот.** * id – нумерички тип (примарен клуч) * blood_type - текстуален тип (опционален атрибут) === Релации === * **contact** - 1:N релација помеѓу Facility и Contact Information и Users и Contact Information, каде секој Објект/Корисник може да има повеќе информации за контакт, а секоја контакнта информација мора да припаѓа само на еден Објект/Корисник. Целосно учество од страната на Contact Information и во двете релации. * **manages** - 1:1 релација помеѓу Facility и Inventory, каде што еден објект може да управува со еден магацин, и еден магацин може да управуавн од страна на само еден обејкт. Целосно учество од двете страни. * **owns** - 1:N релација помеѓу една компанија и еден објект, една компаноја може да поседува повеќе објекти, а еден обејкт мора да е дел од само една компанија. Целосно учество од страната на Facility. * **subscribes** - 1:1 релација меѓу Client и Club Card, еден клиент смее да има само една клуб картичка, и една картичка припаѓа само на еден клиент . Целосно учество од страната на Club Card. * **secures** - 1:1 релација измеѓу Client и Sensitive Client Data, еден клиент може да има едно множество од сензитивни податоци, и сензитивни податоци мора да припаѓаат на само еден клиент . Потполно учество од страната на Sensitive Client Data. * **verifies** - 1:N релација измеѓу Pharmacist и Sensitive Client Data, сензитивни податоци на клиент може да се верифицирани од страна на еден фармацефт, а еден фармацефт може да верифицира повеќе сензитивни податоци на клиент . * **refers_to** - 1:N релација измеѓу Payment Method и Payment, каде што еден метод за плаќање може да се користи за повеќе плаќања, а едно плаќање може да користи само еден метод за плаќање. Целосно учество од страната на Payment. * **makes** - 1:N релација измеѓу Client и Payment, каде што еден клиент може да изврши повеќе плаќања, но едно плаќање може да е изврешно од само еден клиент . Потполно учество од страната на Payment. * **pays_for** - 1:1 релација измеѓу Order и Payment, каде што едно плаќање може да се однесува кон само една нарачка, и една нарачка може да се изврши со само едно плаќање. Потполно учество од двете страбу. * **client_order** - 1:N релација измеѓу Client и Order, еден клиент може да нарачува повеќе нарачки, а една нарачка може да е нарачана од само еден клиент . Потполно учество од страната на Order. * **shops** - 1:1 релација измеѓу Client и Shopping Cart, каде што еден клиент има една кошничка за пазарење, и една кошничка ја поседува само еден клиент. Потполно учество од двете страни. * **profiles** - 1:1 релација измеѓу Client и Health Profile, каде што еден клиент може да има само еден здравствен профил, и еден здравствен профил може да припаѓа на само еден клиент . Потполно учество од страна на Health Profile. * **image** - 1:N релација измеѓу Branded Medicine и Branded Medicine Image, каде што еден брендиран лек може да има повеќе слики, а една слика може да припаѓа кон еден прендиран лек. Потполно учество од страна на слиакта. * **prescribed** - 1:N релација измеѓу Client и Prescription, каде што еден клиент може да има повеќе лекови рецепти за лекови, а една рецепта се однесува кон само еден клиент . * **associates_with** - 1:N релација измеѓу Medicine и Prescription, каде што една рецепта може да се однесува кон еден тип на лек, а еден тип на лек може да се соддржи во повеќе различни рецепти. Потполно учество од страната на Prescription. * **manufactures** - 1:N релација измеѓу Manufacturer и Branded Medicine, каде што еден производител може да произведува повеќе брендирани лекови, а еден брендиран лек е произведен од еден производител. Потполно учество од страната на Branded Medicine. * **distributes** - N:M релација измеѓу Distributor и Branded Medicine, каде што еден брендиран лек може да е дистрибуиран од страна на повеќе дистрибутори, и еден дистрибутор може да дистрибуира повеќе брендирани лекови. * **supply_pharmacy** - 1:N релација измеѓу Distributor и Supply Order, каде што еден дистрибутер може да дистрибуира повеќе нарачки, но една нарачка мора да е дистрибуирана од страна на еден дистрибутер. Потполно учество од страната на Supply Order. * **order_pharmacy** - 1:N релација измеѓу Pharmacy и Supply Order, каде што една аптека може да нарача повеќе нарачки, но една нарачка мора да е нарачана од страна на една аптека. Потполно учество од страната на Supply Order. * **delivers** - 1:N релација измеѓу Delivery Company и Order, каде што една компанија за достава може да доставува повеќе пратки, но една пратка може да е доставена од страна на само една компанија за достава. Потполно учество од страна на Order. * **contains** - N:M релација измеѓу Supply Order и Branded Medicine, каде што една нарачка може да соддржи повеќе брендирани лекови, и брендирани лекови може да учествуваат во повеќе нарачки. Соддржи и атрибут квантитет. Потполно учество од страната на Supply Order. * **stored_in** - N:M релација измеѓу Inventory и Branded Medicine, каде што брендиран лек може да се наоѓа во повеќе магацини, и магацин може да има повеќе различни брендирани лекови. Дополнително соддржи количество, и датум на последна промена на лекот. * **instance_of** - N:M релација измеѓу Medicine и Branded Medicine, каде што брендиран лек може да е инстанца од повеќе лекови (брендирани лекови кои соддржат комбинација од повеќе лекови), и еден лек може да е инстанциран од страна на повеќе брендирани лекови. Потполно учество од страна на Branded Medicine. * **allergic_reaction** - N:M релација измеѓу Health Profile и Medicine, каде што во еден здравствен профил може да се забележат алергиски реакции кон повеќе лекови, и еден лек може да предизвикува алергични реакции кај повеќе здравстевни профили. Дополнително ги соддржи атрибутите: date diagnosed (опционален атрибут), description (опционален атрибут), severity (опционален атрибут). * **interaction** - N:M релација измеѓу 2 Medicine ентитета, каде што еден лек може да влегува во интеракција со повеќе други лекови, а секој друг лек може да интерагира со повеќе лекови. Релацијата е симетрична (interaction(A,B) ≡ interaction(B,A)) и анти-рефлексивна (лек не интерагира со самиот себе). Дополнително ги содржи атрибутите type (задолжителен атрибут), description (опционален атрибут) и severity (опционален атрибут). * **order_content** - N:M релација измеѓу Order и Branded Medicine, каде што во една нарачка може да има повеќе брендирани лекови, и еден брендиран лек може да е дел од повеќе нарачки. Дополнително се чува количество (задолжителен атрибут). Потполно учество од страна на Order. * **cart_content** - N:M релација измеѓу Shopping Cart и Branded Medicine, каде што во една кошничка за пазарење може да има повеќе брендирани лекови, и еден лек може да се наоѓа во повеќе кошнички. Дополнително се чува количество (задолжителен атрибут). * **catalog** - N:M релација измеѓу Pharmacy и Branded Medicine, каде што во една аптека може да има повеќе брендирани лекови, а еден брендиран лек може да е дел од повеќе аптеки