Поради комплексноста на моделот на базата, речиси е невозможно да се стават сите податоци во една табела, па затоа проблемот на нормализација ќе го поделам на повеќе делови. Логична поделба на табелите е според улогите во системот: Возач, Кондуктер и Патник. Поради тоа што нема смисла целата апликација без корисниците (возач. кондуктер и патник) овие колони ќе бидат изоставени од споените табели со цел да се намали комплексноста
Возачите имаат директна интеракција со табелата instanca_na_linija, а потоа има смисла да се соединат со табелите: avtobus, linija, postojka_na_linija, postojka, mesto и на тој начин да се добие табела која ќе ја наречеме: „Инстанци на линии со нивните постојки“
Кондуктерите имаат директна интеракција со табелата kontrola, а порао има смисла да се соединат со табелите: kazna, kazna_za_registriran, kazna_za_neregistriran, patnik во нова табела која ќе ја наречеме: „Контроли на инстнаци на линии со казни“
Патниците имаат директна интеракција со табелите: vozenje, bilet, kazna_za_registriran, а потоа има смисла да се спојуваат со табелите: vozenje, tip_bilet, instanca_na_linija, avtobus, linija, postojka_na_linija, postojka, mesto, во нова табела која ќе ја наречеме: „Реализирани возења со инстанци на линии“
1. Инстанци на линии со нивните постојки
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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
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 |
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 |
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 |
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 |
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 |
R = { vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab, 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, p_longitude, p_latitude }
inl_id → inl_datum_start, inl_datum_end, a_registracija, li_id, vozac_k_id, a_broj_sedishta, a_seriski_broj, li_ime, li_pravec, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab
a_registracija → a_seriski_broj, a_broj_sedista
li_id → li_ime, li_pravec
pnl_id → pnl_reden_broj, li_id, li_ime, li_pravec, p_id, p_ime, p_longitude, p_latitude
p_id → p_ime, p_longitude, p_latitude
vozac_k_id → vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab
лево:
pnl_id, inl_id
лево и десно:
p_id, li_id, a_registracija, vozac_k_id
десно:
inl_datum_start, inl_datum_end, a_seriski_broj, a_broj_sedista, li_ime, li_pravec, pnl_reden_broj, p_ime, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab, p_longitude, p_latitude
{pnl_id, inl_id}+ = { inl_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, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab, p_longitude, p_latitude }
{pnl_id, inl_id} e единствен кандидат клуч и е составен од два атрибута па сега треба да се проверат парцијални зависности. Задоволува прва нормална форма, но не и втора поради парцијални зависности.
pnl_id, inl_id → li_id, li_ime, li_pravec
R1 = {pnl_id, inl_id, li_id} – е во втора нормлана форма
pnl_id, inl_id → li_id
li_id → li_ime, li_pravec
R1_1 = {pnl_id, inl_id, li_id} – е во BCNF
R1_2 = {li_id, li_ime, li_pravec} – е во BCNF
pnl_id → pnl_reden_broj, li_id, p_id
R2 = {pnl_id, pnl_reden_broj, li_id, p_id} e во втора нормална форма
pnl_id → pnl_reden_broj, li_id, p_id
p_id → p_ime, p_pravec, p_longitude, p_latitude
li_id → li_ime, li_pravec
R2_1 = {pnl_id, pnl_reden_broj, li_id, p_id} е во BCNF
R2_2 = {p_id, p_ime, p_pravec} е во BCNF
R2_3 = {m_id, m_grad, m_ulica, m_opstina} е во BCNF
R2_4 = { li_id, li_pravec, li_ime} е во BCNF
inl_id → inl_datum_start, inl_datum_end, a_registracija, vozac_k_id, li_id
R3 = {inl_id, inl_datum_start, inl_datum_end, a_registracija, k_id, li_id} е во втора нормална форма
inl_id → inl_datum_start, inl_datum_end, a_registracija, li_id
a_registracija → a_seriski_broj, a_broj_sedishta
li_id → li_ime, li_pravec
R3_1 = {inl_id, inl_datum_start, inl_datum_end, a_registracija, li_id} е во BCNF
R3_2 = {a_registracija, a_seriski_broj, a_broj_sedishta} е во BCNF
R3_3 = {li_id, li_ime, li_pravec} е во BCNF
2. Контроли на инстнаци на линии со казни
R = { kontrola_id, kontrola_datum, inl_id, inl_datum_start, inl_datum_end, a_registracija, li_id, li_pravec, li_ime, a_seriski_broj, a_broj_sedishta, pnl_id, pnl_reden_broj, p_id, p_ime, p_longitude, p_latitude, kondukter_k_id, kondukter_v_plata, kondukter_v_datum_na_vrab, kondukter_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, kz_id, kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kontrola_id, 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, kzn_telefon, kzn_ime, kzn_adresa, vozac_k_id, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab }
kontrola_id → kontrola_datum, inl_id inl_datum_start, inl_datum_end, a_registracija, A-seriski_broj, a_broj_sedishta, vozac_k_id, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab, li_id, li_ime, li_pravec, kondukter_k_id, kondukter_k_id, kondukter_v_plata, kondukter_v_datum_na_vrab, kondukter_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,
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
vozac_k_id → vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab
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
kz_id → kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kontrola_id, kontrola_datum, 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, kzn_telefon, kzn_ime, kzn_adresa, kontrola_datum, inl_id inl_datum_start, inl_datum_end, a_registracija, A-seriski_broj, a_broj_sedishta, vozac_k_id, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab, li_id, li_ime, li_pravec, kondukter_k_id, kondukter_k_id, kondukter_v_plata, kondukter_v_datum_na_vrab, kondukter_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,
inl_id → inl_datum_start, inl_datum_end, a_registracija, a_seriski_broj, a_broj_sedishta, li_id, li_ime, li_pravec, vozac_k_id, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab
a_registracija → a_seriski_broj, a_broj_sedishta
li_id → li_ime, li_pravec
pnl_id → pnl_reden_broj, li_id, li_ime, li_pravec, p_id, p_ime, p_longitude, p_latitude
p_id → p_ime, p_longitude, p_latitude
лево:
kz_id, pnl_id
лево и десно:
patnik_k_id, kondukter_k_id, kontrola_k_id, inl_id
десно:
kontrola_datum, inl_datum_start, inl_datum_end, a_registracija, li_pravec, li_ime, a_seriski_broj, a_broj_sedishta, pnl_reden_broj, p_ime, p_longitude, p_latitude, kondukter_v_plata, kondukter_v_datum_na_vrab, kondukter_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, kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, patnik_k_ime, patnik_k_adresa, patnik_k_telefon, patnik_k_email, patnik_k_embg, patnik_k_is_admin, patnik_k_lozinka, kzn_telefon, kzn_ime, kzn_adresa, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab
{kz_id, pnl_id} е едниствен кандидат клуч, ваквата релација задоволува прва нормлна форма но не и втора. Треба да се провери за парцијални зависности.
{kz_id, pnl_id}+ = {kontrola_datum, inl_datum_start, inl_datum_end, a_registracija, li_pravec, li_ime, a_seriski_broj, a_broj_sedishta, pnl_reden_broj, p_ime, p_longitude, p_latitude, kondukter_v_plata, kondukter_v_datum_na_vrab, kondukter_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, kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, patnik_k_ime, patnik_k_adresa, patnik_k_telefon, patnik_k_email, patnik_k_embg, patnik_k_is_admin, patnik_k_lozinka, kzn_telefon, kzn_ime, kzn_adresa, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab, patnik_k_id, kondukter_k_id, kontrola_k_id, inl_id}
Парцијални зависности:
kz_id → kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kontrola_id, kontrola_datum, 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, kzn_telefon, kzn_ime, kzn_adresa, kontrola_datum, inl_id inl_datum_start, inl_datum_end, a_registracija, A-seriski_broj, a_broj_sedishta, vozac_k_id, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab, li_id, li_ime, li_pravec, kondukter_k_id, kondukter_k_id, kondukter_v_plata, kondukter_v_datum_na_vrab, kondukter_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
pnl_id → pnl_reden_broj, li_id, li_ime, li_pravec, p_id, p_ime, p_longitude, p_latitude
R1 = {kz_id, kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kontrola_id, kontrola_datum, 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, kzn_telefon, kzn_ime, kzn_adresa, kontrola_datum, inl_id inl_datum_start, inl_datum_end, a_registracija, A-seriski_broj, a_broj_sedishta, vozac_k_id, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab, li_id, li_ime, li_pravec, kondukter_k_id, kondukter_k_id, kondukter_v_plata, kondukter_v_datum_na_vrab, kondukter_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} – е во втора нормална форма
Сега треба да се профери за транзитивни зависности.
kz_id → kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kontrola_id, kondukter_k_id, patnik_k_id, kzn_telefon, kzn_ime, kzn_adresa
R1_1 = {kz_id, kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kontrola_id, kondukter_k_id, patnik_k_id, kzn_telefon, kzn_ime, kzn_adresa} – е во во BCNF
kontrila_id → kontrola_datum, kondukter_k_id, inl_id
R1_2 = {kontrila_id → kontrola_datum, kondukter_k_id, inl_id} - е во BCNF
kondukter_k_id → kondukter_v_plata, kondukter_v_datum_na_vrab, kondukter_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
R1_3 = {kondukter_k_id → kondukter_v_plata, kondukter_v_datum_na_vrab, kondukter_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
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
R1_4 = {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
inl_id → inl_datum_start, inl_datum_end, a_registracija, vozac_k_id, li_id
R1_5 = {inl_id → inl_datum_start, inl_datum_end, a_registracija, vozac_k_id, li_id} – е во BCNF
vozac_k_id → vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab
R1_6 = {vozac_k_id → vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab} – е во BCNF
a_registracija → a_seriski_broj, a_broj_sedishta
R1_7 → {a_registracija → a_seriski_broj, a_broj_sedishta} – е во BCNF
li_id → li_ime, li_pravec
R1_8 = {li_id → li_ime, li_pravec} – е во BCNF
R2 = {pnl_id, pnl_reden_broj, li_id, li_ime, li_pravec, p_id, p_ime, p_longitude, p_latitude} – е во втора нормална форма
Сега треба да се профери за транзитивни зависности.
pnl_id → li_id, pnl_reden_broj, p_id
R2_1 = {pnl_id → li_id, pnl_reden_broj, p_id} – е во BCNF
li_id → li_ime, li_pravec
R2_2 = {li_id , li_ime, li_pravec}- е во BCNF
p_id → p_ime, p_longitude, p_latitude
R2_3 = {p_id, p_ime, p_longitude, p_latitude}- е во BCNF
3. Реализирани возења со инстанци на линии
R = { vozenje_id, vozenje_start, vozenje_end, vozenje_status, 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 , kacuva_pnl_id, inl_id, inl_datum_start, inl_datum_end, a_registracija, li_id, li_pravec, li_ime, a_seriski_broj, a_broj_sedishta, pnl_id, pnl_reden_broj, p_id, p_ime, p_longitude, p_latitude, b_id, b_datum_kupuvanje, b_status, tb_id, tb_trajnost, tb_ime, vozac_k_id, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab }
vozenje_id → vozenje_start, vozenje_end, vozenje_status, 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, kacuva_pnl_id, pnl_reden_broj, p_id, p_ime, li_id, li_ime, li_pravec, p_longitude, p_latitude, inl_id, vozac_k_id, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab, a_registracija, a_broj_sedishta, a_seriski_broj, b_id, b_datum_kupuvanje, b_status, tb_id, tb_trajnost, tb_ime
b_id → b_datum_kupuvanje, b_status, tb_id, tb_trajnost, tb_ime
tb_id → tb_trajnost, tb_ime
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
vozac_k_id → vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab
p_id → p_ime, p_longitude, p_latitude
li_id → li_ime, li_pravec
kacuva_pnl_id → pnl_reden_broj, p_id, p_ime, p_longitude, p_latitude, li_id, li_ime, li_pravec
a_registracija → a_seriski_broj, a_broj_sedishta
лево:
vozenje_id
лево и десно:
b_id, tb_id, vozac_k_id, patnik_k_id, kacuva_pnl_id, p_id, li_id
десно:
vozenje_start, vozenje_end, vozenje_status, patnik_k_ime, patnik_k_adresa, patnik_k_telefon, patnik_k_email, patnik_k_embg, patnik_k_is_admin, patnik_k_lozinka, inl_datum_start, inl_datum_end, a_registracija, li_pravec, li_ime, a_seriski_broj, a_broj_sedishta, pnl_reden_broj, p_ime, p_longitude, p_latitude, b_datum_kupuvanje, b_status, tb_trajnost, tb_ime, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab
Едниствен кандидат клуч е vozenje_id, составен е од еден атрибут така што нема парцијални зависности во оваа релација.
{vozenje_id}+ = {vozenje_start, vozenje_end, vozenje_status, patnik_k_ime, patnik_k_adresa, patnik_k_telefon, patnik_k_email, patnik_k_embg, patnik_k_is_admin, patnik_k_lozinka, inl_datum_start, inl_datum_end, a_registracija, li_pravec, li_ime, a_seriski_broj, a_broj_sedishta, pnl_reden_broj, p_ime, p_longitude, p_latitude, b_datum_kupuvanje, b_status, tb_trajnost, tb_ime, vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab} – задоволува втора нормална форма.
Не е задоволена трета нормална форма поради транзитивни зависности.
vozenje_id → vozenje_start, vozenje_end, vozenje_status, patnik_k_id, kacuva_pnl_id, inl_id, b_id
b_id → b_datum_kupuvanje, b_status
tb_id → tb_trajnost, tb_ime
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
vozac_k_id → vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab
p_id → p_ime, p_longitude, p_latitude
li_id → li_ime, li_pravec
kacuva_pnl_id → pnl_reden_broj, p_id, li_id
a_registracija → a_seriski_broj, a_broj_sedishta
R1 = {b_id, b_status, b_datum_kupuvanje, tb_id} BCNF
R2 = {tb_id, tb_ime, tb_trajnost} BCNF
R3 = {vozenje_start, vozenje_end, vozenje_status, patnik_k_id, kacuva_pnl_id, inl_id, b_id} BCNF
R4 = {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}
R5 = {vozac_k_id → vozac_k_telefon, vozac_k_lozinka, vozac_k_adresa, vozac_k_email, vozac_k_ime, vozac_k_is_admin, vozac_k_id, vozac_plata, vozac_datum_na_vrabotuvanje, vozac_datum_prekin_vrab}
R6 = {p_id, p_ime, p_longitude, p_latitude}
R7 = {li_id, li_ime, li_pravec}
R8 = {kacuva_pnl_id, pnl_reden_broj, p_id, li_id}
R9 = {a_registracija, a_seriski_broj, a_broj_sedishta}
Дискусија:
Може да се забележи дека со разгледување на проглемот на помали логички целини се доаѓа до истите ентитети. Како мала забелешка е тоа што кога се работи за атрибутите со префикси: patnik, vozac, kondukter се работи за истите атрибути кои се поделени во дисјунктни ентитети прво на: Korisnik, потоа на: Vraboten, Patnik, и на крај: Vozac, Kondukter.
Моделот кој е искореистен за нормализација е оној од претходните фази на проектот со тоа што е изоставен ентитетот Mesto, поради тоа што во оваа фаза е забележано дека е несоодветен. На негово место додадени се атрибути за координати на ентитетот Postojka.
Како ентитет кој не постои во оригиналниот модел а се појавува при нормализацијата е ентитетот добиен во првиот подпроблем со примарен клуч {pnl_id, inl_id}. Ваков ентитет е воведен во напредниот дизајн на апликацијата поради потребите на апликацијата.