Changes between Initial Version and Version 1 of Normalization_v2


Ignore:
Timestamp:
08/19/25 11:28:26 (2 days ago)
Author:
212028
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization_v2

    v1 v1  
     1За цел имаме оптимизација на базата така што ќе се отстранат редундантни податоци, отстранат какви било аномалии при додавање, бришење или ажурирање на податоци ќе го постигнеме со помош на функционални зависности, откривање на соодветен покривач и нормализација каде што ќе целиме до BCNF нормална форма.Анализата ќе биде извршувана на претпоследната верзија(18-та верзија) од базата соодветно со последната ревизија направена од сите три члена на тимот од иницијалниот проект.Бидејќи чуваме многу податоци и тоа би резултирало во преголема почетна релација за да ја отпочнеме нормализацијата ќе биде поделена на 3 помали релации соодветно според 3-те корисници на апликацијата.Исто така изоставен е атрибутот m_grad со оглед на тоа што апликацијата се однесува само за град Скопје, па ја губи смислата исто споменатиот атрибут.Покрај тоа ентитетите Возачи, Кондуктор и Патник ќе станат преклопувачки специјализиарни поткласи за соодветните ентитети Корисник и Вработен.Од пример табелите за секоја од 3-те корисници ќе ги изоставиме колоните кои ги претставуваат атрибутите за самите корисници бидејќи многу место окупираат, а истите се подразбираат со оглед на тоа што главната намена за апликацијата е 3-та типа корисници.Трите релации во прашање се:
     2        * Реализирани линии од возачи
     3        * Реализирани контроли
     4        * Реализирани возења од патници
     5
     6= Реализирани линии од возачи =
     7
     8**R**={vozac_k_id, vozac_k_ime, vozac_k_adresa, vozac_k_email, vozac_k_telefon, vozac_k_is_admin, vozac_k_lozinka, vozac_v_plata, vozac_v_datum_vrab, vozac_v_datum_prekin_vrab, inl_id, inl_datum_pocetok, inl_datum_kraj, a_registracija, a_seriski_broj, a_broj_sedista, li_id, li_ime, li_pravec}
     9
     10
     11==== Функционални зависности ====
     12
     13**vozac_k_id** -> vozac_k_ime, vozac_k_adresa, vozac_k_email, vozac_k_telefon, vozac_k_is_admin, vozac_k_lozinka, vozac_v_plata, vozac_v_datum_vrab, vozac_v_datum_prekin_vrab
     14
     15**inl_id** -> inl_datum_pocetok, inl_datum_kraj, vozac_k_id,  a_registracija, li_id
     16
     17**a_registracija** -> a_seriski_broj, a_broj_sedista
     18
     19**li_id** -> li_ime, li_pravec
     20
     21
     22====== Лево ======
     23
     24inl_id
     25
     26====== Лево и десно ======
     27
     28vozac_k_id, a_registracija, li_id
     29
     30====== Десно ======
     31
     32vozac_k_ime, vozac_k_adresa, vozac_k_email, vozac_k_telefon, vozac_k_is_admin, vozac_k_lozinka, vozac_v_plata, vozac_v_datum_vrab, vozac_v_datum_prekin_vrab, inl_datum_pocetok, inl_datum_kraj, a_seriski_broj, a_broj_sedista, li_ime, li_pravec
     33
     34==== Покривач ====
     35
     36**{inl_id}+**={inl_datum_pocetok, inl_datum_kraj, vozac_k_id ,  vozac_k_ime, vozac_k_adresa, vozac_k_email, vozac_k_telefon, vozac_k_is_admin, vozac_k_lozinka, vozac_v_plata, vozac_v_datum_vrab, vozac_v_datum_prekin_vrab , a_registracija, a_seriski_broj, a_broj_sedista, li_id, li_ime, li_pravec}
     37
     38==== Кандидат клуч ====
     39inl_id
     40
     411NF е задоволена бидејќи немаме мултивредносни атрибути
     42
     432NF е задоволена бидејќи немаме парцијални зависности
     44
     453NF е нарушена бидејќи имаме транзитивни зависности, па така не е задоволена ни BCNF кон која целиме бидејќи потребно е да е задоволена нормализиацијата која и претходи во случајов 3NF
     46
     47
     48==== Декомпозиција ====
     49
     50**vozac_k_id** -> vozac_k_ime, vozac_k_adresa, vozac_k_email, vozac_k_telefon, vozac_k_is_admin, vozac_k_lozinka, vozac_v_plata, vozac_v_datum_vrab, vozac_v_datum_prekin_vrab
     51
     52**R1**={inl_id, inl_datum_pocetok, inl_datum_kraj, vozac_k_id, a_registracija, a_seriski_broj, a_broj_sedista, li_id, li_ime, li_pravec}
     53
     54**R2**={vozac_k_id, vozac_k_ime, vozac_k_adresa, vozac_k_email, vozac_k_telefon, vozac_k_is_admin, vozac_k_lozinka, vozac_v_plata, vozac_v_datum_vrab, vozac_v_datum_prekin_vrab} во 3NF и BCNF
     55
     56**a_registracija** -> a_seriski_broj, a_broj_sedista
     57
     58**R1_1**={inl_id, inl_datum_pocetok, inl_datum_kraj, vozac_k_id, a_registracija, li_id, li_ime, li_pravec}
     59
     60**R1_2**={ a_registracija, a_seriski_broj, a_broj_sedista} во 3NF и BCNF
     61
     62**li_id** -> li_ime, li_pravec
     63
     64**R1_1_1**={inl_id, inl_datum_pocetok, inl_datum_kraj, vozac_k_id, a_registracija, li_id} во 3NF и BCNF
     65
     66**R1_1_2**={li_id, li_ime, li_pravec} во 3NF и BCNF
     67
     68= Реализирани контроли =
     69
     70**R**={konduktor_k_id, konduktor_k_ime, konduktor_k_adresa, konduktor_k_email, konduktor_k_telefon, konduktor_k_is_admin, konduktor_k_lozinka, konduktor_v_plata, konduktor_v_datum_vrab, konduktor_v_datum_prekin_vrab, kontroli_id, kontroli_datum, inl_id, inl_datum_pocetok, inl_datum_kraj, a_registracija, a_seriski_broj, a_broj_sedista, li_id, li_ime, li_pravec, kz_id, kz_dokument, kz_datum, kz_iznos, kz_plateno, kz_datum_plateno, kzn_ime, kzn_adresa, kzn_telefon, patnik_k_id, patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka}
     71
     72
     73==== Функционални зависности ====
     74
     75**Konduktor_k_id** -> konduktor_k_ime, konduktor_k_adresa, konduktor_k_email, konduktor_k_telefon, konduktor_k_is_admin, konduktor_k_lozinka, konduktor_v_plata, konduktor_v_datum_vrab,konduktor_v_datum_prekin_vrab
     76
     77**Kontroli_id** -> kontrola_datum, Konduktor_k_id, inl_id
     78
     79**Inl_id** -> inl_datum_pocetok, inl_datum_kraj, a_registracija, li_id
     80
     81**a_registracija** -> a_seriski_broj, a_broj_sedista
     82
     83**li_id** -> li_ime, li_pravec
     84
     85**Kz_id** -> kz_dokument, kz_datum, kz_iznos, kz_plateno, kz_datum_plateno, kontrola_id, konduktor_k_id
     86
     87**kzr_kz_id** -> patnik_k_id
     88
     89**kzn_kz_id** -> kzn_ime, kzn_adresa, kzn_telefon
     90
     91**patnik_k_id** -> patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka
     92
     93
     94====== Лево ======
     95
     96kz_id
     97
     98====== Лево и десно ======
     99
     100кonduktor_k_id, kontroli_id, inl_id, a_registracija, li_id, patnik_k_id
     101
     102====== Десно ======
     103
     104konduktor_k_ime, konduktor_k_adresa, konduktor_k_email, konduktor_k_telefon, konduktor_k_is_admin, konduktor_k_lozinka, konduktor_v_plata, konduktor_v_datum_vrab, konduktor_v_datum_prekin_vrab, kontrola_datum, inl_datum_pocetok, inl_datum_kraj, a_seriski_broj, a_broj_sedista, li_ime, li_pravec, patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka, kz_dokument, kz_datum, kz_iznos, kz_plateno, kz_datum_plateno, kontrola_id, konduktor_k_id, kzn_ime, kzn_adresa, kzn_telefon
     105
     106==== Покривач ==== 
     107
     108**{Kz_id}+**={kz_dokument, kz_datum, kz_iznos, kz_plateno, kz_datum_plateno, patnik_k_id, kontrola_id, konduktor_k_id, konduktor_k_ime, konduktor_k_adresa, konduktor_k_email, konduktor_k_telefon, konduktor_k_is_admin, konduktor_k_lozinka, konduktor_v_plata, konduktor_v_datum_vrab, konduktor_v_datum_prekin_vrab, kontrola_datum, Inl_id, inl_datum_pocetok, inl_datum_kraj, a_registracija, li_id, a_seriski_broj, a_broj_sedista, li_ime, li_pravec, patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka, kz_dokument, kz_datum, kz_iznos, kz_plateno, kz_datum_plateno, kontrola_id, konduktor_k_id, kzn_ime, kzn_adresa, kzn_telefon}
     109
     110==== Кандидат клуч ====
     111
     112kz_id
     113
     1141NF е задоволена бидејќи немаме мултивредносни атрибути
     115
     1162NF е задоволена бидејќи немаме парцијални зависности
     117
     1183NF е нарушена бидејќи имаме транзитивни зависности, па така не е задоволена ни BCNF кон која целиме бидејќи потребно е да е задоволена нормализиацијата која и претходи во случајов 3NF
     119
     120
     121==== Декомпозиција ====
     122
     123**Kontroli_id** -> kontrola_datum, Konduktor_k_id, inl_id
     124
     125**R1**={konduktor_k_id, konduktor_k_ime, konduktor_k_adresa, konduktor_k_email, konduktor_k_telefon, konduktor_k_is_admin, konduktor_k_lozinka, konduktor_v_plata, konduktor_v_datum_vrab, konduktor_v_datum_prekin_vrab, kontroli_id, kz_id, kz_dokument, kz_datum, kz_iznos, kz_plateno, kz_datum_plateno, kzn_ime, kzn_adresa, kzn_telefon, patnik_k_id, patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka}
     126
     127**R2**={kontroli_id, kontrola_datum, Konduktor_k_id, inl_id, inl_datum_pocetok, inl_datum_kraj, a_registracija, a_seriski_broj, a_broj_sedista, li_id, li_ime, li_pravec}
     128
     129**Inl_id** -> inl_datum_pocetok, inl_datum_kraj, a_registracija, li_id
     130
     131**R2_1**={kontroli_id, kontrola_datum, Konduktor_k_id, inl_id}
     132
     133**R2_2**={Inl_id, inl_datum_pocetok, inl_datum_kraj, a_registracija, a_seriski_broj, a_broj_sedista, li_id, li_ime, li_pravec}
     134
     135**a_registracija** -> a_seriski_broj, a_broj_sedista
     136
     137**R2_1_1**={Inl_id, inl_datum_pocetok, inl_datum_kraj, a_registracija, li_id, li_ime, li_pravec}
     138
     139**R2_1_2**={a_registracija, a_seriski_broj, a_broj_sedista}
     140
     141**li_id** -> li_ime, li_pravec
     142
     143**R2_1_1_1**={Inl_id, inl_datum_pocetok, inl_datum_kraj, a_registracija, li_id}
     144
     145**R2_1_1_2**={li_id, li_ime, li_pravec}
     146
     147**Konduktor_k_id** -> konduktor_k_ime, konduktor_k_adresa, konduktor_k_email, konduktor_k_telefon, konduktor_k_is_admin, konduktor_k_lozinka, konduktor_v_plata, konduktor_v_datum_vrab, konduktor_v_datum_prekin_vrab
     148
     149**R1_1**={konduktor_k_id, kontroli_id, kz_id, kz_dokument, kz_datum, kz_iznos, kz_plateno, kz_datum_plateno, kzn_ime, kzn_adresa, kzn_telefon, patnik_k_id, patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka}
     150
     151**R1_2**={konduktor_k_id -> konduktor_k_ime, konduktor_k_adresa, konduktor_k_email, konduktor_k_telefon, konduktor_k_is_admin, konduktor_k_lozinka, konduktor_v_plata, konduktor_v_datum_vrab, konduktor_v_datum_prekin_vrab}
     152
     153**kzr_kz_id** -> patnik_k_id
     154
     155**R1_1_1**={konduktor_k_id, kontroli_id,kz_id, kz_dokument, kz_datum, kz_iznos, kz_plateno, kz_datum_plateno, kzn_ime, kzn_adresa, kzn_telefon}
     156
     157**R1_1_2**={kzr_kz_id, patnik_k_id, patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka}
     158
     159**patnik_k_id** -> patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka
     160
     161**R1_1_2_1**= {kzr_kz_id, patnik_k_id}
     162
     163**R1_1_2_2**={patnik_k_id, patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka}
     164
     165**kzn_kz_id** -> kzn_ime, kzn_adresa, kzn_telefon
     166
     167**R1_1_1_1**={konduktor_k_id, kontroli_id,kz_id, kz_dokument, kz_datum, kz_iznos, kz_plateno, kz_datum_plateno}
     168
     169**R1_1_1_2**={kz_id, kzn_ime, kzn_adresa, kzn_telefon}
     170
     171= Реализирани возења од патници =
     172
     173**R=**{patnik_k_id, patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka, b_id, b_status, b_datum_na_kupuvanje, b_datum_istekuvanje, tb_id, tb_ime, tb_trajnost, tb_cena, vozenje_id, vozenje_start, vozenje_end, vozenje_status, pnl_id, pnl_reden_broj, p_id, p_ime, m_id, m_opstina, m_ulica, li_id, li_ime, li_pravec}
     174
     175
     176==== Функционални зависности ====
     177
     178**Patnik_k_id** -> patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka
     179
     180**B_id** -> b_status, b_datum_na_kupuvanje, b_datum_istekuvanje, tb_id, patnik_k_id
     181
     182**Tb_id** -> tb_ime, tb_trajnost, tb_cena
     183
     184**Vozenje_id** -> vozenje_start, vozenje_end, vozenje_status, b_id, patnik_k_id, pnl_id
     185
     186**Pnl_id** -> pnl_reden_broj, li_id, p_id
     187
     188**Li_id** -> li_ime, li_pravec
     189
     190**P_id** -> p_ime, m_id
     191
     192**M_id** -> m_opstina, m_ulica
     193
     194
     195====== Лево ======
     196
     197Vozenje_id
     198
     199====== Лево и десно ======
     200
     201Patnik_k_id, b_id, pnl_id, li_id, p_id, m_id
     202
     203====== Десно ======
     204
     205patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka, b_status, b_datum_na_kupuvanje, b_datum_istekuvanje, tb_ime, tb_trajnost, tb_cena, vozenje_start, vozenje_end, vozenje_status, pnl_reden_broj, li_ime, li_pravec, p_ime, m_opstina, m_ulica
     206
     207
     208==== Покривач ====
     209
     210**{Vozenje_id}+**={patnik_k_id, patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka, b_id, b_status, b_datum_na_kupuvanje, b_datum_istekuvanje, tb_id, tb_ime, tb_trajnost, tb_cena, vozenje_id, vozenje_start, vozenje_end, vozenje_status, pnl_id, pnl_reden_broj, p_id, p_ime, m_id, m_opstina, m_ulica, li_id, li_ime, li_pravec}
     211
     212
     213==== Кандидат клуч ====
     214
     215vozenje_id
     216
     217
     2181NF е задоволена бидејќи немаме мултивредносни атрибути
     219
     2202NF е задоволена бидејќи немаме парцијални зависности
     221
     2223NF е нарушена бидејќи имаме транзитивни зависности, па така не е задоволена ни BCNF кон која целиме бидејќи потребно е да е задоволена нормализиацијата која и претходи во случајов 3NF
     223
     224
     225==== Декомпозиција ====
     226
     227**Patnik_k_id** -> patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka
     228
     229**R1**={patnik_k_id, b_id, b_status, b_datum_na_kupuvanje, b_datum_istekuvanje, tb_id, tb_ime, tb_trajnost, tb_cena, vozenje_id, vozenje_start, vozenje_end, vozenje_status, pnl_id, pnl_reden_broj, p_id, p_ime, m_id, m_opstina, m_ulica, li_id, li_ime, li_pravec}
     230
     231**R2**={patnik_k_id, patnik_k_ime, patnik_k_adresa, patnik_k_email, patnik_k_telefon, patnik_k_is_admin, patnik_k_lozinka}
     232
     233**B_id** -> b_status, b_datum_na_kupuvanje, b_datum_istekuvanje, tb_id, patnik_k_id
     234
     235**R1_1**={patnik_k_id, b_id, vozenje_id, vozenje_start, vozenje_end, vozenje_status, pnl_id, pnl_reden_broj, p_id, p_ime, m_id, m_opstina, m_ulica, li_id, li_ime, li_pravec}
     236
     237**R1_2**={b_id, b_status, b_datum_na_kupuvanje, b_datum_istekuvanje, tb_id, tb_ime, tb_trajnost, tb_cena, patnik_k_id}
     238
     239**Tb_id** -> tb_ime, tb_trajnost, tb_cena
     240
     241**R1_2_1**={b_id, b_status, b_datum_na_kupuvanje, b_datum_istekuvanje, tb_id, patnik_k_id}
     242
     243**R1_2_2**={tb_id, tb_ime, tb_trajnost, tb_cena}
     244
     245**Vozenje_id** -> vozenje_start, vozenje_end, vozenje_status, b_id, patnik_k_id, pnl_id
     246
     247**R1_1_1**={patnik_k_id, b_id, vozenje_id, vozenje_start, vozenje_end, vozenje_status, pnl_id}
     248
     249**R1_1_2**={pnl_id, pnl_reden_broj, p_id, p_ime, m_id, m_opstina, m_ulica, li_id, li_ime, li_pravec}
     250
     251**Li_id** -> li_ime, li_pravec
     252
     253**R1_1_2_1**={pnl_id, pnl_reden_broj, p_id, p_ime, m_id, m_opstina, m_ulica, li_id}
     254
     255**R1_1_2_2**={li_id, li_ime, li_pravec}
     256
     257**P_id** -> p_ime, m_id
     258
     259**R1_1_2_1_1**={pnl_id, pnl_reden_broj, p_id, li_id}
     260
     261**R1_1_2_1_2**= {p_id, p_ime, m_id, m_opstina, m_ulica}
     262
     263**M_id** -> m_opstina, m_ulica
     264
     265**R1_1_2_1_2_1**= {p_id, p_ime, m_id}
     266
     267**R1_1_2_1_2_2**={m_id, m_opstina, m_ulica}