Changes between Version 6 and Version 7 of Normalization


Ignore:
Timestamp:
09/04/25 01:31:41 (2 days ago)
Author:
222003
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v6 v7  
    9393company_id⁺ = {company_id}\\
    9494\\
    95 **DeliveryCompany**\\
     95**!DeliveryCompany**\\
    9696Суперклуч: company_id\\
    9797company_id⁺ = {company_id}\\
     
    115115id⁺ = {id, medicine_name, active_ingredient}\\
    116116\\
    117 **BrandedMedicine**\\
     117**!BrandedMedicine**\\
    118118Суперклуч: id\\
    119119id⁺ = {id, manufacturer_id, name, price, description, dosage_form, strength, origin_country}\\
    120120\\
    121 **BrandedMedicineImage**\\
     121**!BrandedMedicineImage**\\
    122122Суперклуч: id\\
    123123id⁺ = {id, branded_medicine_id, image}\\
    124124\\
    125 **ContactInformation**\\
     125**!ContactInformation**\\
    126126Суперклуч: id\\
    127127id⁺ = {id, phone, address, user_id, facility_id}\\
    128128\\
    129 **ClubCard**\\
     129**!ClubCard**\\
    130130Суперклуч: id\\
    131131id⁺ = {id, user_id, club_program, points}\\
    132132\\
    133 **PaymentMethod**\\
     133**!PaymentMethod**\\
    134134Суперклуч: id\\
    135135id⁺ = {id, method_name}\\
     
    139139id⁺ = {id, client_id, payment_method_id, payment_date, amount, status}\\
    140140\\
    141 **ClientOrder**\\
     141**!ClientOrder**\\
    142142Суперклуч: id\\
    143143id⁺ = {id, client_id, delivery_company_id, payment_id, order_date, expected_arrival_date, status, total_price}\\
     
    146146payment_id⁺ = {payment_id, id, client_id, delivery_company_id, order_date, expected_arrival_date, status, total_price}\\
    147147\\
    148 **ShoppingCart**\\
     148**!ShoppingCart**\\
    149149Суперклуч: id\\
    150150id⁺ = {id, client_id}\\
    151151\\
    152 **SupplyOrder**\\
     152**!SupplyOrder**\\
    153153Суперклуч: id\\
    154154id⁺ = {id, distributor_id, pharmacy_id, order_date, expected_arrival_date, status}\\
    155155\\
    156 **HealthProfile**\\
     156**!HealthProfile**\\
    157157Суперклуч: id\\
    158158id⁺ = {id, client_id, blood_type}\\
    159159\\
    160 **SensitiveClientData**\\
     160**!SensitiveClientData**\\
    161161Суперклуч: id\\
    162162id⁺ = {id, client_id, pharmacist_id, embg, portrait_photo, verification_status}\\
     
    218218**Заклучок: Company е во BCNF.**\\
    219219\\
    220 **Pharmacy, Distributor, Manufacturer, DeliveryCompany**\\
     220**Pharmacy, Distributor, Manufacturer, !DeliveryCompany**\\
    221221Овие четири релации се специјализации на Company и го користат company_id како примарен клуч. Немаат сопствени не-клучни атрибути, па единствената зависност е company_id → {}. Како што секогаш левата страна е клуч, **сите се во BCNF.**\\
    222222\\
     
    232232**Заклучок: Medicine е во BCNF.**\\
    233233\\
    234 **BrandedMedicine**\\
    235 Оваа релација го користи id како примарен клуч и содржи повеќе атрибути (manufacturer_id, name, price, description, dosage_form, strength, origin_country). Функционалната зависност е id → {сите останати атрибути}. Производителот може да има повеќе лекови, па manufacturer_id сам по себе не е клуч. Левата страна (id) е клуч, така што **BrandedMedicine е во BCNF.**\\
    236 \\
    237 **BrandedMedicineImage**\\
     234**!BrandedMedicine**\\
     235Оваа релација го користи id како примарен клуч и содржи повеќе атрибути (manufacturer_id, name, price, description, dosage_form, strength, origin_country). Функционалната зависност е id → {сите останати атрибути}. Производителот може да има повеќе лекови, па manufacturer_id сам по себе не е клуч. Левата страна (id) е клуч, така што **!BrandedMedicine е во BCNF.**\\
     236\\
     237**!BrandedMedicineImage**\\
    238238Тука примарен клуч е id. Зависноста е id → {branded_medicine_id, image}. Бидејќи секој атрибут зависи од примарниот клуч, **релацијата е во BCNF.**\\
    239239\\
    240 **ContactInformation**\\
    241 Примарен клуч е id. Дополнителното ограничување бара секоја контакт информација да се однесува на точно еден објект или точно еден корисник. Зависностите се id → {phone, address, user_id, facility_id}. Сите зависности се со клуч на левата страна, па **ContactInformation е во BCNF.**\\
    242 \\
    243 **ClubCard**\\
    244 Оваа релација има примарен клуч id. Сите останати атрибути (user_id, club_program, points) зависат единствено од овој клуч. Нема транзитивни зависности. Заклучок: **ClubCard е во BCNF.**\\
    245 \\
    246 **PaymentMethod**\\
     240**!ContactInformation**\\
     241Примарен клуч е id. Дополнителното ограничување бара секоја контакт информација да се однесува на точно еден објект или точно еден корисник. Зависностите се id → {phone, address, user_id, facility_id}. Сите зависности се со клуч на левата страна, па **!ContactInformation е во BCNF.**\\
     242\\
     243**!ClubCard**\\
     244Оваа релација има примарен клуч id. Сите останати атрибути (user_id, club_program, points) зависат единствено од овој клуч. Нема транзитивни зависности. Заклучок: **!ClubCard е во BCNF.**\\
     245\\
     246**!PaymentMethod**\\
    247247Со примарен клуч id, единствената зависност е id → method_name. **Затоа релацијата е во BCNF.**\\
    248248\\
     
    251251**Заклучок: Payment е во BCNF.**\\
    252252\\
    253 **ClientOrder**\\
     253**!ClientOrder**\\
    254254Оваа релација има два кандидат клуча: id (PK) и payment_id (unique). Зависностите се id → {client_id, delivery_company_id, payment_id, order_date, expected_arrival_date, status, total_price} и payment_id → id. Бидејќи во двата случаи левата страна е клуч, **релацијата е во BCNF.**\\
    255255\\
    256 **ShoppingCart**\\
     256**!ShoppingCart**\\
    257257Примарен клуч е id. Единствената зависност е id → {client_id}. Бидејќи левата страна е клуч, **релацијата е во BCNF.**\\
    258258\\
    259 **SupplyOrder**\\
     259**!SupplyOrder**\\
    260260Примарен клуч е id. Сите останати атрибути (distributor_id, pharmacy_id, order_date, expected_arrival_date, status) зависат од овој клуч. \\
    261 **Заклучок: SupplyOrder е во BCNF.**\\
    262 \\
    263 **HealthProfile**\\
     261**Заклучок: !SupplyOrder е во BCNF.**\\
     262\\
     263**!HealthProfile**\\
    264264Со примарен клуч id, останатите атрибути (client_id, blood_type) зависат исклучиво од клучот. \\
    265 **Заклучок: HealthProfile е во BCNF.**\\
    266 \\
    267 **SensitiveClientData**\\
     265**Заклучок: !HealthProfile е во BCNF.**\\
     266\\
     267**!SensitiveClientData**\\
    268268Примарен клуч е id. Сите останати атрибути (client_id, pharmacist_id, embg, portrait_photo, verification_status) зависат од него. \\
    269269**Затоа релацијата е во BCNF.**\\
     
    300300Оваа релација ги поврзува здравствените профили со лекови што предизвикуваат алергиски реакции, и содржи дополнителни атрибути {date_diagnosed, description, severity}. Примарен клуч е {health_profile_id, medicine_id}. Функционалната зависност е {health_profile_id, medicine_id} → {date_diagnosed, description, severity}. Покривачот на составниот клуч ги содржи сите атрибути. **Затоа AllergicReaction_HealthProfile_Medicine е во BCNF.**\\
    301301\\
    302 **MedicineInteraction**\\
    303 Оваа релација ги опишува интеракциите помеѓу парови лекови. Примарен клуч е {medicine_id_1, medicine_id_2}. Дополнителните атрибути се {type, description, severity}. Функционалната зависност е {medicine_id_1, medicine_id_2} → {type, description, severity}. Со оглед дека составниот клуч ги покрива сите атрибути, **MedicineInteraction е во BCNF.**\\
     302**!MedicineInteraction**\\
     303Оваа релација ги опишува интеракциите помеѓу парови лекови. Примарен клуч е {medicine_id_1, medicine_id_2}. Дополнителните атрибути се {type, description, severity}. Функционалната зависност е {medicine_id_1, medicine_id_2} → {type, description, severity}. Со оглед дека составниот клуч ги покрива сите атрибути, **!MedicineInteraction е во BCNF.**\\
    304304
    305305== Проверка на нормализација по промени поради Безбедност (Spring Security)