Version 6 (modified by 7 months ago) ( diff ) | ,
---|
Нормализација и подобрувања на дизајнот на базата
Поделба на доменот според типот на евиденција
Бидејќи нашиот модел го користи апликација којашто служи за различни евиденции од областа на реализација на избори, практично е невозможно да извршиме нормализација користејќи една табела во којашто ќе бидат сместени сите атрибути. Затоа решивме да ги прикажеме различните извештаи кои произлегуваат од различните сценарија на примена на моделот и како такви, парцијално да ги нормалзираме и така добиените ентитети да ги поврземе во целина.
1. Евиденција за избирачки список
ЕМБГ (embg) | Име (g_ime) | Презиме (g_prezime) | Адреса идентификатор (a_id) | Улица (a_ulica) | Куќен број (a_broj) | Број влез (a_vlez) | Број стан (a_stan) | Број на документ за идентицикација (d_broj) | Датум на важност од (d_vazi_od) | Датум на важност до (d_vazi_do) | Издавач на документот (d_izdaden_od) | Гласачко место број(im_id) | Гласачко место (im_mesto) | Адреса идентификатор (a_id) | Улица (a_ulica_gm) | Куќен број (a_broj_gm) | Број влез (a_vlez_gm) | Број стан (a_stan_gm) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0101002000000 | Петар | Петрески | 123 | Коле Неделковски | 13 | 1 | 2 | A111111 | 2020-01-01 | 2025-01-01 | МВР Скопје | 1234 | ОУ Кочо Рацин | 768 | Македонија | 1 | ||
0101002000000 | Петра | Петреска | 123 | Коле Неделковски | 13 | 1 | 2 | A222222 | 2020-01-01 | 2025-01-01 | МВР Скопје | 1234 | ОУ Кочо Рацин | 768 | Македонија | 1 |
Функциски зависности
R = {embg, g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, d_broj, d_vazi_od, d_vazi_do, d_izdaden_od, im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
Множество функциски зависности:
embg →g_ime, g_prezime, a_id, d_broj
a_id → a_ulica, a_broj, a_vlez, a_stan, im_id
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
d_broj → d_vazi_od, d_vazi_do, d_izdaden_od
im_id → im_mesto, a_id_gm
само лево:
embg,
лево и десно:
a_id, d_broj, im_id, a_id, gm
само десно:
g_ime, g_prezime, a_ulica, a_broj, a_vlez, a_stan, d_vazi_od, d_vazi_do, d_izdaden_od, im_mesto, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
Со оглед на тоа што атрибутот embg е едиствен атрибут кој што се наоѓа само на левата страна од функционалните зависности, ја добиваме следната канонична покривка:
{embg}+ = {g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, im_id, im_mesto, d_broj, d_vazi_od, d_vazi_do, d_izdaden_od, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} = R
Според ова, {embg} е единствен кандидат клуч и примарен клуч.
Според дефиницијата за 1НФ која гласи:
„Сите атрибути треба да бидат атомски (елементарни) Релација во 1НФ не може да има атрибут чија вредност е
- множество од вредности;
- терки вредности (вгнездени релации)“
Во вака дефинираната релација нема повеќекратни зависности и атрибути и нема вгнездени релации, па оттука следува дека задоволува прва нормална форма.
Според дефиницијата на Silberschatz, Korth и Sudarshan: „R е во 2НФ, акко секој атрибут A од R задоволува еден од следните два критериуми:
- е дел од некој кандидат клуч
- не е парцијално зависен од некој кандидат клуч“
Клучот на релацијата е составен од само еден атрибут, па парцијална зависност не е возможна, затоа, задоволува втора нормална форма.
Декомпозиција до највисока можна нормална форма
Следно, целта е да ја доведеме релацијата R до највисоката можна нормална форма. Имајки ја во предвид дефиницијата на Codd за трета нормална форма која гласи: „Ниту еден непримарен атрибут од R не е транзитивно зависен од примарниот клуч“, лесно можеме да забележиме транзитивна зависност како на пример оваа:
d_broj → d_vazi_od, d_vazi_do, d_izdaden_od
Оттука, заклучуваме дека релацијата не е во трета нормална форма и започнуваме со декомпозиција.
Декомпозиција:
R1 {d_broj, d_vazi_od, d_vazi_do, d_izdaden_od} – задоволува BCNF
R2 {embg, g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, im_id, im_mesto, d_broj, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
Кај оваа релација ги добиваме следните функциски зависности:
embg →g_ime, g_prezime, a_id, d_broj
a_id → a_ulica, a_broj, a_vlez, a_stan, im_id
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
im_id → im_mesto, a_id_gm
Тука, повторно може да се забележи транзитивна зависности како оваа:
im_id → im_mesto, a_id_gm
{im_id}+ = {im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
И со тоа заклучуваме дека оваа релација не задоволува трета нормална форма и затоа правиме декомпозиција на R2_1 и R2_2.
Оттука за R2_1 добиваме:
R2_1 {im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} – задоволува втора нормална форма
im_id → im_mesto, a_id_gm
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
R2_1 не е во трета нормална форма поради појава на транзитивна зависност и тоа:
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
{a_id_gm}+ = {a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
Доколку направиме декомпозиција на R2_1 на R2_1_1 и R2_1_2, лесно можеме да забележиме дека и двете релации задоволуваат BCNF според тоа што:
R која што е 1НФ е во БКНФ ако за секоја нетривијална функциска зависност (за секоја детерминанта) X → Y,
X е супер клуч (множество атрибути што на единствен начин определува други атрибути, а при тоа не треба да е минимално такво множество).
R2_1_1 = {a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} – задоволува BCNF
R2_1_2 = {im_id, im_mesto, a_id_gm} – задоволува BCNF
Следно продолжуваме со релацијата R2_2 за која знаеме дека задоволува втора нормална форма.
R2_2 {embg, g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, d_broj, im_id} – задоволува втора нормална форма
Функциските зависности кои се појавуваат тука се:
embg →g_ime, g_prezime, a_id, d_broj
a_id → a_ulica, a_broj, a_vlez, a_stan, im_id
Според тоа, оваа релација не е во трета нормална форма поради појавата на транзитивната зависност:
a_id → a_ulica, a_broj, a_vlez, a_stan, im_id
{a_id}+ = {a_id, a_ulica, a_broj, a_vlez, a_stan, im_id}
Правиме декомпозиција на R2_2_1 и R2_2_2 за кои може да забележиме дека задоволуваат BCNF според претходно споментата дефиниција.
R2_2_1 = {a_id, a_ulica, a_broj, a_vlez, a_stan} - задоволува BCNF
R2_2_2 = {embg, g_ime, g_prezime, a_id} - задоволува BCNF
Конечно, првичната реализација се декомпонира на следните релации:
R2_2_2 = {embg, g_ime, g_prezime, a_id}
R2_2_1 = {a_id, a_ulica, a_broj, a_vlez, a_stan}
R2_1_2 = {im_id, im_mesto, a_id*} *со оглед на тоа што адресите на избирачкото место и на граѓани се од ист домен, ја користиме истата релација на двете места
R1 {d_broj, d_vazi_od, d_vazi_do, d_izdaden_od}
2. Евиденција за поднесени приговори
ЕМБГ (embg) | Име (g_ime) | Презиме (g_prezime) | Адреса идентификатор | Улица (a_ulica) | Куќен број (a_broj) | Број влез (a_vlez) | Број стан (a_stan)s | Број на документ за идентицикација (d_broj) | Датум на важност од (d_vazi_od) | Датум на важност до (d_vazi_do) | Издавач на документот (d_izdaden_od) | Гласачко место број(im_id) | Гласачко место (im_mesto) | Адреса идентификатор | Улица (a_ulica) | Куќен број (a_broj) | Број влез (a_vlez) | Број стан (a_stan) | Број на приговорот (pr_id) | Тип проговор | Реализација на избори (ri_id) | Опис на приговорот (pr_opis) | Реализација на избори име (ri_ime) | Реализација на избори име (ri_datum) | Избори (i_id) | Избори име (i_ime) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0101002000000 | Петар | Петрески | 123 | Коле Неделковски | 13 | 1 | 2 | A111111 | 2020-01-01 | 2025-01-01 | МВР Скопје | 1234 | ОУ Кочо Рацин | 768 | Македонија | 1 | 1 | Граѓански | 1 | Прекршен јавен ред и мир поради хххх | Претседателски избори 2020 | 1 | Претседателски избори | |||
0101002000000 | Петра | Петреска | 123 | Коле Неделковски | 13 | 1 | 2 | A222222 | 2020-01-01 | 2025-01-01 | МВР Скопје | 1234 | ОУ Кочо Рацин | 768 | Македонија | 1 | 2 | Учеснички | 1 | Забележано неправилно однесување на комисијата | Претседателски избори 2020 | 1 | Претседателски избори |
R = {embg, g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, d_broj, d_vazi_od, d_vazi_do, d_izdaden, im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm, pr_id, pr_tip, pr_opis, ri_id, ri_ime, ri_datum, i_id, i_ime}
embg →g_ime, g_prezime, a_id, d_broj
a_id → a_ulica, a_broj, a_vlez, a_stan, im_id
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
d_broj → d_vazi_od, d_vazi_do, d_izdaden_od
im_id → im_mesto, a_id_gm
pr_id → pr_opis, pr_tip, embg, im_id, ri_id
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
само лево:
pr_id
лево и десно:
embg, a_id, d_broj, a_id_gm, im_id, ri_id, i_id
само десно:
g_ime, g_prezime, a_ulica, a_broj, a_vlez, a_stan, d_vazi_od, d_vazi_do, d_izdaden_od, im_mesto, pr_opis, pr_tip, ri_ime, ri_datum, i_ime
{pr_id}+ = {embg, g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, d_broj, d_vazi_od, d_vazi_do, d_izdaden, im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm, pr_id, pr_tip, pr_opis, ri_id, ri_ime, ri_datum, i_id, i_ime}
{pr_id} е единствен кандидат клуч и примарен клуч.
Во вака дефинираната релација нема повеќекратни зависности, па оттука следува дека задоволува прва нормална форма.
Клучот на релацијата е составен од само еден атрибут, па парцијална зависност не е возможна, затоа, задоволува втора нормална форма.
Не е во трета нормална форма поради:
d_broj → d_vazi_od, d_vazi_do, d_izdaden_od
Декомпозиција
R1 {d_broj, d_vazi_od, d_vazi_do, d_izdaden_od} – задоволува BCNF
R2 {embg, g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, d_broj, im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm, pr_id, pr_tip, pr_opis, ri_id, ri_ime, ri_datum, i_id, i_ime}
embg →g_ime, g_prezime, a_id, d_broj
a_id → a_ulica, a_broj, a_vlez, a_stan
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
im_id → im_mesto, a_id_gm
pr_id → pr_opis, pr_tip, embg, im_id, ri_id
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
Не е во трета нормална форма поради:
im_id → im_mesto, a_id_gm
{im_id}+ = {im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
R2_1 {im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} – задоволува втора нормална форма
im_id → im_mesto, a_id_gm
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
Не е во трета нормална форма поради:
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
{a_id_gm}+ = {a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
R2_1_1 = {a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} – задоволува BCNF
R2_1_2 = {im_id, im_mesto, a_id_gm} – задоволува BCNF
R2_2 = {embg, g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, d_broj, im_id, pr_id, pr_tip, pr_opis, ri_id, ri_ime, ri_datum, i_id, i_ime}
embg →g_ime, g_prezime, a_id, d_broj
a_id → a_ulica, a_broj, a_vlez, a_stan
pr_id → pr_opis, pr_tip, embg, im_id, ri_id
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
Не е во трета нормална форма поради:
a_id → a_ulica, a_broj, a_vlez, a_stan
{a_id}+ = {a_id, a_ulica, a_broj, a_vlez, a_stan}
R2_2_1 = {a_id, a_ulica, a_broj, a_vlez, a_stan}- задоволува BCNF
R2_2_2 = {embg, g_ime, g_prezime, a_id, pr_id, pr_tip, pr_opis, ri_id, ri_ime, ri_datum, im_id, i_id, i_ime} – задоволува втора нормална форма
embg →g_ime, g_prezime, a_id, d_broj
pr_id → pr_opis, pr_tip, embg, im_id, ri_id
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
Не е во трета нормална форма поради:
i_id → i_ime
{i_id}+ = {i_id, i_ime}
R2_2_2_1 = {i_id, i_ime} – задоволува BCNF
R2_2_2_2 = {embg, g_ime, g_prezime, a_id, pr_id, pr_tip, pr_opis, ri_id, ri_ime, ri_datum, im_id, i_id} – задоволува втора нормална форма
embg →g_ime, g_prezime, a_id, d_broj
pr_id → pr_opis, pr_tip, embg, im_id, ri_id
ri_id → ri_ime, ri_datum, i_id
Не е во трета нормална форма поради:
ri_id → ri_ime, ri_datum, i_id
{ri_id}+ = {ri_id, ri_ime, ri_datum, i_id}
R2_2_2_2_1 = {ri_id, ri_ime, ri_datum, i_id} – задоволува BCNF
R2_2_2_2_2 = {embg, g_ime, g_prezime, a_id, pr_id, pr_tip, pr_opis} – задоволува втора нормална форма
embg →g_ime, g_prezime, a_id, d_broj
pr_id → pr_opis, pr_tip, embg, im_id, ri_id
Не е во трета нормална форма поради:
embg →g_ime, g_prezime, a_id, d_broj
{embg}+ = {embg, g_ime, g_prezime, a_id, d_broj}
R2_2_2_2_2_1 = {embg, g_ime, g_prezime, a_id, d_broj} – задоволува BCNF
R2_2_2_2_2_2 = {pr_opis, pr_tip, embg, im_id, ri_id} – задоволува BCNF
3. Евиденција за пријавени кандидатури
ЕМБГ (embg) | Име (g_ime) | Презиме (g_prezime) | Адреса идентификатор | Улица (a_ulica) | Куќен број (a_broj) | Број влез (a_vlez) | Број стан (a_stan) | Број на документ за идентицикација (d_broj) | Датум на важност од (d_vazi_od) | Датум на важност до (d_vazi_do) | Издавач на документот (d_izdaden_od) | Гласачко место број(im_id) | Гласачко место (im_mesto) | Адреса идентификатор | Број на кандидатура (kan_id) | Опис на кандидатура (kan_opis) | Општина на кандидатура идентификатор (o_id) | Општина на кандидатура (o_ime) | Партија идентификатор | Партија име (p_id) | Улица (a_ulica) | Куќен број (a_broj) | Број влез (a_vlez) | Број стан (a_stan) | Реализација на избори (ri_id) | Реализација на избори име (ri_ime) | Реализација на избори име (ri_datum) | Избори (i_id) | Избори име (i_ime) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0101002000000 | Петар | Петрески | 123 | Коле Неделковски | 13 | 1 | 2 | A111111 | 2020-01-01 | 2025-01-01 | МВР Скопје | 1234 | ОУ Кочо Рацин | 768 | 1 | За подобра општина | 34 | Центар | 1 | Партија 1 | Партизанска | 1 | 1 | 1 | 1 | Локални избори 2020 | 2 | Локални избори | |
0101002000000 | Петра | Петреска | 123 | Коле Неделковски | 13 | 1 | 2 | A222222 | 2020-01-01 | 2025-01-01 | МВР Скопје | 1234 | ОУ Кочо Рацин | 768 | 2 | За подобрување на државата | 1 | Претседателски избори 2020 | 1 | Претседателски избори |
R = {embg, g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, d_broj, d_vazi_od, d_vazi_do, d_izdaden_od, kan_id, kan_opis, o_id, o_ime, p_id, p_ime, a_id_p, a_ulica_p, a_broj_p, a_vlez_p, a_stan_p, ri_id, ri_ime, ri_datum, i_id, i_ime}
embg → g_ime, g_prezime, a_id, d_broj
a_id → a_ulica, a_broj, a_vlez, a_stan
d_broj → d_vazi_od, d_vazi_do, d_izdaden_od
kan_id → kan_opis, embg, o_id, p_id, ri_id
p_id → p_ime, a_id_p
a_id_p → a_ulica_p, a_broj_p, a_vlez_p, a_stan_p
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
o_id → o_ime
лево:
kan_id
лево и десно:
embg, a_id, d_broj, p_id, a_id_p, ri_id, i_id, o_id
десно:
g_ime, g_prezime, a_ulica, a_broj, a_vlez, a_stan, d_vazi_od, d_vazi_do, d_izdaden_od, kan_opis, p_ime, a_ulica_p, a_broj_p, a_vlez_p, a_stan_p, ri_ime, ri_datum, i_ime
{kan_id}+ = {kan_opis, embg, o_id, p_id, ri_id, g_ime, g_prezime, a_id, d_broj, d_vazi_od, d_vazi_do, d_izdaden_od, a_ulica, a_broj, a_vlez, a_stan, p_ime, a_id_p, a_ulica_p, a_broj_p, a_vlez_p, a_stan_p, ri_ime, ri_datum, i_id, i_ime, o_ime}
{kan_id} е единствен кандидат клуч и примарен клуч.
Во вака дефинираната релација нема повеќекратни зависности, па оттука следува дека задоволува прва нормална форма.
Клучот на релацијата е составен од само еден атрибут, па парцијална зависност не е возможна, затоа, задоволува втора нормална форма.
R = {kan_id, kan_opis, embg, o_id, p_id, ri_id, g_ime, g_prezime, a_id, d_broj, d_vazi_od, d_vazi_do, d_izdaden_od, a_ulica, a_broj, a_vlez, a_stan, p_ime, a_id_p, a_ulica_p, a_broj_p, a_vlez_p, a_stan_p, ri_ime, ri_datum, i_id, i_ime, o_ime}
Не е во трета нормална форма поради:
d_broj → d_vazi_od, d_vazi_do, d_izdaden_od
Декомпозиција:
R1 = {kan_id, kan_opis, embg, o_id, p_id, ri_id, g_ime, g_prezime, a_id, d_broj, a_ulica, a_broj, a_vlez, a_stan, p_ime, a_id_p, a_ulica_p, a_broj_p, a_vlez_p, a_stan_p, ri_ime, ri_datum, i_id, i_ime, o_ime}
Не задоволува трета нормална форма поради тоа што постојат транзитивни зависности:
a_id → a_ulica, a_broj, a_vlez, a_stan
Декомпозиција:
R1_1 = {kan_id, kan_opis, embg, o_id, p_id, ri_id, g_ime, g_prezime, a_id, d_broj, p_ime, a_id_p, a_ulica_p, a_broj_p, a_vlez_p, a_stan_p, ri_ime, ri_datum, i_id, i_ime, o_ime}
Не задоволува трета нормална форма поради тоа што постојат транзитивни зависности:
a_id_p → a_ulica_p, a_broj_p, a_vlez_p, a_stan_p
Декомпозиција:
R1_1_1 = {kan_id, kan_opis, embg, o_id, p_id, ri_id, g_ime, g_prezime, a_id, d_broj, p_ime, a_id_p, ri_ime, ri_datum, i_id, i_ime, o_ime}
Не задоволува трета нормална форма поради тоа што постојат транзитивни зависности:
i_id → i_ime
Декомпозиција: R1_1_1_1 = {kan_id, kan_opis, embg, o_id, p_id, ri_id, ri_ime, ri_datum, g_ime, g_prezime, a_id, d_broj, p_ime, a_id_p, i_id, o_ime}
Не задоволува трета нормална форма поради тоа што постојат транзитивни зависности:
ri_id → ri_ime, ri_datum, i_id
Декомпозиција:
R1_1_1_1_1 = {kan_id, kan_opis, embg, o_id, p_id, ri_id, g_ime, g_prezime, a_id, d_broj, p_ime, a_id_p, o_ime}
Не задоволува трета нормална форма поради тоа што постојат транзитивни зависности:
o_id → o_ime
Декомпозиција:
R1_1_1_1_1_1 = {kan_id, kan_opis, embg, o_id, p_id, ri_id, g_ime, g_prezime, a_id, d_broj, p_ime, a_id_p}
Не задоволува трета нормална форма поради тоа што постојат транзитивни зависности:
p_id → p_ime, a_id_p
Декомпозиција:
R1_1_1_1_1_1_1 = {kan_id, kan_opis, embg, o_id, p_id, ri_id, g_ime, g_prezime, a_id, d_broj}
Не задоволува трета нормална форма поради тоа што постојат транзитивни зависности:
embg → g_ime, g_prezime, a_id, d_broj
Декомпозиција:
R1_1_1_1_1_1_1_1 = {kan_id, kan_opis, embg, o_id, p_id, ri_id} – задоволува BCNF
R1_1_1_1_1_1_1_2 = {embg, g_ime, g_prezime, a_id, d_broj} – задоволува BCNF
R1_1_1_1_1_1_2 = {p_id, p_ime, a_id_p} – задоволува BCNF
R1_1_1_1_1_2 = {o_id, o_ime} – задоволува BCNF
R1_1_1_1_2 = {ri_id, ri_ime, ri_datum, i_id} – задоволува BCNF
R1_1_1_2 = {i_id, i_ime} – задоволува BCNF
R1_1_2 = {a_id_p, a_ulica_p, a_broj_p, a_vlez_p, a_stan_p} – задоволува BCNF
R1_2 = {a_id, a_ulica, a_broj, a_vlez, a_stan} – задоволува BCNF
R2 = {d_broj, d_vazi_od, d_vazi_do, d_izdaden_od} – задоволува BCNF
4. Кандидатски листи
Кандидатска листа идентификатор (kl_id) | Кандидатска листа име (kl_ime) | Изборна единица кандидатура идентификатор (ie_id) | Изборна единица на кандидатура (ie_ime) | Изборна единица број на пратеници (ie_broj_pratenici) | Општина на кандидатура идентификатор (o_id) | Општина на кандидатура (o_ime) | Партија идентификатор (p_id) | Партија име (p_ime) | Улица (a_ulica) | Куќен број (a_broj) | Број влез (a_vlez) | Број стан (a_stan) | Реализација на избори идентификатор (ri_id) | Реализација на избори име (ri_ime) | Реализација на избори датум (ri_datum) | Избори идентификатор (i_id) | Избори име (i_ime) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | За почиста средина | 34 | Центар | 1 | Партија 1 | Партизанска | 1 | 1 | 1 | 1 | Локални избори 2020 | 2020-05-01 | 2 | Локални избори | |||
2 | Победува ме | 1 | Изборна единица 1 | 20 | 1 | Претседателски избори 2020 | 2020-06-01 | 1 | Претседателски избори |
R = {kl_id, kl_ime, ie_id, ie_ime, ie_broj_pratenici, o_id, o_ime, p_id, p_ime, a_id, a_ulica, a_broj, a_vlez, a_stan, ri_id, ri_ime, ri_datum, i_id, i_ime}
Множество функциски зависности:
kl_id → kl_ime, p_id, o_id, ri_id, ie_id
ie_id → ie_ime, ie_broj_pratenici
o_id → o_ime
p_id → p_ime, a_id
a_id → a_ulica, a_broj, a_vlez, a_stan
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
Појавување на атрибутите во функциските зависности
само лево:
kl_id
лево и десно:
p_id, o_id, ri_id, ie_id, a_id, i_id
само десно:
kl_ime, ie_ime, ie_broj_pratenici, o_ime, p_ime, a_ulica, a_broj, a_vlez, a_stan, ri_ime, ri_datum, i_ime
Според претходната анализа, се обидуваме да го провериме kl_id како кандидат клуч:
{kl_id}+ = {kl_id, kl_ime, ie_id, ie_ime, ie_broj_pratenici, o_id, o_ime, p_id, p_ime, a_id, a_ulica, a_broj, a_vlez, a_stan, ri_id, ri_ime, ri_datum, i_id, i_ime}
{kl_id} е единствен кандидат клуч и примарен клуч.
Во вака дефинираната релација нема повеќекратни зависности, па оттука следува дека задоволува прва нормална форма.
Клучот на релацијата е составен од само еден атрибут, па парцијална зависност не е возможна, затоа, задоволува втора нормална форма.
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
i_id → i_ime
{i_id}+ = {i_id, i_ime}
Декомпозиција R1 и R2
R1 = {i_id, i_ime} – задоволува BCNF
R2 = {kl_id, kl_ime, ie_id, ie_ime, ie_broj_pratenici, o_id, o_ime, p_id, p_ime, a_id, a_ulica, a_broj, a_vlez, a_stan, ri_id, ri_ime, ri_datum, i_id} – задоволува втора нормална форма
Множество функциски зависности кај R2:
kl_id → kl_ime, p_id, o_id, ri_id, ie_id
ie_id → ie_ime, ie_broj_pratenici
o_id → o_ime
p_id → p_ime, a_id
a_id → a_ulica, a_broj, a_vlez, a_stan
ri_id → ri_ime, ri_datum, i_id
R2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
ri_id → ri_ime, ri_datum, i_id
{ri_id}+ = {ri_id, ri_ime, ri_datum, i_id}
Декомпозиција R2_1 и R2_2
R2_1 = {ri_id, ri_ime, ri_datum, i_id} – задоволува BCNF
R2_2 = {kl_id, kl_ime, ie_id, ie_ime, ie_broj_pratenici, o_id, o_ime, p_id, p_ime, a_id, a_ulica, a_broj, a_vlez, a_stan, ri_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2:
kl_id → kl_ime, p_id, o_id, ri_id, ie_id
ie_id → ie_ime, ie_broj_pratenici
o_id → o_ime
p_id → p_ime, a_id
a_id → a_ulica, a_broj, a_vlez, a_stan
R2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
a_id → a_ulica, a_broj, a_vlez, a_stan
{a_id}+ = {a_id, a_ulica, a_broj, a_vlez, a_stan}
Декомпозиција R2_2_1 и R2_2_2
R2_2_1 = {a_id, a_ulica, a_broj, a_vlez, a_stan} – задоволува BCNF
R2_2_2 = {kl_id, kl_ime, ie_id, ie_ime, ie_broj_pratenici, o_id, o_ime, p_id, p_ime, a_id, ri_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2:
kl_id → kl_ime, p_id, o_id, ri_id, ie_id
ie_id → ie_ime, ie_broj_pratenici
o_id → o_ime
p_id → p_ime, a_id
R2_2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
p_id → p_ime, a_id
{p_id}+ = {p_id, p_ime, a_id}
Декомпозиција R2_2_2_1 и R2_2_2_2
R2_2_2_1 = {p_id, p_ime, a_id} – задоволува BCNF
R2_2_2_2 = {kl_id, kl_ime, ri_id, ie_id, ie_ime, ie_broj_pratenici, o_id, o_ime} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2_2:
kl_id → kl_ime, p_id, o_id, ri_id, ie_id
ie_id → ie_ime, ie_broj_pratenici
o_id → o_ime
R2_2_2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
o_id → o_ime
{o_id}+ = {o_id, o_ime}
Декомпозиција R2_2_2_2_1 и R2_2_2_2_2
R2_2_2_2_1 = {o_id, o_ime} – задоволува BCNF
R2_2_2_2_2 = {kl_id, kl_ime, ri_id, ie_id, ie_ime, ie_broj_pratenici, o_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2_2:
kl_id → kl_ime, p_id, o_id, ri_id, ie_id
ie_id → ie_ime, ie_broj_pratenici
R2_2_2_2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
ie_id → ie_ime, ie_broj_pratenici
{ie_id}+ = {ie_id, ie_ime, ie_broj_pratenici}
Декомпозиција R2_2_2_2_2_1 и R2_2_2_2_2_2
R2_2_2_2_2_1 = {ie_id, ie_ime, ie_broj_pratenici} – задоволува BCNF
R2_2_2_2_2_2 = {kl_id, kl_ime, ie_id, o_id, ri_id} – задоволува BCNF
Конечно, првичната реализација се декомпонира на следните релации (сите се во BCNF):
R1 = {i_id, i_ime}
R2_1 = {ri_id, ri_ime, ri_datum, i_id}
R2_2_1 = {a_id, a_ulica, a_broj, a_vlez, a_stan}
R2_2_2_1 = {p_id, p_ime, a_id}
R2_2_2_2_1 = {o_id, o_ime}
R2_2_2_2_2_1 = {ie_id, ie_ime, ie_broj_pratenici}
R2_2_2_2_2_2 = {kl_id, kl_ime, ie_id, o_id, ri_id}
5. Коалициони партнери
Партија идентификатор (p_id) | Партија име (p_ime) | Улица (a_ulica) | Куќен број (a_broj) | Број влез (a_vlez) | Број стан (a_stan) | Коалиција идентификатор (koa_id) | Коалиција име (koa_ime) | Коалиција мото (koa_moto) | Општина на коалиција идентификатор (o_id) | Општина на коалиција (o_ime) | Изборна единица на коалиција идентификатор (ie_id) | Изборна единица на коалиција (ie_ime) | Реализација на избори идентификатор (ri_id) | Реализација на избори име (ri_ime) | Реализација на избори датум (ri_datum) | Избори идентификатор (i_id) | Избори име (i_ime) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Партија 1 | Партизанска | 1 | 1 | 1 | 1 | Коалиција 1 | Заедно сме посилни | 1 | Изборна единица 1 | 1 | Локални избори 2020 | 2020-05-01 | 2 | Локални избори | ||
2 | Партија 2 | Илинден | 2 | 1 | 3 | 1 | Коалиција 1 | Заедно сме посилни | 1 | Изборна единица 1 | 1 | Претседателски избори 2020 | 2020-06-01 | 2 | Претседателски избори | ||
3 | Партија 1 | Партизанска | 1 | 1 | 1 | 1 | Коалиција 2 | Мото | 24 | Карпош | |||||||
3 | Партија 3 | Коле Неделковски | 37 | Коалиција 2 | Мото | 24 | Карпош |
R = {p_id, p_ime, a_id, a_ulica, a_broj, a_vlez, a_stan, koa_id, koa_ime, koa_moto, o_id, o_ime, ie_id, ie_ime, ri_id, ri_ime, ri_datum, i_id, i_ime}
Множество функциски зависности:
p_id → p_ime, a_id
a_id → a_ulica, a_broj, a_vlez, a_stan
koa_id → koa_ime, koa_moto, o_id, ri_id, ie_id
o_id → o_ime
ie_id → ie_ime
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
Појавување на атрибутите во функциските зависности
само лево:
p_id, koa_id
лево и десно:
a_id, o_id, ri_id, ie_id, ri_id, i_id
само десно:
p_ime, a_ulica, a_broj, a_vlez, a_stan, koa_ime, koa_moto, o_ime, ie_ime, ri_ime, ri_datum, i_ime
Според претходната анализа, се обидуваме да го провериме {pr_id, koa_id} како кандидат клуч:
{p_id, koa_id}+ = {p_id, p_ime, a_id, a_ulica, a_broj, a_vlez, a_stan, koa_id, koa_ime, koa_moto, o_id, o_ime, ie_id, ie_ime, ri_id, ri_ime, ri_datum, i_id, i_ime} = R
{p_id, koa_id} е единствен кандидат клуч и примарен клуч
Во вака дефинираната релација нема повеќекратни зависности, па оттука следува дека задоволува прва нормална форма.
Претходно дефинираната релација не е во втора нормална форма поради тоа што постои парцијална зависност:
p_id → p_ime, a_id
{p_id}+ = {p_id, p_ime, a_id, a_ulica, a_broj, a_vlez, a_stan}
Декомпозиција R1 и R2
R1 = {p_id, p_ime, a_id, a_ulica, a_broj, a_vlez, a_stan} – задоволува втора нормална форма
Множество функциски зависности кај R1:
p_id → p_ime, a_id
a_id → a_ulica, a_broj, a_vlez, a_stan
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
a_id → a_ulica, a_broj, a_vlez, a_stan
{а_id}+ = {а_id, a_ulica, a_broj, a_vlez, a_stan}
Декомпозиција R1_1 и R1_2
R1_1 = {а_id, a_ulica, a_broj, a_vlez, a_stan} – задоволува BCNF
R1_2 = {p_id, p_ime, a_id} – задоволува BCNF
R2 = {koa_id, koa_ime, koa_moto, o_id, o_ime, ie_id, ie_ime, ri_id, ri_ime, ri_datum, i_id, i_ime} – задоволува втора нормална форма
Множество функциски зависности кај R2:
koa_id → koa_ime, koa_moto, o_id, ri_id, ie_id
o_id → o_ime
ie_id → ie_ime
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
o_id → o_ime
{o_id}+ = {o_id, o_ime}
Декомпозиција R2_1 и R2_2
R2_1 = {o_id, o_ime} – задоволува BCNF
R2_2 = {koa_id, koa_ime, koa_moto, o_id, ie_id, ie_ime, ri_id, ri_ime, ri_datum, i_id, i_ime} – задоволува втора нормална форма
Множество функциски зависности кај R2_2:
koa_id → koa_ime, koa_moto, o_id, ri_id, ie_id
ie_id → ie_ime
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
ie_id → ie_ime
{ie_id}+ = {ie_id, o_ime}
Декомпозиција R2_2_1 и R2_2_2
R2_2_1 = {ie_id, o_ime} – задоволува BCNF
R2_2_2 = {koa_id, koa_ime, koa_moto, o_id, ri_id, ri_ime, ri_datum, i_id, i_ime}
Множество функциски зависности кај R2_2_2:
koa_id → koa_ime, koa_moto, o_id, ri_id, ie_id
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
i_id → i_ime
{i_id}+ = {i_id, i_ime}
Декомпозиција R2_2_2_1 и R2_2_2_2
R2_2_2_1 = {i_id, i_ime} – задоволува BCNF
R2_2_2_2 = {koa_id, koa_ime, koa_moto, o_id, ri_id, ri_ime, ri_datum, i_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2_2:
koa_id → koa_ime, koa_moto, o_id, ri_id, ie_id
ri_id → ri_ime, ri_datum, i_id
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
ri_id → ri_ime, ri_datum, i_id
{ri_id}+ = {ri_id, ri_ime, ri_datum, i_id}
Декомпозиција R2_2_2_2_1 и R2_2_2_2_2
R2_2_2_2_1 = {ri_id, ri_ime, ri_datum, i_id} – задоволува BCNF
R2_2_2_2_2 = {koa_id, koa_ime, koa_moto, o_id, ri_id} – задоволува BCNF
R2_2 = {p_id, koa_id} – задоволува BCNF
Конечно, првичната реализација се декомпонира на следните релации (сите се во BCNF):
R1_1 = {а_id, a_ulica, a_broj, a_vlez, a_stan}
R1_2 = {p_id, p_ime, a_id}
R2_1 = {o_id, o_ime}
R2_2 = {p_id, koa_id}
R2_2_1 = {ie_id, o_ime}
R2_2_2_1 = {i_id, i_ime}
R2_2_2_2_1 = {ri_id, ri_ime, ri_datum, i_id}
R2_2_2_2_2 = {koa_id, koa_ime, koa_moto, o_id, ri_id}
6. Членови на комисии - избирачки одбори
ЕМБГ (embg) | Име (g_ime) | Презиме (g_prezime) | Адреса идентификатор (a_id) | Улица (a_ulica) | Куќен број (a_broj) | Број влез (a_vlez) | Број стан (a_stan) | Број на документ за идентификација (d_broj) | Датум на важност од (d_vazi_od) | Датум на важност до (d_vazi_do) | Издавач на документот (d_izdaden_od) | Гласачко место број (im_id) | Гласачко место (im_mesto) | Адреса идентификатор (a_id_gm) | Улица (a_ulica_gm) | Куќен број (a_broj_gm) | Број влез (a_vlez_gm) | Број стан (a_stan_gm) | Комисија идентификатор | Реализација на избори (ri_id) | Реализација на избори име (ri_ime) | Реализација на избори име (ri_datum) | Избори (i_id) | Избори име (i_ime) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0101002000000 | Петар | Петрески | 123 | Коле Неделковски | 13 | 1 | 2 | A111111 | 2020-01-01 | 2025-01-01 | МВР Скопје | 1234 | ОУ Кочо Рацин | 768 | Македонија | 1 | 1 | 1 | Локални избори 2020 | 2020-06-01 | 2 | Локални избори | ||
0101003000000 | Петра | Петреска | 123 | Коле Неделковски | 13 | 1 | 2 | A222222 | 2020-01-01 | 2025-01-01 | МВР Скопје | 1234 | ОУ Кочо Рацин | 768 | Македонија | 1 | 1 | 1 | Локални избори 2020 | 2020-06-01 | 2 | Локални избори | ||
0202002000000 | Марко | Марковски | 563 | Мајка Тереза | 29 | 1 | 3 | A311111 | 2020-01-01 | 2025-01-01 | МВР Скопје | 2768 | ОУ Киро Глигоров | 143 | Васил Ѓоргов | 17 | 2 | 1 | Претседателски избори 2020 | 2020-05-01 | 1 | Претседателски избори | ||
0301003000000 | Марија | Петреска | 789 | Франклин Рузвелт | 67 | 2 | 6 | A232222 | 2020-01-01 | 2025-01-01 | МВР Скопје | 1234 | ОУ Киро Глигоров | 143 | Васил Ѓоргов | 17 | 2 | 1 | Претседателски избори 2020 | 2020-05-01 | 1 | Претседателски избори |
R = {embg, g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, d_broj, d_vazi_od, d_vazi_do, d_izdaden_od, im_id, im_mesto, a_id_im, a_ulica_im, a_vlez_im, a_stan_im, kom_id, ri_id, ri_ime, ri_datum, i_id, i_ime}
Множество функциски зависности:
embg → g_ime, g_prezime, a_id, d_broj
a_id → a_ulica, a_broj, a_vlez, a_stan
a_id_im → a_ulica_im, a_broj_im, a_vlez_im, a_stan_im
d_broj → d_vazi_od, d_vazi_do, d_izdaden_od
im_id → im_mesto, a_id_im
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
kom_id → ri_id, im_id
Појавување на атрибутите во функциските зависности
само лево:
embg, kom_id
лево и десно:
a_id, d_broj, im_id, ri_id, i_id, a_id_im
десно:
g_ime, g_prezime, a_ulica, a_broj, a_vlez, a_stan, ri_ime, ri_datum, im_mesto, d_vazi_od, d_vazi_do, d_izdaden_od, a_ulica_im, a_broj_im, a_vlez_im, a_stan_im
Според претходната анализа, се обидуваме да го провериме {embg, kom_id} како кандидат клуч:
{embg, kom_id}+ = {g_ime, g_prezime, a_id, d_broj , a_ulica, a_broj, a_vlez, a_stan, im_id, im_mesto, a_id_im, kom_id , a_ulica_im, a_broj_im, a_vlez_im, a_stan_im , ri_id , ri_ime, ri_datum, i_id , i_ime, d_vazi_od, d_vazi_do, d_izdaden_od}
{embg, kom_id} е единствен кандидат клуч и примарен клуч.
Во вака дефинираната релација нема повеќекратни зависности, па оттука следува дека задоволува прва нормална форма.
Претходно дефинираната релација не е во втора нормална форма поради тоа што постои парцијална зависност:
embg → g_ime, g_prezime, a_id, d_broj, a_ulica, a_broj, a_vlez, a_stan, d_vazi_od, d_vazi_do, d_izdaden_od
Декомпозиција R1 и R2
R1 = {emgb, kom_id, ri_id, im_id, im_mesto, a_id_im, a_ulica_im, a_broj_im, a_vlez_im, a_stan_im, ri_ime, ri_datum, i_id, i_ime}
Множество функциски зависности кај R1:
a_id_im → a_ulica_im, a_broj_im, a_vlez_im, a_stan_im
im_id → im_mesto, a_id_im
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
kom_id → ri_id, im_id
Претходно дефинираната релација не е во втора нормална форма поради тоа што постои парцијална зависност:
kom_id → ri_id, im_id, im_mesto, a_id_im, a_ulica_im, a_broj_im, a_vlez_im, a_stan_im, ri_ime, ri_datum, i_id, i_ime
Декомпозиција R1_1 и R1_2
R1_1 = {embg, kom_id} – задоволува BCNF
R1_2 = {kom_id, ri_id, im_id, im_mesto, a_id_im, a_ulica_im, a_broj_im, a_vlez_im, a_stan_im, ri_ime, ri_datum, i_id, i_ime} - задоволува втора нормална форма
Множество функциски зависности кај R1_2:
a_id_im → a_ulica_im, a_broj_im, a_vlez_im, a_stan_im
im_id → im_mesto, a_id_im
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
kom_id → ri_id, im_id
R1_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
im_id → im_mesto, a_id_im
Декомпозиција R1_2_1 и R1_2_2
R1_2_1 = {kom_id, ri_id, ri_ime, ri_datum, i_id, i_ime, im_id}
Множество функциски зависности кај R1_2_1:
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
kom_id → ri_id, im_id
R1_2_1 не е во трета нормална форма поради тоа што постои транзитивна зависност:
ri_id → ri_ime, ri_datum
Декомпозиција R1_2_1_1 и R1_2_1_2
R1_2_1_1 = {kom_id, ri_id, i_id, i_ime, im_id}
R1_2_1_1 не е во трета нормална форма поради тоа што постои транзитивна зависност:
i_id → i_ime
Декомпозиција R1_2_1_1_1 и R1_2_1_1_2
R1_2_1_1_1 = {kom_id, ri_id, i_id, im_id} – задоволува BCNF
R1_2_1_1_2 = {i_id, i_ime} – задоволува BCNF
R1_2_1_2 = {ri_id, ri_ime, ri_datum} – задоволува BCNF
R1_2_2 = {im_id, im_mesto, a_id_im, a_ulica_im, a_broj_im, a_vlez_im, a_stan_im}
Множество функциски зависности кај R1_2_2:
a_id_im → a_ulica_im, a_broj_im, a_vlez_im, a_stan_im
im_id → im_mesto, a_id_im
R1_2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
a_id_im → a_ulica_im, a_broj_im, a_vlez_im, a_stan_im
Декомпозиција R1_2_2_1 и R1_2_2_2
R1_2_2_1 = {im_id, im_mesto, a_id_im} – задоволува BCNF
R1_2_2_2 = {a_id_im, a_ulica_im, a_broj_im, a_vlez_im, a_stan_im} – задоволува BCNF
R2 = {embg, g_ime, g_prezime, a_id, d_broj, a_ulica, a_broj, a_vlez, a_stan, d_vazi_od, d_vazi_do, d_izdaden_od}
Множество функциски зависности кај R2:
embg → g_ime, g_prezime, a_id, d_broj
a_id → a_ulica, a_broj, a_vlez, a_stan
d_broj → d_vazi_od, d_vazi_do, d_izdaden_od
R2 нема парцијални зависности, задоволува второ ниво.
Но, има транзитивни зависности и поради тоа не задоволува трето ниво.
a_id → a_ulica, a_broj, a_vlez, a_stan
Декомпозиција R2_1 и R2_2
R2_1 = {embg, g_ime, g_prezime, a_id, d_broj, d_vazi_od, d_vazi_do, d_izdaden_od}
Множество функциски зависности кај R2_1:
embg → g_ime, g_prezime, a_id, d_broj
d_broj → d_vazi_od, d_vazi_do, d_izdaden_od
R2_1 не е во трета нормална форма поради тоа што постои транзитивна зависност:
d_broj → d_vazi_od, d_vazi_do, d_izdaden_od
Декомпозиција R2_1_1 и R2_1_2
R2_1_1 = {embg, g_ime, g_prezime, a_id, d_broj} – задоволува BCNF
R2_1_2 = {d_broj, d_vazi_od, d_vazi_do, d_izdaden_od} – задоволува BCNF
R2_2 = {a_id, a_ulica, a_broj, a_vlez, a_stan} – задоволува BCNF
Конечно, првичната реализација се декомпонира на следните релации (сите се во BCNF):
R1_1 = {embg, kom_id}
R2_2 = {a_id, a_ulica, a_broj, a_vlez, a_stan}
R2_1_1 = {embg, g_ime, g_prezime, a_id, d_broj}
R2_1_2 = {d_broj, d_vazi_od, d_vazi_do, d_izdaden_od}
R1_2_1_2 = {ri_id, ri_ime, ri_datum}
R1_2_2_1 = {im_id, im_mesto, a_id_im}
R1_2_2_2 = {a_id_im, a_ulica_im, a_broj_im, a_vlez_im, a_stan_im}
R1_2_1_1_1 = {kom_id, ri_id, i_id, im_id}
R1_2_1_1_2 = {i_id, i_ime}
7. Излезност на граѓаните на реализација на избори
ЕМБГ (embg) | Име (g_ime) | Презиме (g_prezime) | Адреса идентификатор (a_id) | Улица (a_ulica) | Куќен број (a_broj) | Број влез (a_vlez) | Број стан (a_stan) | Број на документ за идентификација (d_broj) | Датум на важност од (d_vazi_od) | Датум на важност до (d_vazi_do) | Издавач на документот (d_izdaden_od) | Гласачко место број (im_id) | Гласачко место (im_mesto) | Адреса идентификатор (a_id_gm) | Улица (a_ulica_gm) | Куќен број (a_broj_gm) | Број влез (a_vlez_gm) | Број стан (a_stan_gm) | Реализација на избори (ri_id) | Реализација на избори име (ri_ime) | Реализација на избори име (ri_datum) | Избори (i_id) | Избори име (i_ime) | Учество во на избори идентификатор (ug_id) | Време на гласање (ug_vreme) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0101002000000 | Петар | Петрески | 123 | Коле Неделковски | 13 | 1 | 2 | A111111 | 2020-01-01 | 2025-01-01 | МВР Скопје | 1234 | ОУ Кочо Рацин | 768 | Македонија | 1 | 1 | Локални избори 2020 | 2020-05-01 | 2 | Локални избори | 43578 | 2020-05-01 13:38:37 | ||
0201002000000 | Петра | Петреска | 123 | Коле Неделковски | 13 | 1 | 2 | A222222 | 2020-01-01 | 2025-01-01 | МВР Скопје | 1234 | ОУ Кочо Рацин | 768 | Македонија | 1 | 1 | Претседателски избори 2020 | 2020-06-01 | 1 | Претседателски избори | 82134 | 2020-06-01 17:18:11 |
R = {embg, g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, d_broj, d_vazi_od, d_vazi_do, d_izdaden_od, im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm, ri_id, ri_ime, ri_datum, i_id, i_ime, ug_id, ug_vreme}
Множество функциски зависности:
embg →g_ime, g_prezime, a_id, d_broj
a_id → a_ulica, a_broj, a_vlez, a_stan, im_id
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
d_broj → d_vazi_od, d_vazi_do, d_izdaden_od
im_id → im_mesto, a_id_gm
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
ug_id → ug_vreme, embg, ri_id, im_id
Појавување на атрибутите во функциските зависности
само лево:
ug_id
лево и десно:
a_id, d_broj, im_id, a_id_gm, embg, i_id, ri_id
само десно:
g_ime, g_prezime, a_ulica, a_broj, a_vlez, a_stan, d_vazi_od, d_vazi_do, d_izdaden_od, im_mesto, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm, ri_datum, i_ime, ug_vreme
Според претходната анализа, се обидуваме да го провериме ug_id како кандидат клуч:
{ug_id}+ = {embg, g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, d_broj, d_vazi_od, d_vazi_do, d_izdaden_od, im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm, ri_id, ri_ime, ri_datum, i_id, i_ime, ug_id, ug_vreme} = R
{ug_id} е единствен кандидат клуч и примарен клуч.
Во вака дефинираната релација нема повеќекратни зависности, па оттука следува дека задоволува прва нормална форма.
Клучот на релацијата е составен од само еден атрибут, па парцијална зависност не е возможна, затоа, задоволува втора нормална форма.
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
d_broj → d_vazi_od, d_vazi_do, d_izdaden_od
Декомпозиција R1 и R2
R1 {d_broj, d_vazi_od, d_vazi_do, d_izdaden_od} – задоволува BCNF
R2 {embg, g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, d_broj, im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm, ri_id, ri_ime, ri_datum, i_id, i_ime, ug_id, ug_vreme}
Множество функциски зависности кај R2:
embg →g_ime, g_prezime, a_id, d_broj
a_id → a_ulica, a_broj, a_vlez, a_stan, im_id
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
im_id → im_mesto, a_id_gm
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
ug_id → ug_vreme, embg, ri_id, im_id
R2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
im_id → im_mesto, a_id_gm
{im_id}+ = {im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
Декомпозиција R2_1 и R2_2
R2_1 {im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} – задоволува втора нормална форма
Множество функциски зависности кај R2_1:
im_id → im_mesto, a_id_gm
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
R2_1 не е во трета нормална форма поради тоа што постои транзитивна зависност:
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
{a_id_gm}+ = {a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
Декомпозиција R2_1_1 и R2_1_2
R2_1_1 = {a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} – задоволува BCNF
R2_1_2 = {im_id, im_mesto, a_id_gm} – задоволува BCNF
R2_2 = {embg, g_ime, g_prezime, a_id, a_ulica, a_broj, a_vlez, a_stan, d_broj, im_id, a_id_gm, ri_id, ri_ime, ri_datum, i_id, i_ime, ug_id, ug_vreme}
Множество функциски зависности кај R2_2:
embg →g_ime, g_prezime, a_id, d_broj
a_id → a_ulica, a_broj, a_vlez, a_stan
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
ug_id → ug_vreme, embg, ri_id, im_id
R2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
a_id → a_ulica, a_broj, a_vlez, a_stan
{a_id}+ = {a_id, a_ulica, a_broj, a_vlez, a_stan}
Декомпозиција R2_2_1 и R2_2_2
R2_2_1 = {a_id, a_ulica, a_broj, a_vlez, a_stan} - задоволува BCNF
R2_2_2 = {embg, g_ime, g_prezime, a_id, im_id, a_id_gm, ri_id, ri_ime, ri_datum, i_id, i_ime, ug_id, ug_vreme} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2:
embg →g_ime, g_prezime, a_id, d_broj
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
R2_2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
i_id → i_ime
{i_id}+ = {i_id, i_ime}
Декомпозиција R2_2_2_1 и R2_2_2_2
R2_2_2_1 = {i_id, i_ime} – задоволува BCNF
R2_2_2_2 = {embg, g_ime, g_prezime, a_id, im_id, a_id_gm, ri_id, ri_ime, ri_datum, i_id, ug_id, ug_vreme} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2_2:
embg →g_ime, g_prezime, a_id, d_broj
ri_id → ri_ime, ri_datum, i_id
ug_id → ug_vreme, embg, ri_id, im_id
R2_2_2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
ri_id → ri_ime, ri_datum, i_id
{ri_id}+ = {ri_id, ri_ime, ri_datum, i_id}
Декомпозиција R2_2_2_2_1 и R2_2_2_2_2
R2_2_2_2_1 = {ri_id, ri_ime, ri_datum, i_id} – задоволува BCNF
R2_2_2_2_2 = {embg, g_ime, g_prezime, a_id, im_id, a_id_gm, ri_id, ug_id, ug_vreme} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2_2_2:
embg →g_ime, g_prezime, a_id, d_broj
ug_id → ug_vreme, embg, ri_id, im_id
R2_2_2_2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
embg →g_ime, g_prezime, a_id, d_broj
{embg}+ = {embg, g_ime, g_prezime, a_id, d_broj}
Декомпозиција R2_2_2_2_2_1 и R2_2_2_2_2_2
R2_2_2_2_2_1 = {embg, g_ime, g_prezime, a_id, d_broj} – задоволува BCNF
R2_2_2_2_2_2 = {ug_id, ug_vreme, embg, ri_id, im_id} – задоволува BCNF
Конечно, првичната реализација се декомпонира на следните релации (сите се во BCNF):
R1 {d_broj, d_vazi_od, d_vazi_do, d_izdaden_od}
R2_1_1 = {a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
R2_1_2 = {im_id, im_mesto, a_id_gm}
R2_2_1 = {a_id, a_ulica, a_broj, a_vlez, a_stan}
R2_2_2_1 = {i_id, i_ime}
R2_2_2_2_1 = {ri_id, ri_ime, ri_datum, i_id}
R2_2_2_2_2_1 = {embg, g_ime, g_prezime, a_id, d_broj}
R2_2_2_2_2_2 = {ug_id, ug_vreme, embg, ri_id, im_id}
8. Резултати од избори со кандидатури
Глас идентификатор (gl_id) | Реализација на избори (ri_id) | Реализација на избори име (ri_ime) | Реализација на избори датум (ri_datum) | Избори (i_id) | Избори име (i_ime) | Код за идентификација (id_kod_kod) | Број на кандидатура (kan_id) | ЕМБГ на кандидатот (embg) | Име на кандидатот (g_ime) | Презиме на кандидатот (g_prezime) | Опис на кандидатура (kan_opis) | Општина на кандидатура идентификатор (o_id) | Општина на кандидатура (o_ime) | Партија идентификатор | Партија име (p_id) | Улица (a_ulica) | Куќен број (a_broj) | Број влез (a_vlez) | Број стан (a_stan) | Гласачко место број(im_id) | Гласачко место (im_mesto) | Адреса идентификатор | Улица (a_ulica) | Куќен број (a_broj) | Број влез (a_vlez) | Број стан (a_stan) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | Локални избори 2020 | 2020-05-01 | 2 | Локални избори | 79277d6c-c7ff-4627-a4de-9ef34400540a | 1 | 0101002000000 | Петар | Петрески | За подобра општина | 34 | Центар | 1 | Партија 1 | Партизанска | 1 | 1 | 1 | 1234 | ОУ Кочо Рацин | 768 | Македонија | 1 | ||
2 | 1 | Претседателски избори 2020 | 2020-06-01 | 1 | Претседателски избори | d0b6a837-6f6a-41f5-a0bb-4d3a53bc00c9 | 2 | 0101002000001 | Петра | Петреска | За подобрување на државата | 1234 | ОУ Кочо Рацин | 768 | Македонија | 1 |
R = {gl_id, ri_id, ri_ime, ri_datum, i_id, i_ime, id_kod_kod, embg, g_ime, g_prezime, kan_id, kan_opis, o_id, o_ime, p_id, a_ulica, a_broj, a_vlez, a_stan, im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
Множество функциски зависности:
embg →g_ime, g_prezime, a_id
a_id → a_ulica, a_broj, a_vlez, a_stan, im_id
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
im_id → im_mesto, a_id_gm
o_id → o_ime
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
gl_id → ri_id, kan_id, im_id, id_kod_kod
kan_id → kan_opis, embg, o_id, p_id, ri_id
p_id → p_ime, a_id
Појавување на атрибутите во функциските зависности
само лево:
gl_id
лево и десно:
embg, a_id, d_broj, a_id_gm, im_id, ri_id, i_id, gl_id, p_id, o_id, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm, im_mesto, ri_ime, ri_datum, i_ime, kan_opis, p_ime
само десно:
g_ime, g_prezime, a_ulica, a_broj, a_vlez, a_stan, o_ime
Според претходната анализа, се обидуваме да го провериме gl_id како кандидат клуч:
{gl_id}+ = {egl_id, ri_id, ri_ime, ri_datum, i_id, i_ime, id_kod_kod, embg, g_ime, g_prezime, kan_opis, o_id, o_ime, p_id, a_ulica, a_broj, a_vlez, a_stan, im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} = R
{gl_id} е единствен кандидат клуч и примарен клуч.
Во вака дефинираната релација нема повеќекратни зависности, па оттука следува дека задоволува прва нормална форма.
Клучот на релацијата е составен од само еден атрибут, па парцијална зависност не е возможна, затоа, задоволува втора нормална форма.
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
im_id → im_mesto, a_id_gm
{im_id}+ = {im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
Декомпозиција R1 и R2
R1 {im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} – задоволува втора нормална форма
Множество функциски зависности кај R1:
im_id → im_mesto, a_id_gm
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
{a_id_gm}+ = {a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
Декомпозиција R1_1 и R1_2
R1_1 = {a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} – задоволува BCNF
R1_2 = {im_id, im_mesto, a_id_gm} – задоволува BCNF
R2 {gl_id, ri_id, ri_ime, ri_datum, i_id, i_ime, id_kod_kod, embg, g_ime, g_prezime, kan_opis, o_id, o_ime, p_id, a_ulica, a_broj, a_vlez, a_stan, im_id} – задоволува втора нормална форма
Множество функциски зависности кај R2:
embg →g_ime, g_prezime
a_id → a_ulica, a_broj, a_vlez, a_stan
o_id → o_ime
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
gl_id → ri_id, kan_id, im_id, id_kod_kod
kan_id → kan_opis, embg, o_id, p_id, ri_id
p_id → p_ime, a_id
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
a_id → a_ulica, a_broj, a_vlez, a_stan
{a_id}+ = {a_id, a_ulica, a_broj, a_vlez, a_stan}
Декомпозиција R2_1 и R2_2
R2_1 = {a_id, a_ulica, a_broj, a_vlez, a_stan}- задоволува BCNF
R2_2 = {gl_id, ri_id, ri_ime, ri_datum, i_id, i_ime, id_kod_kod, embg, g_ime, g_prezime, kan_opis, o_id, o_ime, p_id, a_id, im_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2:
embg →g_ime, g_prezime
o_id → o_ime
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
gl_id → ri_id, kan_id, im_id, id_kod_kod
kan_id → kan_opis, embg, o_id, p_id, ri_id
p_id → p_ime, a_id
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
i_id → i_ime
{i_id}+ = {i_id, i_ime}
Декомпозиција R2_2_1 и R2_2_2
R2_2_1 = {i_id, i_ime} – задоволува BCNF
R2_2_2 = {gl_id, ri_id, ri_ime, ri_datum, i_id, id_kod_kod, embg, g_ime, g_prezime, kan_opis, o_id, o_ime, p_id, a_id, im_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2:
embg →g_ime, g_prezime
o_id → o_ime
ri_id → ri_ime, ri_datum, i_id
gl_id → ri_id, kan_id, im_id, id_kod_kod
kan_id → kan_opis, embg, o_id, p_id, ri_id
p_id → p_ime, a_id
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
ri_id → ri_ime, ri_datum, i_id
{ri_id}+ = {ri_id, ri_ime, ri_datum, i_id}
Декомпозиција R2_2_2_1 и R2_2_2_2
R2_2_2_1 = {ri_id, ri_ime, ri_datum, i_id} – задоволува BCNF
R2_2_2_2 = {gl_id, ri_id, id_kod_kod, embg, g_ime, g_prezime, kan_opis, o_id, o_ime, p_id, a_id, im_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2_2:
embg →g_ime, g_prezime
o_id → o_ime
gl_id → ri_id, kan_id, im_id, id_kod_kod
kan_id → kan_opis, embg, o_id, p_id, ri_id
p_id → p_ime, a_id
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
p_id → p_ime, a_id
{p_id}+ = {p_id, p_ime, a_id}
Декомпозиција R2_2_2_2_1 и R2_2_2_2_2
R2_2_2_2_1 = {p_id, p_ime, a_id} – задоволува BCNF
R2_2_2_2_2 = {gl_id, ri_id, id_kod_kod, embg, g_ime, g_prezime, kan_opis, o_id, o_ime, p_id, a_id, im_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2_2_2:
embg →g_ime, g_prezime
o_id → o_ime
gl_id → ri_id, kan_id, im_id, id_kod_kod
kan_id → kan_opis, embg, o_id, p_id, ri_id
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
o_id → o_ime
{o_id}+ = {o_id, o_ime}
Декомпозиција R2_2_2_2_2_1 и R2_2_2_2_2_2
R2_2_2_2_2_1 = {o_id, o_ime} – задоволува BCNF
R2_2_2_2_2_2 = {gl_id, ri_id, id_kod_kod, embg, g_ime, g_prezime, kan_opis, o_id, p_id, a_id, im_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2_2_2_2:
embg →g_ime, g_prezime
gl_id → ri_id, kan_id, im_id, id_kod_kod
kan_id → kan_opis, embg, o_id, p_id, ri_id
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
embg →g_ime, g_prezime
{embg}+ = {embg, g_ime, g_prezime}
Декомпозиција R2_2_2_2_2_2_1 и R2_2_2_2_2_2_2
R2_2_2_2_2_2_1 = {embg, g_ime, g_prezime} – задоволува BCNF
R2_2_2_2_2_2_2 = {gl_id, ri_id, id_kod_kod, embg, kan_opis, o_id, p_id, im_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2_2_2_2_2:
gl_id → ri_id, kan_id, im_id, id_kod_kod
kan_id → kan_opis, embg, o_id, p_id
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
kan_id → kan_opis, embg, o_id, p_id, ri_id
{kan_id}+ = {kan_id, kan_opis, embg, o_id, p_id}
Декомпозиција R2_2_2_2_2_2_2_1 и R2_2_2_2_2_2_2_2
R2_2_2_2_2_2_2_1 = {kan_id, kan_opis, embg, o_id, p_id, ri_id} – задоволува BCNF
R2_2_2_2_2_2_2_2 = {gl_id, ri_id, id_kod_kod, im_id} – задоволува BCNF
Поради сензитивност на доменот и потребите на апликацијата, атрибутот id_kod_kod се издвојува во посебен ентитет
R2_2_2_2_2_2_2_2_1 = {id_kod_kod} – задоволува BCNF
Конечно, првичната реализација се декомпонира на следните релации (сите се во BCNF):
R1_1 = {a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
R1_2 = {im_id, im_mesto, a_id_gm}
R2_1 = {a_id, a_ulica, a_broj, a_vlez, a_stan}
R2_2_1 = {i_id, i_ime}
R2_2_2_1 = {ri_id, ri_ime, ri_datum, i_id}
R2_2_2_2_1 = {p_id, p_ime, a_id}
R2_2_2_2_2_1 = {o_id, o_ime}
R2_2_2_2_2_2_1 = {embg, g_ime, g_prezime}
R2_2_2_2_2_2_2_1 = {kan_id, kan_opis, embg, o_id, p_id, ri_id}
R2_2_2_2_2_2_2_2 = {gl_id, ri_id, id_kod_kod, im_id}
R2_2_2_2_2_2_2_2_1 = {id_kod_kod}
9. Резултати од избори со кандидатски листи
Глас идентификатор (gl_id) | Реализација на избори (ri_id) | Реализација на избори име (ri_ime) | Реализација на избори датум (ri_datum) | Избори (i_id) | Избори име (i_ime) | Код за идентификација (id_kod_kod) | Број на кандидатура (kan_id) | ЕМБГ на кандидатот (embg) | Име на кандидатот (g_ime) | Презиме на кандидатот (g_prezime) | Опис на кандидатура (kan_opis) | Општина на кандидатура идентификатор (o_id) | Општина на кандидатура (o_ime) | Партија идентификатор | Партија име (p_id) | Улица (a_ulica) | Куќен број (a_broj) | Број влез (a_vlez) | Број стан (a_stan) | Гласачко место број(im_id) | Гласачко место (im_mesto) | Адреса идентификатор | Улица (a_ulica) | Куќен број (a_broj) | Број влез (a_vlez) | Број стан (a_stan) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | Локални избори 2020 | 2020-05-01 | 2 | Локални избори | 79277d6c-c7ff-4627-a4de-9ef34400540a | 1 | 0101002000000 | Петар | Петрески | За подобра општина | 34 | Центар | 1 | Партија 1 | Партизанска | 1 | 1 | 1 | 1234 | ОУ Кочо Рацин | 768 | Македонија | 1 | ||
2 | 1 | Претседателски избори 2020 | 2020-06-01 | 1 | Претседателски избори | d0b6a837-6f6a-41f5-a0bb-4d3a53bc00c9 | 2 | 0101002000001 | Петра | Петреска | За подобрување на државата | 1234 | ОУ Кочо Рацин | 768 | Македонија | 1 |
R = {gl_id, ri_id, ri_ime, ri_datum, i_id, i_ime, id_kod_kod, embg, g_ime, g_prezime, kl_id, kl_opis, o_id, o_ime, p_id, a_ulica, a_broj, a_vlez, a_stan, im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
Множество функциски зависности:
a_id → a_ulica, a_broj, a_vlez, a_stan, im_id
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
im_id → im_mesto, a_id_gm
o_id → o_ime
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
gl_id → ri_id, kan_id, im_id, id_kod_kod
kl_id → kl_opis, o_id, p_id, ie_id, ri_id
p_id → p_ime, a_id
Појавување на атрибутите во функциските зависности
само лево:
gl_id
лево и десно:
embg, a_id, d_broj, a_id_gm, im_id, ri_id, i_id, gl_id, p_id, o_id, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm, im_mesto, ri_ime, ri_datum, i_ime, kan_opis, p_ime
само десно:
g_ime, g_prezime, a_ulica, a_broj, a_vlez, a_stan, o_ime
Според претходната анализа, се обидуваме да го провериме gl_id како кандидат клуч:
{gl_id}+ = {egl_id, ri_id, ri_ime, ri_datum, i_id, i_ime, id_kod_kod, embg, g_ime, g_prezime, kan_opis, o_id, o_ime, p_id, a_ulica, a_broj, a_vlez, a_stan, im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} = R
{gl_id} е единствен кандидат клуч и примарен клуч.
Во вака дефинираната релација нема повеќекратни зависности, па оттука следува дека задоволува прва нормална форма.
Клучот на релацијата е составен од само еден атрибут, па парцијална зависност не е возможна, затоа, задоволува втора нормална форма.
Претходно дефинираната релација не е во трета нормална форма поради тоа што постои транзитивна зависност:
im_id → im_mesto, a_id_gm
{im_id}+ = {im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
Декомпозиција R1 и R2
R1 {im_id, im_mesto, a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} – задоволува втора нормална форма
Множество функциски зависности кај R1:
im_id → im_mesto, a_id_gm
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
R1 не е во трета нормална форма поради тоа што постои транзитивна зависност:
a_id_gm → a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm
{a_id_gm}+ = {a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm}
Декомпозиција R1_1 и R1_2
R1_1 = {a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} – задоволува BCNF
R1_2 = {im_id, im_mesto, a_id_gm} – задоволува BCNF
R2 {gl_id, ri_id, ri_ime, ri_datum, i_id, i_ime, id_kod_kod, kl_id, kl_opis, o_id, o_ime, p_id, a_ulica, a_broj, a_vlez, a_stan, im_id} – задоволува втора нормална форма
Множество функциски зависности кај R2:
a_id → a_ulica, a_broj, a_vlez, a_stan
o_id → o_ime
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
gl_id → ri_id, kan_id, im_id, id_kod_kod
kl_id → kl_opis, o_id, p_id, ie_id, ri_id
p_id → p_ime, a_id
R2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
a_id → a_ulica, a_broj, a_vlez, a_stan
{a_id}+ = {a_id, a_ulica, a_broj, a_vlez, a_stan}
Декомпозиција R2_1 и R2_2
R2_1 = {a_id, a_ulica, a_broj, a_vlez, a_stan} - задоволува BCNF
R2_2 = {gl_id, ri_id, ri_ime, ri_datum, i_id, i_ime, id_kod_kod, kl_id, kl_opis, o_id, o_ime, p_id, a_id, im_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2:
o_id → o_ime
ri_id → ri_ime, ri_datum, i_id
i_id → i_ime
gl_id → ri_id, kan_id, im_id, id_kod_kod
kl_id → kl_opis, o_id, p_id, ie_id, ri_id
p_id → p_ime, a_id
R2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
i_id → i_ime
{i_id}+ = {i_id, i_ime}
Декомпозиција R2_2_1 и R2_2_2
R2_2_1 = {i_id, i_ime} – задоволува BCNF
R2_2_2 = {gl_id, ri_id, ri_ime, ri_datum, i_id, id_kod_kod, kl_id, kl_opis, o_id, o_ime, p_id, a_id, im_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2:
o_id → o_ime
ri_id → ri_ime, ri_datum, i_id
gl_id → ri_id, kan_id, im_id, id_kod_kod
kl_id → kl_opis, o_id, p_id, ie_id, ri_id
p_id → p_ime, a_id
R2_2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
ri_id → ri_ime, ri_datum, i_id
{ri_id}+ = {ri_id, ri_ime, ri_datum, i_id}
Декомпозиција R2_2_2_1 и R2_2_2_2
R2_2_2_1 = {ri_id, ri_ime, ri_datum, i_id} – задоволува BCNF
R2_2_2_2 = {gl_id, ri_id, id_kod_kod, kl_id, kl_opis, o_id, o_ime, p_id, a_id, im_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2_2:
o_id → o_ime
gl_id → ri_id, kan_id, im_id, id_kod_kod
kl_id → kl_opis, o_id, p_id, ie_id, ri_id
p_id → p_ime, a_id
R2_2_2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
p_id → p_ime, a_id
{p_id}+ = {p_id, p_ime, a_id}
Декомпозиција R2_2_2_2_1 и R2_2_2_2_2
R2_2_2_2_1 = {p_id, p_ime, a_id} – задоволува BCNF
R2_2_2_2_2 = {gl_id, ri_id, id_kod_kod, kl_id, kl_opis, o_id, o_ime, p_id, a_id, im_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2_2_2:
o_id → o_ime
gl_id → ri_id, kl_id, im_id, id_kod_kod
kl_id → kl_opis, o_id, p_id, ie_id, ri_id
R2_2_2_2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
o_id → o_ime
{o_id}+ = {o_id, o_ime}
Декомпозиција R2_2_2_2_2_1 и R2_2_2_2_2_2
R2_2_2_2_2_1 = {o_id, o_ime} – задоволува BCNF
R2_2_2_2_2_2 = {gl_id, ri_id, id_kod_kod, embg, g_ime, g_prezime, kan_opis, o_id, p_id, a_id, im_id} – задоволува втора нормална форма
Множество функциски зависности кај R2_2_2_2_2_2:
gl_id → ri_id, kl_id, im_id, id_kod_kod
kl_id → kl_opis, o_id, p_id, ie_id, ri_id
R2_2_2_2_2_2 не е во трета нормална форма поради тоа што постои транзитивна зависност:
kl_id → kl_opis, o_id, p_id, ri_id, ie_id
{kl_id}+ = {kl_id, kl_opis, ie_id, o_id, p_id, ri_id}
Декомпозиција R2_2_2_2_2_2_1 и R2_2_2_2_2_2_2
R2_2_2_2_2_2_1 = {kl_id, kl_opis, ie_id, o_id, p_id, ri_id} – задоволува BCNF
R2_2_2_2_2_2_2 = {gl_id, ri_id, id_kod_kod, im_id} – задоволува BCNF
Поради сензитивност на доменот и потребите на апликацијата, атрибутот id_kod_kod се издвојува во посебен ентитет
R2_2_2_2_2_2_2_1 = {id_kod_kod} – задоволува BCNF
Конечно, првичната реализација се декомпонира на следните релации (сите се во BCNF):
R1_1 = {a_id_gm, a_ulica_gm, a_broj_gm, a_vlez_gm, a_stan_gm} – задоволува BCNF
R1_2 = {im_id, im_mesto, a_id_gm} – задоволува BCNF
R2_1 = {a_id, a_ulica, a_broj, a_vlez, a_stan} - задоволува BCNF
R2_2_1 = {i_id, i_ime} – задоволува BCNF
R2_2_2_1 = {ri_id, ri_ime, ri_datum, i_id} – задоволува BCNF
R2_2_2_2_1 = {p_id, p_ime, a_id} – задоволува BCNF
R2_2_2_2_2_1 = {o_id, o_ime} – задоволува BCNF
R2_2_2_2_2_2_1 = {kl_id, kl_opis, ie_id, o_id, p_id, ri_id} – задоволува BCNF
R2_2_2_2_2_2_2 = {gl_id, ri_id, id_kod_kod, im_id} – задоволува BCNF
R2_2_2_2_2_2_2_1 = {id_kod_kod} – задоволува BCNF
Резултантните релации добиени после нормализацијата:
*Сите задоволуваат BCNF
adresi
R1(a_id, a_ulica, a_broj, a_vlez, a_stan)
opstini
R2(o_id, o_ime)
prigovori
R3(pr_id, pr_opis, pr_tip, embg, im_id, ri_id)
izbiracki_mesta
R4(im_id, im_mesto, a_id)
komisii
R5(kom_id, ri_id, i_id, im_id)
izborni_edinici
R6(ie_id, ie_ime, ie_broj_pratenic)
kandidatski_listi
R7(kl_id, kl_ime, ie_id, o_id, ri_id)
glas
R8(gl_id, ri_id, id_kod_kod, im_id)
gragjani (Се користи embg наместо g_id)
R9(embg, g_ime, g_prezime, a_id, d_broj)
kodovi (Поради сензитивност на доменот и потребите на апликацијата, атрибутот id_kod_kod се издвојува во посебен ентитет)
R10(id_kod_kod, kod_vazi_do)
izbori
R11(i_id, i_ime)
realizacii_na_izbori
R12(ri_id, ri_ime, ri_datum, i_id)
kandidaturi
R13(kan_id, kan_opis, embg, o_id, p_id, ri_id)
dokumenti_za_identifikacija
R14(d_broj, d_vazi_od, d_vazi_do, d_izdaden_od)
partii
R15(p_id, p_ime, a_id)