Changes between Version 6 and Version 7 of Normalization


Ignore:
Timestamp:
08/03/24 22:34:52 (8 weeks ago)
Author:
216049
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Normalization

    v6 v7  
     1Поради комплексноста на моделот на базата, речиси е невозможно да се стават сите податоци во една табела, па затоа проблемот на нормализација ќе го поделам на повеќе делови.
     2Логична поделба на табелите е според улогите во системот: Возач, Кондуктер и Патник. Поради тоа што нема смисла целата апликација без корисниците (возач. кондуктер и патник) овие колони ќе бидат изоставени од споените табели со цел да се намали комплексноста
     3
     4Возачите имаат директна интеракција со табелата instanca_na_linija, а потоа има смисла да се соединат со табелите: avtobus, linija, postojka_na_linija, postojka, mesto и на тој начин да се добие табела која ќе ја наречеме: „Инстанци на линии со нивните постојки“
     5
     6Кондуктерите имаат директна интеракција со табелата kontrola, а порао има смисла да се соединат со табелите: kazna, kazna_za_registriran, kazna_za_neregistriran, patnik во нова табела која ќе ја наречеме: „Контроли на инстнаци на линии со казни“
     7
     8Патниците имаат директна интеракција со табелите: vozenje, bilet, kazna_za_registriran, а потоа има смисла да се спојуваат со табелите: vozenje, tip_bilet, instanca_na_linija, avtobus, linija, postojka_na_linija, postojka, mesto, во нова табела која ќе ја наречеме: „Реализирани возења со инстанци на линии“
     9
     10== 1. Инстанци на линии со нивните постојки
     11
     12||= inl_id=||= inl_datum_start=||= inl_datum_end=||= a_registracija=||= a_seriski_broj=||= a_broj_sedista=||= li_id=||= li_ime=||= li_pravec=||= pnl_id=||= pnl_reden_broj=||= p_id=||= p_ime=||= m_id=||= m_grad=||= m_opstina=||= m_ulica =||
     13||1|| 16-10-2024 12:00:00 || 16-10-2024 13:00:00 || SK1234AA || SN-1234 || 30 || 1 || Line 1 || Sever kon Jug || 1 || 1 || 1 || Jugodrvo ||1 || Skopje || Centar || ulica 1||
     14||1|| 16-10-2024 12:00:00 || 16-10-2024 13:00:00 || SK1234AA || SN-1234 || 30 || 1 || Line 1 || Sever kon Jug || 2 || 2 || 2 || Rekord || 2 || Skopje || Centar || ulica 2||
     15||1|| 16-10-2024 12:00:00 || 16-10-2024 13:00:00 || SK1234AA || SN-1234 || 30 || 1 || Line 1 || Sever kon Jug || 3 || 3 || 3 || Deksion || 3 || Skopje || Gjorce || ulica 3||
     16||2|| 16-10-2024 11:00:00 || 16-10-2024 13:00:00 || SK1234BB || SN-12345 || 30 || 2 || Line 2 || Istok kon Zapad || 4 || 1 || 4 || Dracevo || 4 || Skopje || Dracevo || ulica 11||
     17||2|| 16-10-2024 11:00:00 || 16-10-2024 13:00:00 || SK1234BB || SN-12345 || 30 || 2 || Line 2 || Istok kon Zapad || 5 || 2 || 5 || City Mall || 5 || Skopje || Karposh || ulica 22||
     18||2|| 16-10-2024 11:00:00 || 16-10-2024 13:00:00 || SK1234BB || SN-12345 || 30 || 2 || Line 2 || Istok kon Zapad || 6 || 3 || 3 || Deksion || 1 || Skopje || Gjorce || ulica 3||
     19
    120R = {
    2 k_id, k_ime, k_adresa, k_telefon, k_email, k_embg, k_lozinka, k_is_admin,
    3 v_datum_na_vrabotuvanje, v_datum_prekin_vrabotuvanje,
    4 inl_id, inl_datum_start, inl_datum_end,
    5 a_registracija, a_seriski_broj, a_broj_sedista,
    6 li_id, li_ime, li_pravec,
    7 pnl_id, pnl_reden_broj,
    8 p_id, p_ime,
    9 m_id, m_grad, m_opstina, m_ulica,
    10 vozenje_id, vozenje_start, vozenje_end, vozenje_status,
    11 kontola_id, kontrola_datum,
    12 kz_id, kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument,
    13 kzn_telefon, kzn_ime, kzn_adresa,
    14 tb_id, tb_trajnost, tb_ime, tb_cena,
    15 b_id, b_datum_na_kupuvnje, b_status
     21k_id (vozac_k_id)
     22inl_id, inl_datum_start, inl_datum_end, a_registracija, a_seriski_broj, a_broj_sedista, li_id, li_ime, li_pravec, pnl_id, pnl_reden_broj, p_id, p_ime, m_id, m_grad, m_opstina, m_ulica
    1623}
    1724
    18 k_id → k_ime, k_adresa, k_telefon, k_email, k_embg, k_lozinka, k_is_admin
     25inl_id → inl_datum_start, inl_datum_end, a_registracija, li_id, k_id
     26a_registracija → a_seriski_broj, a_broj_sedista
     27li_id → li_ime, li_pravec
     28pnl_id → pnl_reden_broj, li_id, p_id
     29p_id → p_ime, m_id
     30m_id → m_grad, m_opshtina, m_ulica
    1931
    20 v_id → k_id, v_datum_na_vrabotuvanje, v_datum_prekin_vrabotuvanje
     32лево:
     33pnl_id, inl_id
    2134
    22 vz_id → k_id
     35лево и десно:
     36m_id, p_id, li_id, a_registracija
    2337
    24 kd_id → k_id
     38десно:
     39inl_datum_start, inl_datum_end, a_seriski_broj, a_broj_sedista,  li_ime, li_pravec, pnl_reden_broj, p_ime, m_grad, m_opshtina, m_ulica
    2540
    26 pt_id → k_id
     41{pnl_id, inl_id}+ = {
     42inl_datum_start, inl_datum_end, a_registracija, a_seriski_broj, a_broj_sedista, li_id, li_ime, li_pravec, pnl_reden_broj, p_id, p_ime, m_id, m_grad, m_opstina, m_ulica
     43}
    2744
    28 inl_id →  inl_datum_start, inl_datum_end, vz_id, a_registracija, li_id
     45{pnl_id, inl_id} e единствен кандидат клуч и е составен од два атрибута па сега треба да се проверат парцијални зависности. Задоволува прва нормална форма, но не и втора поради парцијални зависности.
    2946
    30 a_registracija → a_seriski_broj, a_broj_sedista
    3147
     48pnl_id, inl_id → li_id, li_ime, li_pravec
     49R1 = {pnl_id, inl_id, li_id, li_ime, li_pravec} – е во втора нормлана форма
     50
     51pnl_id, inl_id → li_id
     52li_id →  li_ime, li_pravec
     53
     54R1_1 = {pnl_id, inl_id, li_id} – е во BCNF
     55R1_2 = {li_id, li_ime, li_pravec} – е во BCNF
     56
     57pnl_id → pnl_reden_broj, li_id, li_pravec, li_ime, p_id, p_ime, m_id, m_grad, m_opstina, m_ulica
     58R2 = {pnl_id, pnl_reden_broj, li_id, li_pravec, li_ime p_id, p_ime, m_id, m_grad, m_opstina, m_ulica} e во втора нормална форма
     59
     60pnl_id → pnl_reden_broj, li_id, p_id
     61p_id → p_ime, p_pravec
     62m_id → m_grad, m_ulica, m_opstina
    3263li_id → li_ime, li_pravec
    3364
    34 pnl_id → pnl_reden_broj, li_id, p_id
     65R2_1 = {pnl_id, pnl_reden_broj, li_id, p_id} е во BCNF
     66R2_2 = {p_id, p_ime, p_pravec} е во BCNF
     67R2_3 = {m_id, m_grad, m_ulica, m_opstina} е во BCNF
     68R2_4 = { li_id, li_pravec, li_ime} е во BCNF
    3569
    36 p_id → p_ime, m_id
     70inl_id →  inl_datum_start, inl_datum_end, a_registracija, k_id, a_seriski_broj, a_broj_sedista,  li_id, li_pravec, li_ime
     71R3 = {inl_id, inl_datum_start, inl_datum_end, a_registracija, k_id, a_seriski_broj, a_broj_sedista,  li_id, li_pravec, li_ime} е во втора нормална форма
    3772
    38 m_id →  m_grad, m_opstina, m_ulica
     73inl_id → inl_datum_start, inl_datum_end, a_registracija, li_id
     74a_registracija → a_seriski_broj, a_broj_sedishta
     75li_id → li_ime, li_pravec
    3976
    40 vozenje_id → vozenje_start, vozenje_end, vozenje_status, pt_id, pnl_id, inl_id
    41 
    42 kontrola_id →  kontrola_datum, kd_id, inl_id
    43 
    44 kz_id →  kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kd_id, kontrola_id
    45 
    46 kzr_id → kz_id, pt_id
    47 
    48 kzn_id → kzn_telefon, kzn_ime, kzn_adresa
    49 
    50 tb_id → tb_trajnost, tb_ime, tb_cena
    51 
    52 b_id → b_datum_na_kupuvnje, b_status, pt_id, tb_id
     77R3_1 = {inl_id, inl_datum_start, inl_datum_end, a_registracija, li_id} е во BCNF
     78R3_2 = {a_registracija, a_seriski_broj, a_broj_sedishta} е во BCNF
     79R3_3 = {li_id, li_ime, li_pravec} е во BCNF
    5380
    5481
    55 Levo:
     82== 2.  Контроли на инстнаци на линии со казни
    5683
    57 vozenje_id,
    58 b_id
    59 kzr_id
    60 kzn_id
     84R = {
     85kontrola_id, kontrola_datum, inl_id, kondukter_k_id, v_plata, v_datum_na_vrab, v_datum_prekin,
     86kondukter_k_ime, kondukter_k_adresa, kondukter_k_telefon, kondukter_k_email, kondukter_k_embg, kondukter_k_is_admin, kondukter_k_lozinka,
     87kz_id, kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kontrola_id,
     88patnik_k_id, patnik_k_ime, patnik_k_adresa, patnik_k_telefon, patnik_k_email, patnik_k_embg, patnik_k_is_admin, patnik_k_lozinka,
     89kzn_telefon, kzn_ime, kzn_adresa
     90}
    6191
    62 Levo I desno:
     92kontrola_id → kontrola_datum, inl_id, kondukter_k_id
     93kondukter_k_id → v_plata, v_datum_na_vrab, v_datum_prekin, kondukter_k_ime, kondukter_k_adresa, kondukter_k_telefon, kondukter_k_email, kondukter_k_embg, kondukter_k_is_admin, kondukter_k_lozinka
    6394
    64 k_id,
    65 inl_id,
    66 a_registracija,
    67 li_id,
    68 pnl_id,
    69 p_id,
    70 m_id,
    71 kontrola_id,
    72 tb_id,
    73 vz_id,
    74 kd_id,
    75 pt_id,
     95kz_id → kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kontrola_id, patnik_k_id, kzn_telefon, kzn_ime, kzn_adresa
     96
     97patnik_k_id → patnik_k_ime, patnik_k_adresa, patnik_k_telefon, patnik_k_email, patnik_k_embg, patnik_k_is_admin, patnik_k_lozinka
     98
     99лево:
    76100kz_id
    77101
     102лево и десно:
     103patnik_k_id, kondukter_k_id, kontrola_k_id
    78104
    79 Desno:
     105десно:
     106v_plata, v_datum_na_vrab, v_datum_prekin, kondukter_k_ime, kondukter_k_adresa, kondukter_k_telefon, kondukter_k_email, kondukter_k_embg, kondukter_k_is_admin, kondukter_k_lozinka,  patnik_k_ime, patnik_k_adresa, patnik_k_telefon, patnik_k_email, patnik_k_embg, patnik_k_is_admin, patnik_k_lozinka, kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kzn_telefon, kzn_ime, kzn_adresa,  kontrola_datum, inl_id
    80107
    81 k_ime, k_adresa, k_telefon, k_email, k_embg, k_lozinka, k_is_admin, v_datum_na_vrabotuvanje, v_datum_prekin_vrabotuvanje, inl_datum_start, inl_datum_end, a_seriski_broj, a_broj_sedista, li_ime, li_pravec pnl_reden_broj, p_ime, m_grad, m_opstina, m_ulica, vozenje_start, vozenje_end, vozenje_status, kontrola_datum, kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kzn_telefon, kzn_ime, kzn_adresa, tb_trajnost, tb_ime, tb_cena, b_datum_na_kupuvnje, b_status
     108kz_id е едниствен кандидат клуч и примарен клуч.
     109
     110{kz_id}+ = {v_plata, v_datum_na_vrab, v_datum_prekin, kondukter_k_ime, kondukter_k_adresa, kondukter_k_telefon, kondukter_k_email, kondukter_k_embg, kondukter_k_is_admin, kondukter_k_lozinka,  patnik_k_ime, patnik_k_adresa, patnik_k_telefon, patnik_k_email, patnik_k_embg, patnik_k_is_admin, patnik_k_lozinka, kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kzn_telefon, kzn_ime, kzn_adresa,  kontrola_datum, inl_id, patnik_k_id, kondukter_k_id, kontrola_k_id}
     111
     112Клучот на релацијата се состои од еден атрибут што значи дека парцијална зависност е невозможна, од каде следи дека втора нормална форма е задоволена.
     113
     114Постојат транзитивни зависности:
     115
     116kondukter_k_id → v_plata, v_datum_na_vrab, v_datum_prekin, kondukter_k_ime, kondukter_k_adresa, kondukter_k_telefon, kondukter_k_email, kondukter_k_embg, kondukter_k_is_admin, kondukter_k_lozinka
     117
     118patnik_k_id →  patnik_k_ime, patnik_k_adresa, patnik_k_telefon, patnik_k_email, patnik_k_embg, patnik_k_is_admin, patnik_k_lozinka
     119
     120kontrola_id → kontrola_id, kondukter_k_id, inl_id
     121
     122R1 = {kondukter_k_id, v_plata, v_datum_na_vrab, v_datum_prekin, kondukter_k_ime, kondukter_k_adresa, kondukter_k_telefon, kondukter_k_email, kondukter_k_embg, kondukter_k_is_admin, kondukter_k_lozinka } задоволува BCNF
     123
     124R2 = {patnik_k_id,  patnik_k_ime, patnik_k_adresa, patnik_k_telefon, patnik_k_email, patnik_k_embg, patnik_k_is_admin, patnik_k_lozinka} задоволува BCNF
     125R3 = {kontrola_id, kontrola_id, kondukter_k_id, inl_id}
     126R4 = {kz_id, kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kontrola_id, patnik_k_id, kzn_telefon, kzn_ime, kzn_adresa} задоволува BCNF
     127
     128== 3.  Реализирани возења со инстанци на линии
     129
     130R = {
     131vozenje_id, vozenje_start, vozenje_end, vozenje_status, patnik_k_id, kacuva_pnl_id, inl_id, b_id,
     132b_datum_kupuvanje, b_status, tb_id, tb_trajnost, tb_ime
     133}
     134
     135vozenje_id →  vozenje_start, vozenje_end, vozenje_status, patnik_k_id, kacuva_pnl_id, inl_id, b_id
     136
     137b_id → b_datum_kupuvanje, b_status, tb_id, tb_trajnost, tb_ime
     138
     139tb_id →  tb_trajnost, tb_ime
     140
     141лево:
     142vozenje_id
     143
     144лево и десно:
     145b_id, tb_id
     146
     147десно:
     148tb_trajnost, tb_ime, b_datum_kupuvanje, b_status,  vozenje_start, vozenje_end, vozenje_status, patnik_k_id, kacuva_pnl_id, inl_id
     149
     150Едниствен кандидат клуч е vozenje_id, составен е од еден атрибут така што нема парцијални зависности во оваа релација.
     151
     152{vozenje_id}+ = {vozenje_start, vozenje_end, vozenje_status, patnik_k_id, kacuva_pnl_id, inl_id, b_id,
     153b_datum_kupuvanje, b_status, tb_id, tb_trajnost, tb_ime} – задоволува втора нормална форма.
     154
     155Не е задоволена трета нормална форма поради транзитивни зависности.
     156
     157b_id → b_status, b_datum_kupuvanje, tb_id
     158tb_id → tb_ime, tb_trajnost
     159
     160R1 = {b_id, b_status, b_datum_kupuvanje, tb_id} BCNF
     161R2 = {tb_id, tb_ime, tb_trajnost} BCNF
     162R3 = {vozenje_start, vozenje_end, vozenje_status, patnik_k_id, kacuva_pnl_id, inl_id, b_id} BCNF
     163