Changes between Version 6 and Version 7 of Normalization
- Timestamp:
- 09/04/25 01:31:41 (2 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Normalization
v6 v7 93 93 company_id⁺ = {company_id}\\ 94 94 \\ 95 ** DeliveryCompany**\\95 **!DeliveryCompany**\\ 96 96 Суперклуч: company_id\\ 97 97 company_id⁺ = {company_id}\\ … … 115 115 id⁺ = {id, medicine_name, active_ingredient}\\ 116 116 \\ 117 ** BrandedMedicine**\\117 **!BrandedMedicine**\\ 118 118 Суперклуч: id\\ 119 119 id⁺ = {id, manufacturer_id, name, price, description, dosage_form, strength, origin_country}\\ 120 120 \\ 121 ** BrandedMedicineImage**\\121 **!BrandedMedicineImage**\\ 122 122 Суперклуч: id\\ 123 123 id⁺ = {id, branded_medicine_id, image}\\ 124 124 \\ 125 ** ContactInformation**\\125 **!ContactInformation**\\ 126 126 Суперклуч: id\\ 127 127 id⁺ = {id, phone, address, user_id, facility_id}\\ 128 128 \\ 129 ** ClubCard**\\129 **!ClubCard**\\ 130 130 Суперклуч: id\\ 131 131 id⁺ = {id, user_id, club_program, points}\\ 132 132 \\ 133 ** PaymentMethod**\\133 **!PaymentMethod**\\ 134 134 Суперклуч: id\\ 135 135 id⁺ = {id, method_name}\\ … … 139 139 id⁺ = {id, client_id, payment_method_id, payment_date, amount, status}\\ 140 140 \\ 141 ** ClientOrder**\\141 **!ClientOrder**\\ 142 142 Суперклуч: id\\ 143 143 id⁺ = {id, client_id, delivery_company_id, payment_id, order_date, expected_arrival_date, status, total_price}\\ … … 146 146 payment_id⁺ = {payment_id, id, client_id, delivery_company_id, order_date, expected_arrival_date, status, total_price}\\ 147 147 \\ 148 ** ShoppingCart**\\148 **!ShoppingCart**\\ 149 149 Суперклуч: id\\ 150 150 id⁺ = {id, client_id}\\ 151 151 \\ 152 ** SupplyOrder**\\152 **!SupplyOrder**\\ 153 153 Суперклуч: id\\ 154 154 id⁺ = {id, distributor_id, pharmacy_id, order_date, expected_arrival_date, status}\\ 155 155 \\ 156 ** HealthProfile**\\156 **!HealthProfile**\\ 157 157 Суперклуч: id\\ 158 158 id⁺ = {id, client_id, blood_type}\\ 159 159 \\ 160 ** SensitiveClientData**\\160 **!SensitiveClientData**\\ 161 161 Суперклуч: id\\ 162 162 id⁺ = {id, client_id, pharmacist_id, embg, portrait_photo, verification_status}\\ … … 218 218 **Заклучок: Company е во BCNF.**\\ 219 219 \\ 220 **Pharmacy, Distributor, Manufacturer, DeliveryCompany**\\220 **Pharmacy, Distributor, Manufacturer, !DeliveryCompany**\\ 221 221 Овие четири релации се специјализации на Company и го користат company_id како примарен клуч. Немаат сопствени не-клучни атрибути, па единствената зависност е company_id → {}. Како што секогаш левата страна е клуч, **сите се во BCNF.**\\ 222 222 \\ … … 232 232 **Заклучок: Medicine е во BCNF.**\\ 233 233 \\ 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**\\ 238 238 Тука примарен клуч е id. Зависноста е id → {branded_medicine_id, image}. Бидејќи секој атрибут зависи од примарниот клуч, **релацијата е во BCNF.**\\ 239 239 \\ 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**\\ 247 247 Со примарен клуч id, единствената зависност е id → method_name. **Затоа релацијата е во BCNF.**\\ 248 248 \\ … … 251 251 **Заклучок: Payment е во BCNF.**\\ 252 252 \\ 253 ** ClientOrder**\\253 **!ClientOrder**\\ 254 254 Оваа релација има два кандидат клуча: 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.**\\ 255 255 \\ 256 ** ShoppingCart**\\256 **!ShoppingCart**\\ 257 257 Примарен клуч е id. Единствената зависност е id → {client_id}. Бидејќи левата страна е клуч, **релацијата е во BCNF.**\\ 258 258 \\ 259 ** SupplyOrder**\\259 **!SupplyOrder**\\ 260 260 Примарен клуч е id. Сите останати атрибути (distributor_id, pharmacy_id, order_date, expected_arrival_date, status) зависат од овој клуч. \\ 261 **Заклучок: SupplyOrder е во BCNF.**\\262 \\ 263 ** HealthProfile**\\261 **Заклучок: !SupplyOrder е во BCNF.**\\ 262 \\ 263 **!HealthProfile**\\ 264 264 Со примарен клуч id, останатите атрибути (client_id, blood_type) зависат исклучиво од клучот. \\ 265 **Заклучок: HealthProfile е во BCNF.**\\266 \\ 267 ** SensitiveClientData**\\265 **Заклучок: !HealthProfile е во BCNF.**\\ 266 \\ 267 **!SensitiveClientData**\\ 268 268 Примарен клуч е id. Сите останати атрибути (client_id, pharmacist_id, embg, portrait_photo, verification_status) зависат од него. \\ 269 269 **Затоа релацијата е во BCNF.**\\ … … 300 300 Оваа релација ги поврзува здравствените профили со лекови што предизвикуваат алергиски реакции, и содржи дополнителни атрибути {date_diagnosed, description, severity}. Примарен клуч е {health_profile_id, medicine_id}. Функционалната зависност е {health_profile_id, medicine_id} → {date_diagnosed, description, severity}. Покривачот на составниот клуч ги содржи сите атрибути. **Затоа AllergicReaction_HealthProfile_Medicine е во BCNF.**\\ 301 301 \\ 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.**\\ 304 304 305 305 == Проверка на нормализација по промени поради Безбедност (Spring Security)