Changes between Version 8 and Version 9 of Normalization


Ignore:
Timestamp:
09/13/25 04:46:58 (7 days ago)
Author:
222003
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v8 v9  
    88
    99
    10 **company_id** -> company_name, company_description, registration_number
    11 **medicine_id** -> medicine_name, medicine_active_ingredient
    12 **payment_method_id** -> payment_method_name
    13 **user_id** -> first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked, is_credentials_non_expired, is_enabled, is_verified
    14 **facility_id** -> company_id, facility_name, facility_code
    15 **inventory_id** -> facility_id
    16 **medicine_id_1, medicine_id_2** -> mi_type, mi_description, mi_severity
    17 **payment_id** -> user_id (улога: client), payment_method_id, payment_date, payment_amount, payment_status
    18 **prescription_id** -> user_id (улога: client), medicine_id, issued_by, issued_at, valid_to, prescription_embg
    19 **sensitiveclientdata_id** -> user_id (улога: client), user_id (улога: pharmacist), sensitive_embg, portrait_photo, verification_status
    20 **shopping_cart_id** -> user_id (улога: client)
    21 **supply_order_id** -> company_id (улога: distributor), company_id (улога: pharmacy), supply_order_date, supply_expected_arrival_date, supply_status, facility_id
    22 **branded_medicine_id** -> company_id (улога: manufacturer), branded_name, branded_price, branded_description, dosage_form, strength, origin_country
    23 **branded_medicine_image_id** -> branded_medicine_id, branded_image, is_main_image
    24 **clubcard_id** -> user_id, club_program, points
    25 **contactinformation_id** -> phone, contact_address, contact_user_id, contact_facility_id
    26 **healthprofile_id** -> user_id (улога: client), blood_type
    27 **inventory_id, branded_medicine_id** -> quantity, last_changed
    28 **client_order_id** -> user_id (улога: client), company_id (улога: delivery), payment_id, client_order_date, client_expected_arrival_date, client_order_status, total_price
    29 **client_order_id, branded_medicine_id** -> order_quantity
    30 **company_id (улога: pharmacy), branded_medicine_id** -> /
    31 **shopping_cart_id, branded_medicine_id** -> cart_quantity
    32 **supply_order_id, branded_medicine_id** -> supply_quantity
    33 **healthprofile_id, medicine_id** -> date_diagnosed, allergic_description, allergic_severity
    34 **branded_medicine_id, medicine_id** -> /
    35 **company_id (улога: distributor), branded_medicine_id** -> /
     10**company_id** -> company_name, company_description, registration_number \\
     11**medicine_id** -> medicine_name, medicine_active_ingredient \\
     12**payment_method_id** -> payment_method_name \\
     13**user_id** -> first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked, is_credentials_non_expired, is_enabled, is_verified \\
     14**facility_id** -> company_id, facility_name, facility_code \\
     15**inventory_id** -> facility_id \\
     16**medicine_id_1, medicine_id_2** -> mi_type, mi_description, mi_severity \\
     17**payment_id** -> user_id (улога: client), payment_method_id, payment_date, payment_amount, payment_status \\
     18**prescription_id** -> user_id (улога: client), medicine_id, issued_by, issued_at, valid_to, prescription_embg \\
     19**sensitiveclientdata_id** -> user_id (улога: client), user_id (улога: pharmacist), sensitive_embg, portrait_photo, verification_status \\
     20**shopping_cart_id** -> user_id (улога: client) \\
     21**supply_order_id** -> company_id (улога: distributor), company_id (улога: pharmacy), supply_order_date, supply_expected_arrival_date, supply_status, facility_id \\
     22**branded_medicine_id** -> company_id (улога: manufacturer), branded_name, branded_price, branded_description, dosage_form, strength, origin_country \\
     23**branded_medicine_image_id** -> branded_medicine_id, branded_image, is_main_image \\
     24**clubcard_id** -> user_id, club_program, points \\
     25**contactinformation_id** -> phone, contact_address, contact_user_id, contact_facility_id \\
     26**healthprofile_id** -> user_id (улога: client), blood_type \\
     27**inventory_id, branded_medicine_id** -> quantity, last_changed \\
     28**client_order_id** -> user_id (улога: client), company_id (улога: delivery), payment_id, client_order_date, client_expected_arrival_date, client_order_status, total_price \\
     29**client_order_id, branded_medicine_id** -> order_quantity \\
     30**company_id (улога: pharmacy), branded_medicine_id** -> / \\
     31**shopping_cart_id, branded_medicine_id** -> cart_quantity \\
     32**supply_order_id, branded_medicine_id** -> supply_quantity \\
     33**healthprofile_id, medicine_id** -> date_diagnosed, allergic_description, allergic_severity \\
     34**branded_medicine_id, medicine_id** -> / \\
     35**company_id (улога: distributor), branded_medicine_id** -> / \\
    3636
    3737**R** = { company_id, company_name, company_description, registration_number, medicine_id, medicine_name, medicine_active_ingredient, payment_method_id, payment_method_name, user_id, first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked, is_credentials_non_expired, is_enabled, facility_id, facility_name, facility_code, inventory_id, branded_medicine_id, branded_name, branded_price, branded_description, dosage_form, strength, origin_country, branded_medicine_image_id, branded_image, is_main_image, clubcard_id, club_program, points, contactinformation_id, phone, contact_address, contact_user_id, contact_facility_id, healthprofile_id, blood_type, quantity, last_changed, client_order_id, payment_id, client_order_date, client_expected_arrival_date, client_order_status, total_price, order_quantity, shopping_cart_id, cart_quantity, supply_order_id, supply_order_date, supply_expected_arrival_date, supply_status, supply_quantity, payment_date, payment_amount, payment_status, prescription_id, issued_by, issued_at, valid_to, prescription_embg, sensitiveclientdata_id, sensitive_embg, portrait_photo, verification_status, medicine_id_1, medicine_id_2, mi_type, mi_description, mi_severity, date_diagnosed, allergic_description, allergic_severity, company_role_notes…, user_role_notes… }.
    3838
    39 **Лево**
    40 branded_medicine_image_id
    41 client_order_id
    42 clubcard_id
    43 company_id
    44 contactinformation_id
    45 facility_id
    46 healthprofile_id
    47 inventory_id
    48 medicine_id
    49 medicine_id_1
    50 medicine_id_2
    51 payment_id
    52 payment_method_id
    53 prescription_id
    54 sensitiveclientdata_id
    55 shopping_cart_id
    56 supply_order_id
    57 branded_medicine_id
    58 user_id
    59 
    60 **Лево и десно**
    61 company_id
    62 medicine_id
    63 payment_method_id
    64 user_id
    65 facility_id
    66 inventory_id
    67 branded_medicine_id
    68 payment_id
    69 
    70 **Десно**
     39**Лево** \\
     40branded_medicine_image_id \\
     41client_order_id \\
     42clubcard_id \\
     43company_id \\
     44contactinformation_id \\
     45facility_id \\
     46healthprofile_id \\
     47inventory_id \\
     48medicine_id \\
     49medicine_id_1 \\
     50medicine_id_2 \\
     51payment_id \\
     52payment_method_id \\
     53prescription_id \\
     54sensitiveclientdata_id \\
     55shopping_cart_id \\
     56supply_order_id \\
     57branded_medicine_id \\
     58user_id \\
     59
     60**Лево и десно** \\
     61company_id \\
     62medicine_id \\
     63payment_method_id \\
     64user_id \\
     65facility_id \\
     66inventory_id \\
     67branded_medicine_id \\
     68payment_id \\
     69
     70**Десно** \\
    7171company_name, company_description, registration_number, medicine_name, medicine_active_ingredient, payment_method_name, first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked, is_credentials_non_expired, is_enabled, is_verified, facility_name, facility_code, branded_name, branded_price, branded_description, dosage_form, strength, origin_country, branded_image, is_main_image, club_program, points, phone, contact_address, contact_user_id, contact_facility_id, blood_type, quantity, last_changed, client_order_date, client_expected_arrival_date, client_order_status, total_price, order_quantity, cart_quantity, supply_order_date, supply_expected_arrival_date, supply_status, supply_quantity, payment_date, payment_amount, payment_status, issued_by, issued_at, valid_to, prescription_embg, sensitive_embg, portrait_photo, verification_status, mi_type, mi_description, mi_severity, date_diagnosed, allergic_description, allergic_severity.
    7272
    7373== Покривачи за атрибутите од „Лево“ ==
    7474
    75 **branded_medicine_image_id+** = { branded_medicine_image_id, branded_medicine_id, branded_image, is_main_image, company_id, branded_name, branded_price, branded_description, dosage_form, strength, origin_country } - **Не ги содржи сите атрибути.**
    76 **client_order_id+** = { client_order_id, user_id, company_id, payment_id, client_order_date, client_expected_arrival_date, client_order_status, total_price, payment_method_id, payment_amount, payment_date, payment_status, payment_method_name } - **Не ги содржи сите атрибути.**
    77 **clubcard_id+** = { clubcard_id, user_id, club_program, points, first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked, is_credentials_non_expired, is_enabled, is_verified } - **Не ги содржи сите атрибути.**
    78 **company_id+** = { company_id, company_name, company_description, registration_number } - **Не ги содржи сите атрибути.**
    79 **contactinformation_id+** = { contactinformation_id, phone, contact_address, facility_id, facility_name, facility_code, company_id, company_name, company_description, registration_number, user_id, first_name, last_name, username } - **Не ги содржи сите атрибути.**
    80 **facility_id+** = { facility_id, company_id, facility_name, facility_code, company_name, company_description, registration_number } - **Не ги содржи сите атрибути.**
    81 **healthprofile_id+** = { healthprofile_id, user_id, blood_type, user_id, first_name, last_name, username } - **Не ги содржи сите атрибути.**
    82 **inventory_id+** = { inventory_id, facility_id, facility_name, facility_code, company_id, company_name, company_description, registration_number } - **Не ги содржи сите атрибути.**
    83 **medicine_id+** = { medicine_id, medicine_name, medicine_active_ingredient } - **Не ги содржи сите атрибути.**
    84 **medicine_id_1+** = { medicine_id_1 } - **Не ги содржи сите атрибути.**
    85 **medicine_id_2+** = { medicine_id_2 } - **Не ги содржи сите атрибути.**
    86 **payment_id+** = { payment_id, user_id (улога: client), payment_method_id, payment_date, payment_amount, payment_status, payment_method_name } - **Не ги содржи сите атрибути.**
    87 **payment_method_id+** = { payment_method_id, payment_method_name } - **Не ги содржи сите атрибути.**
    88 **prescription_id+** = { prescription_id, user_id, medicine_id, issued_by, issued_at, valid_to, prescription_embg, medicine_name, medicine_active_ingredient } - **Не ги содржи сите атрибути.**
    89 **sensitiveclientdata_id+** = { sensitiveclientdata_id, sensitive_embg, portrait_photo, verification_status, user_id, first_name, last_name } - **Не ги содржи сите атрибути.**
    90 **shopping_cart_id+** = { shopping_cart_id, user_id, first_name, last_name } - **Не ги содржи сите атрибути**
    91 **supply_order_id+** = { supply_order_id, supply_order_date, supply_expected_arrival_date, supply_status, facility_id, facility_name, company_id, company_name } - **Не ги содржи сите атрибути.**
    92 **branded_medicine_id+** = { branded_medicine_id, company_id, branded_name, branded_price, branded_description, dosage_form, strength, origin_country } - **Не ги содржи сите атрибути.**
    93 **user_id+** = { user_id, first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked, is_credentials_non_expired, is_enabled, is_verified } - **Не ги содржи сите атрибути.**
     75**branded_medicine_image_id+** = { branded_medicine_image_id, branded_medicine_id, branded_image, is_main_image, company_id, branded_name, branded_price, branded_description, dosage_form, strength, origin_country } - **Не ги содржи сите атрибути.** \\
     76**client_order_id+** = { client_order_id, user_id, company_id, payment_id, client_order_date, client_expected_arrival_date, client_order_status, total_price, payment_method_id, payment_amount, payment_date, payment_status, payment_method_name } - **Не ги содржи сите атрибути.** \\
     77**clubcard_id+** = { clubcard_id, user_id, club_program, points, first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked, is_credentials_non_expired, is_enabled, is_verified } - **Не ги содржи сите атрибути.** \\
     78**company_id+** = { company_id, company_name, company_description, registration_number } - **Не ги содржи сите атрибути.** \\
     79**contactinformation_id+** = { contactinformation_id, phone, contact_address, facility_id, facility_name, facility_code, company_id, company_name, company_description, registration_number, user_id, first_name, last_name, username } - **Не ги содржи сите атрибути.** \\
     80**facility_id+** = { facility_id, company_id, facility_name, facility_code, company_name, company_description, registration_number } - **Не ги содржи сите атрибути.** \\
     81**healthprofile_id+** = { healthprofile_id, user_id, blood_type, user_id, first_name, last_name, username } - **Не ги содржи сите атрибути.** \\
     82**inventory_id+** = { inventory_id, facility_id, facility_name, facility_code, company_id, company_name, company_description, registration_number } - **Не ги содржи сите атрибути.** \\
     83**medicine_id+** = { medicine_id, medicine_name, medicine_active_ingredient } - **Не ги содржи сите атрибути.** \\
     84**medicine_id_1+** = { medicine_id_1 } - **Не ги содржи сите атрибути.** \\
     85**medicine_id_2+** = { medicine_id_2 } - **Не ги содржи сите атрибути.** \\
     86**payment_id+** = { payment_id, user_id (улога: client), payment_method_id, payment_date, payment_amount, payment_status, payment_method_name } - **Не ги содржи сите атрибути.** \\
     87**payment_method_id+** = { payment_method_id, payment_method_name } - **Не ги содржи сите атрибути.** \\
     88**prescription_id+** = { prescription_id, user_id, medicine_id, issued_by, issued_at, valid_to, prescription_embg, medicine_name, medicine_active_ingredient } - **Не ги содржи сите атрибути.** \\
     89**sensitiveclientdata_id+** = { sensitiveclientdata_id, sensitive_embg, portrait_photo, verification_status, user_id, first_name, last_name } - **Не ги содржи сите атрибути.** \\
     90**shopping_cart_id+** = { shopping_cart_id, user_id, first_name, last_name } - **Не ги содржи сите атрибути** \\
     91**supply_order_id+** = { supply_order_id, supply_order_date, supply_expected_arrival_date, supply_status, facility_id, facility_name, company_id, company_name } - **Не ги содржи сите атрибути.** \\
     92**branded_medicine_id+** = { branded_medicine_id, company_id, branded_name, branded_price, branded_description, dosage_form, strength, origin_country } - **Не ги содржи сите атрибути.** \\
     93**user_id+** = { user_id, first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked, is_credentials_non_expired, is_enabled, is_verified } - **Не ги содржи сите атрибути.** \\
    9494
    9595
     
    127127== Декомпозиција во 2НФ ==
    128128За да ги отстраниме парцијалните зависиности ги делиме атрибутите во релации каде не-клучните атрибути целосно зависат од нивниот клуч:
    129 company_id → company_name, company_description, registration_number
    130 medicine_id → medicine_name, medicine_active_ingredient
    131 payment_method_id → payment_method_name
    132 user_id → first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked, is_credentials_non_expired, is_enabled, is_verified (Client)
    133 facility_id → company_id, facility_name, facility_code
    134 inventory_id → facility_id
    135 branded_medicine_id → company_id (улога: manufacturer), branded_name, branded_price, branded_description, dosage_form, strength, origin_country
    136 branded_medicine_image_id → branded_medicine_id, branded_image, is_main_image
    137 clubcard_id → user_id, club_program, points
    138 contactinformation_id → phone, contact_address, contact_user_id, contact_facility_id
    139 healthprofile_id → user_id (улога: client), blood_type
    140 inventory_id, branded_medicine_id → quantity, last_changed
    141 client_order_id → user_id (улога: client), company_id (улога: delivery), payment_id, client_order_date, client_expected_arrival_date, client_order_status, total_price
    142 client_order_id, branded_medicine_id → order_quantity
    143 shopping_cart_id → user_id (улога: client)
     129company_id → company_name, company_description, registration_number \\
     130medicine_id → medicine_name, medicine_active_ingredient \\
     131payment_method_id → payment_method_name \\
     132user_id → first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked, is_credentials_non_expired, is_enabled, is_verified (Client) \\
     133facility_id → company_id, facility_name, facility_code \\
     134inventory_id → facility_id \\
     135branded_medicine_id → company_id (улога: manufacturer), branded_name, branded_price, branded_description, dosage_form, strength, origin_country \\
     136branded_medicine_image_id → branded_medicine_id, branded_image, is_main_image \\
     137clubcard_id → user_id, club_program, points \\
     138contactinformation_id → phone, contact_address, contact_user_id, contact_facility_id \\
     139healthprofile_id → user_id (улога: client), blood_type \\
     140inventory_id, branded_medicine_id → quantity, last_changed \\
     141client_order_id → user_id (улога: client), company_id (улога: delivery), payment_id, client_order_date, client_expected_arrival_date, client_order_status, total_price 
     142client_order_id, branded_medicine_id → order_quantity \\
     143shopping_cart_id → user_id (улога: client) \\
    144144shopping_cart_id, branded_medicine_id → cart_quantity
    145 supply_order_id → company_id (улога: distributor), company_id (улога: pharmacy), supply_order_date, supply_expected_arrival_date, supply_status, facility_id
    146 supply_order_id, branded_medicine_id → supply_quantity
    147 payment_id → user_id (улога: client), payment_method_id, payment_date, payment_amount, payment_status
    148 prescription_id → user_id (улога: client), medicine_id, issued_by, issued_at, valid_to, prescription_embg
    149 sensitiveclientdata_id → user_id (улога: client), user_id (улога: pharmacist), sensitive_embg, portrait_photo, verification_status
    150 medicine_id_1, medicine_id_2 → mi_type, mi_description, mi_severity
    151 healthprofile_id, medicine_id → date_diagnosed, allergic_description, allergic_severity
    152 branded_medicine_id, medicine_id → (врска бранд->лек)
    153 company_id (улога: distributor), branded_medicine_id → (junction)
    154 company_id (улога: pharmacy), branded_medicine_id → (junction)
     145supply_order_id → company_id (улога: distributor), company_id (улога: pharmacy), supply_order_date, supply_expected_arrival_date, supply_status, facility_id \\
     146supply_order_id, branded_medicine_id → supply_quantity \\
     147payment_id → user_id (улога: client), payment_method_id, payment_date, payment_amount, payment_status \\
     148prescription_id → user_id (улога: client), medicine_id, issued_by, issued_at, valid_to, prescription_embg \\
     149sensitiveclientdata_id → user_id (улога: client), user_id (улога: pharmacist), sensitive_embg, portrait_photo, verification_status \\
     150medicine_id_1, medicine_id_2 → mi_type, mi_description, mi_severity \\
     151healthprofile_id, medicine_id → date_diagnosed, allergic_description, allergic_severity \\
     152branded_medicine_id, medicine_id → / \\
     153company_id (улога: distributor), branded_medicine_id → / \\
     154company_id (улога: pharmacy), branded_medicine_id → / \\
    155155
    156156Со ваква декомпозиција ги извлекуваме следните релации:
    157 R1 { company_id, company_name, company_description, registration_number } - **во BCNF**
    158 R2 { medicine_id, medicine_name, medicine_active_ingredient } - **во BCNF**
    159 R3 { payment_method_id, payment_method_name } - **во BCNF**
    160 R4 { user_id, first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked, is_credentials_non_expired, is_enabled, is_verified } - **во BCNF**
    161 R5 { facility_id, company_id, facility_name, facility_code } - **во BCNF**
    162 R6 { inventory_id, facility_id } - **во BCNF**
    163 R7 { branded_medicine_id, company_id (улога: manufacturer), branded_name, branded_price, branded_description, dosage_form, strength, origin_country } - **во BCNF**
    164 R8 { branded_medicine_image_id, branded_medicine_id, branded_image, is_main_image } - **во BCNF**
    165 R9 { clubcard_id, user_id, club_program, points } - **во BCNF**
     157R1 { company_id, company_name, company_description, registration_number } - **во BCNF** \\
     158R2 { medicine_id, medicine_name, medicine_active_ingredient } - **во BCNF** \\
     159R3 { payment_method_id, payment_method_name } - **во BCNF** \\
     160R4 { user_id, first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked, is_credentials_non_expired, is_enabled, is_verified } - **во BCNF** \\
     161R5 { facility_id, company_id, facility_name, facility_code } - **во BCNF** \\
     162R6 { inventory_id, facility_id } - **во BCNF** \\
     163R7 { branded_medicine_id, company_id (улога: manufacturer), branded_name, branded_price, branded_description, dosage_form, strength, origin_country } - **во BCNF** \\
     164R8 { branded_medicine_image_id, branded_medicine_id, branded_image, is_main_image } - **во BCNF** \\
     165R9 { clubcard_id, user_id, club_program, points } - **во BCNF** \\
    166166R10 { contactinformation_id, phone, contact_address, contact_user_id, contact_facility_id } - **во BCNF**
    167 R11 { healthprofile_id, user_id (улога: client), blood_type } - **во BCNF**
    168 R12 { inventory_id, branded_medicine_id, quantity, last_changed } - **во BCNF**
    169 R13 { client_order_id, user_id (улога: client), company_id (улога: delivery), payment_id, client_order_date, client_expected_arrival_date, client_order_status, total_price } - **во BCNF**
    170 R14 { client_order_id, branded_medicine_id, order_quantity } - **во BCNF**
    171 R15 { shopping_cart_id, user_id (улога: client) } - **во BCNF**
    172 R16 { shopping_cart_id, branded_medicine_id, cart_quantity } - **во BCNF**
    173 R17 { supply_order_id, company_id (улога: distributor), company_id (улога: pharmacy), supply_order_date, supply_expected_arrival_date, supply_status, facility_id } - **во BCNF**
    174 R18 { supply_order_id, branded_medicine_id, supply_quantity } - **во BCNF**
    175 R19 { payment_id, user_id (улога: client), payment_method_id, payment_date, payment_amount, payment_status } - **во BCNF**
     167R11 { healthprofile_id, user_id (улога: client), blood_type } - **во BCNF** \\
     168R12 { inventory_id, branded_medicine_id, quantity, last_changed } - **во BCNF** \\
     169R13 { client_order_id, user_id (улога: client), company_id (улога: delivery), payment_id, client_order_date, client_expected_arrival_date, client_order_status, total_price } - **во BCNF** \\
     170R14 { client_order_id, branded_medicine_id, order_quantity } - **во BCNF** \\
     171R15 { shopping_cart_id, user_id (улога: client) } - **во BCNF** \\
     172R16 { shopping_cart_id, branded_medicine_id, cart_quantity } - **во BCNF** \\
     173R17 { supply_order_id, company_id (улога: distributor), company_id (улога: pharmacy), supply_order_date, supply_expected_arrival_date, supply_status, facility_id } - **во BCNF** \\
     174R18 { supply_order_id, branded_medicine_id, supply_quantity } - **во BCNF** \\
     175R19 { payment_id, user_id (улога: client), payment_method_id, payment_date, payment_amount, payment_status } - **во BCNF** \\
    176176R20 { prescription_id, user_id (улога: client), medicine_id, issued_by, issued_at, valid_to, prescription_embg } - **во BCNF**
    177 R21 { sensitiveclientdata_id, user_id (улога: client), user_id (улога: pharmacist), sensitive_embg, portrait_photo, verification_status } - **во BCNF**
    178 R22 { medicine_id_1, medicine_id_2, mi_type, mi_description, mi_severity } - **во BCNF**
    179 R23 { healthprofile_id, medicine_id, date_diagnosed, allergic_description, allergic_severity } - **во BCNF**
    180 R24 { branded_medicine_id, medicine_id } (Branded_Medicine_InstanceOf_Medicine) - **во BCNF**
    181 R25 { company_id (улога: distributor), branded_medicine_id } (Distributor_BrandedMedicine) - **во BCNF**
    182 R26 { company_id (улога: pharmacy), branded_medicine_id } (Pharmacy_Catalog) - **во BCNF**
     177R21 { sensitiveclientdata_id, user_id (улога: client), user_id (улога: pharmacist), sensitive_embg, portrait_photo, verification_status } - **во BCNF** \\
     178R22 { medicine_id_1, medicine_id_2, mi_type, mi_description, mi_severity } - **во BCNF** \\
     179R23 { healthprofile_id, medicine_id, date_diagnosed, allergic_description, allergic_severity } - **во BCNF** \\
     180R24 { branded_medicine_id, medicine_id } (Branded_Medicine_InstanceOf_Medicine) - **во BCNF** \\
     181R25 { company_id (улога: distributor), branded_medicine_id } (Distributor_BrandedMedicine) - **во BCNF** \\
     182R26 { company_id (улога: pharmacy), branded_medicine_id } (Pharmacy_Catalog) - **во BCNF** \\
    183183
    184184
     
    186186Сега ги проверуваме R1..R26 за транзитивни зависиности. Ако некаде постои транзитивност, ќе го декомпонираме дополнително.
    187187Проверка на најважните случаи:
    188 R7 (branded_medicine_id -> company_id (улога: manufacturer), …) — company_id е FK кон Company; Company е одвоена во R1, па нема транзитивна зависност во R7. R7 е во BCNF.
    189 R5 (facility_id -> company_id, …) — company_… се во R1; нема транзитивност во R5.
    190 R19 (payment_id -> payment_method_id, …) и R3 (payment_method_id -> payment_method_name) — се одделени: посебна релација за PaymentMethod (R3), а Payment држи само FK payment_method_id. Нема транзитивност во R19.
    191 R12 (inventory_id, branded_medicine_id -> quantity, …) и R6 (inventory_id -> facility_id) — R6 и R12 се одделни; нема транзитивност во R12.
     188R7 (branded_medicine_id -> company_id (улога: manufacturer), …) — company_id е FK кон Company; Company е одвоена во R1, па нема транзитивна зависност во R7. R7 е во BCNF. \\
     189R5 (facility_id -> company_id, …) — company_… се во R1; нема транзитивност во R5. \\
     190R19 (payment_id -> payment_method_id, …) и R3 (payment_method_id -> payment_method_name) — се одделени: посебна релација за PaymentMethod (R3), а Payment држи само FK payment_method_id. Нема транзитивност во R19. \\
     191R12 (inventory_id, branded_medicine_id -> quantity, …) и R6 (inventory_id -> facility_id) — R6 и R12 се одделни; нема транзитивност во R12. \\
    192192По проверка на секоја релација R1..R26 утврдуваме дека ниедна од нив не содржи внатрешни транзитивни зависиности (сите транзитивни детерминанти се извлечени во посебни релации: Company, PaymentMethod, Users, Facility, BrandedMedicine итн.). Следствено, R1..R26 се во 3НФ и BCNF.
    193193
    194194== Финални релации во BCNF ==
    195 **Company** { company_id, company_name, company_description, registration_number } - **BCNF**
    196 **Medicine** { medicine_id, medicine_name, medicine_active_ingredient } - **BCNF**
    197 **PaymentMethod** { payment_method_id, payment_method_name } - **BCNF**
    198 **Users** { user_id, first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked, is_credentials_non_expired, is_enabled, is_verified } - **BCNF**
    199 **Facility** { facility_id, company_id, facility_name, facility_code } - **BCNF**
    200 **Inventory** { inventory_id, facility_id } - **BCNF**
    201 **BrandedMedicine** { branded_medicine_id, company_id (улога: manufacturer), branded_name, branded_price, branded_description, dosage_form, strength, origin_country } - **BCNF**
    202 **BrandedMedicineImage** { branded_medicine_image_id, branded_medicine_id, branded_image, is_main_image } - **BCNF**
    203 **ClubCard** { clubcard_id, user_id, club_program, points } - **BCNF**
    204 **ContactInformation** { contactinformation_id, phone, contact_address, contact_user_id, contact_facility_id } - **BCNF**
    205 **HealthProfile** { healthprofile_id, user_id (улога: client), blood_type } - **BCNF**
    206 **Inventory_BrandedMedicine** { inventory_id, branded_medicine_id, quantity, last_changed } - **BCNF**
    207 **ShoppingCart** { shopping_cart_id, user_id (улога: client) } - **BCNF**
    208 **ShoppingCart_BrandedMedicine** { shopping_cart_id, branded_medicine_id, cart_quantity } - **BCNF**
    209 **ClientOrder** { client_order_id, user_id (улога: client), company_id (улога: delivery), payment_id, client_order_date, client_expected_arrival_date, client_order_status, total_price } - **BCNF**
     195**Company** { company_id, company_name, company_description, registration_number } - **BCNF**\\
     196**Medicine** { medicine_id, medicine_name, medicine_active_ingredient } - **BCNF** \\
     197**!PaymentMethod** { payment_method_id, payment_method_name } - **BCNF** \\
     198**Users** { user_id, first_name, last_name, username, hashed_password, e_mail, gender, date_created, date_of_birth, is_account_non_expired, is_account_non_locked,  is_credentials_non_expired, is_enabled, is_verified } - **BCNF** \\
     199**Facility** { facility_id, company_id, facility_name, facility_code } - **BCNF** \\
     200**Inventory** { inventory_id, facility_id } - **BCNF** \\
     201**!BrandedMedicine** { branded_medicine_id, company_id (улога: manufacturer), branded_name, branded_price, branded_description, dosage_form, strength, origin_country } - **BCNF** \\
     202**!BrandedMedicineImage** { branded_medicine_image_id, branded_medicine_id, branded_image, is_main_image } - **BCNF** \\
     203**!ClubCard** { clubcard_id, user_id, club_program, points } - **BCNF** \\
     204**!ContactInformation** { contactinformation_id, phone, contact_address, contact_user_id, contact_facility_id } - **BCNF** \\
     205**!HealthProfile** { healthprofile_id, user_id (улога: client), blood_type } - **BCNF**\\
     206**Inventory_BrandedMedicine** { inventory_id, branded_medicine_id, quantity, last_changed } - **BCNF** \\
     207**!ShoppingCart** { shopping_cart_id, user_id (улога: client) } - **BCNF** \\
     208**ShoppingCart_BrandedMedicine** { shopping_cart_id, branded_medicine_id, cart_quantity } - **BCNF** \\
     209**!ClientOrder** { client_order_id, user_id (улога: client), company_id (улога: delivery), payment_id, client_order_date, client_expected_arrival_date, client_order_status, total_price } - **BCNF** \\
    210210**ClientOrder_BrandedMedicine** { client_order_id, branded_medicine_id, order_quantity } - **BCNF**
    211 **Payment** { payment_id, user_id (улога: client), payment_method_id, payment_date, payment_amount, payment_status } - **BCNF**
    212 **Prescription** { prescription_id, user_id (улога: client), medicine_id, issued_by, issued_at, valid_to, prescription_embg } - **BCNF**
    213 **SensitiveClientData** { sensitiveclientdata_id, user_id (улога: client), user_id (улога: pharmacist), sensitive_embg, portrait_photo, verification_status } - **BCNF**
    214 **SupplyOrder** { supply_order_id, company_id (улога: distributor), company_id (улога: pharmacy), supply_order_date, supply_expected_arrival_date, supply_status, facility_id } - **BCNF**
    215 **SupplyOrder_BrandedMedicine** { supply_order_id, branded_medicine_id, supply_quantity } - **BCNF**
    216 **Pharmacy_Catalog** { company_id (улога: pharmacy), branded_medicine_id } - **BCNF**
    217 **Distributor_BrandedMedicine** { company_id (улога: distributor), branded_medicine_id } - **BCNF**
    218 **Branded_Medicine_InstanceOf_Medicine** { branded_medicine_id, medicine_id } - **BCNF**
    219 **MedicineInteraction** { medicine_id_1, medicine_id_2, mi_type, mi_description, mi_severity } - **BCNF**
    220 **AllergicReaction_HealthProfile_Medicine** { healthprofile_id, medicine_id, date_diagnosed, allergic_description, allergic_severity } - **BCNF**
    221 
    222 Дополнителни релациите Company и Client ги поделив на подтипови кои ги рефернецираат id-то на нивните родители. Оваа поделба ја правиме за подобра контекстуализација, и овие ентитети (освен Client) не соддржат дополнителни аттрибути. Сите во BCNF:
    223 
    224 **Admins** { user_id }
    225 **Pharmacist** { user_id }
    226 **Client** { user_id, is_verified }
    227 **DeliveryCompany** { company_id }
    228 **Distributor** { company_id }
    229 **Manufacturer** { company_id }
    230 **Pharmacy** { company_id }
     211**Payment** { payment_id, user_id (улога: client), payment_method_id, payment_date, payment_amount, payment_status } - **BCNF** \\
     212**Prescription** { prescription_id, user_id (улога: client), medicine_id, issued_by, issued_at, valid_to, prescription_embg } - **BCNF** \\
     213**!SensitiveClientData** { sensitiveclientdata_id, user_id (улога: client), user_id (улога: pharmacist), sensitive_embg, portrait_photo, verification_status } - **BCNF** \\
     214**!SupplyOrder** { supply_order_id, company_id (улога: distributor), company_id (улога: pharmacy), supply_order_date, supply_expected_arrival_date, supply_status, facility_id } - **BCNF** \\
     215**SupplyOrder_BrandedMedicine** { supply_order_id, branded_medicine_id, supply_quantity } - **BCNF** \\
     216**Pharmacy_Catalog** { company_id (улога: pharmacy), branded_medicine_id } - **BCNF** \\
     217**Distributor_BrandedMedicine** { company_id (улога: distributor), branded_medicine_id } - **BCNF** \\
     218**Branded_Medicine_InstanceOf_Medicine** { branded_medicine_id, medicine_id } - **BCNF** \\
     219**!MedicineInteraction** { medicine_id_1, medicine_id_2, mi_type, mi_description, mi_severity } - **BCNF** \\
     220**AllergicReaction_HealthProfile_Medicine** { healthprofile_id, medicine_id, date_diagnosed, allergic_description, allergic_severity } - **BCNF** \\
     221
     222Дополнителни релациите Company и Client ги поделив на подтипови кои ги рефернецираат id-то на нивните родители. Оваа поделба ја правиме за подобра контекстуализација, и овие ентитети (освен Client, на кој му е додаден атрибутот is_verified, кој е одземен на самиот user, затпа што има повеќе логика да постои само кај клиент) не соддржат дополнителни аттрибути. Сите во BCNF:
     223
     224**Admins** { user_id } \\
     225**Pharmacist** { user_id } \\
     226**Client** { user_id, is_verified } \\
     227**!DeliveryCompany** { company_id } \\
     228**Distributor** { company_id } \\
     229**Manufacturer** { company_id } \\
     230**Pharmacy** { company_id } \\