Поради комплексноста на моделот на базата, речиси е невозможно да се стават сите податоци во една табела, па затоа проблемот на нормализација ќе го поделам на повеќе делови. Логична поделба на табелите е според улогите во системот: Возач, Кондуктер и Патник. Поради тоа што нема смисла целата апликација без корисниците (возач. кондуктер и патник) овие колони ќе бидат изоставени од споените табели со цел да се намали комплексноста Возачите имаат директна интеракција со табелата 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 = { k_id (vozac_k_id) 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 } inl_id → inl_datum_start, inl_datum_end, a_registracija, li_id, k_id a_registracija → a_seriski_broj, a_broj_sedista li_id → li_ime, li_pravec pnl_id → pnl_reden_broj, li_id, p_id p_id → p_ime, m_id m_id → m_grad, m_opshtina, m_ulica лево: pnl_id, inl_id лево и десно: m_id, p_id, li_id, a_registracija десно: inl_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 {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, m_id, m_grad, m_opstina, m_ulica } {pnl_id, inl_id} e единствен кандидат клуч и е составен од два атрибута па сега треба да се проверат парцијални зависности. Задоволува прва нормална форма, но не и втора поради парцијални зависности. pnl_id, inl_id → li_id, li_ime, li_pravec R1 = {pnl_id, inl_id, li_id, li_ime, li_pravec} – е во втора нормлана форма 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, li_pravec, li_ime, p_id, p_ime, m_id, m_grad, m_opstina, m_ulica 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 во втора нормална форма pnl_id → pnl_reden_broj, li_id, p_id p_id → p_ime, p_pravec m_id → m_grad, m_ulica, m_opstina 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, k_id, a_seriski_broj, a_broj_sedista, li_id, li_pravec, li_ime R3 = {inl_id, inl_datum_start, inl_datum_end, a_registracija, k_id, a_seriski_broj, a_broj_sedista, li_id, li_pravec, li_ime} е во втора нормална форма 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, 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, 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 } kontrola_id → kontrola_datum, inl_id, kondukter_k_id 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 kz_id → kz_iznos, kz_plateno, kz_datum, kz_datum_plateno, kz_dokument, kontrola_id, patnik_k_id, kzn_telefon, kzn_ime, kzn_adresa 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 лево и десно: patnik_k_id, kondukter_k_id, kontrola_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, 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 kz_id е едниствен кандидат клуч и примарен клуч. {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} Клучот на релацијата се состои од еден атрибут што значи дека парцијална зависност е невозможна, од каде следи дека втора нормална форма е задоволена. Постојат транзитивни зависности: 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 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 kontrola_id → kontrola_id, kondukter_k_id, inl_id 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 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 R3 = {kontrola_id, kontrola_id, kondukter_k_id, inl_id} 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 == 3. Реализирани возења со инстанци на линии R = { vozenje_id, vozenje_start, vozenje_end, vozenje_status, patnik_k_id, kacuva_pnl_id, inl_id, b_id, b_datum_kupuvanje, b_status, tb_id, tb_trajnost, tb_ime } 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 tb_id → tb_trajnost, tb_ime лево: vozenje_id лево и десно: b_id, tb_id десно: tb_trajnost, tb_ime, b_datum_kupuvanje, b_status, vozenje_start, vozenje_end, vozenje_status, patnik_k_id, kacuva_pnl_id, inl_id Едниствен кандидат клуч е vozenje_id, составен е од еден атрибут така што нема парцијални зависности во оваа релација. {vozenje_id}+ = {vozenje_start, vozenje_end, vozenje_status, patnik_k_id, kacuva_pnl_id, inl_id, b_id, b_datum_kupuvanje, b_status, tb_id, tb_trajnost, tb_ime} – задоволува втора нормална форма. Не е задоволена трета нормална форма поради транзитивни зависности. b_id → b_status, b_datum_kupuvanje, tb_id tb_id → tb_ime, tb_trajnost 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