| 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 | |
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 |
| 21 | k_id (vozac_k_id) |
| 22 | 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 |
| 48 | pnl_id, inl_id → li_id, li_ime, li_pravec |
| 49 | R1 = {pnl_id, inl_id, li_id, li_ime, li_pravec} – е во втора нормлана форма |
| 50 | |
| 51 | pnl_id, inl_id → li_id |
| 52 | li_id → li_ime, li_pravec |
| 53 | |
| 54 | R1_1 = {pnl_id, inl_id, li_id} – е во BCNF |
| 55 | R1_2 = {li_id, li_ime, li_pravec} – е во BCNF |
| 56 | |
| 57 | pnl_id → pnl_reden_broj, li_id, li_pravec, li_ime, p_id, p_ime, m_id, m_grad, m_opstina, m_ulica |
| 58 | R2 = {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 | |
| 60 | pnl_id → pnl_reden_broj, li_id, p_id |
| 61 | p_id → p_ime, p_pravec |
| 62 | m_id → m_grad, m_ulica, m_opstina |
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 |
| 77 | R3_1 = {inl_id, inl_datum_start, inl_datum_end, a_registracija, li_id} е во BCNF |
| 78 | R3_2 = {a_registracija, a_seriski_broj, a_broj_sedishta} е во BCNF |
| 79 | R3_3 = {li_id, li_ime, li_pravec} е во BCNF |
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 |
| 108 | kz_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 | |
| 116 | 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 |
| 117 | |
| 118 | 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 |
| 119 | |
| 120 | kontrola_id → kontrola_id, kondukter_k_id, inl_id |
| 121 | |
| 122 | R1 = {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 | |
| 124 | R2 = {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 |
| 125 | R3 = {kontrola_id, kontrola_id, kondukter_k_id, inl_id} |
| 126 | R4 = {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 | |
| 130 | R = { |
| 131 | vozenje_id, vozenje_start, vozenje_end, vozenje_status, patnik_k_id, kacuva_pnl_id, inl_id, b_id, |
| 132 | b_datum_kupuvanje, b_status, tb_id, tb_trajnost, tb_ime |
| 133 | } |
| 134 | |
| 135 | vozenje_id → vozenje_start, vozenje_end, vozenje_status, patnik_k_id, kacuva_pnl_id, inl_id, b_id |
| 136 | |
| 137 | b_id → b_datum_kupuvanje, b_status, tb_id, tb_trajnost, tb_ime |
| 138 | |
| 139 | tb_id → tb_trajnost, tb_ime |
| 140 | |
| 141 | лево: |
| 142 | vozenje_id |
| 143 | |
| 144 | лево и десно: |
| 145 | b_id, tb_id |
| 146 | |
| 147 | десно: |
| 148 | tb_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, |
| 153 | b_datum_kupuvanje, b_status, tb_id, tb_trajnost, tb_ime} – задоволува втора нормална форма. |
| 154 | |
| 155 | Не е задоволена трета нормална форма поради транзитивни зависности. |
| 156 | |
| 157 | b_id → b_status, b_datum_kupuvanje, tb_id |
| 158 | tb_id → tb_ime, tb_trajnost |
| 159 | |
| 160 | R1 = {b_id, b_status, b_datum_kupuvanje, tb_id} BCNF |
| 161 | R2 = {tb_id, tb_ime, tb_trajnost} BCNF |
| 162 | R3 = {vozenje_start, vozenje_end, vozenje_status, patnik_k_id, kacuva_pnl_id, inl_id, b_id} BCNF |
| 163 | |