Нормализација и подобрувања на дизајнот на базата
Поделба на доменот според типот на евиденција
Бидејќи нашиот модел го користи апликација којашто служи за различни евиденции од областа на реализација на избори, практично е невозможно да извршиме нормализација користејќи една табела во којашто ќе бидат сместени сите атрибути. Затоа решивме да ги прикажеме различните извештаи кои произлегуваат од различните сценарија на примена на моделот и како такви, парцијално да ги нормалзираме и така добиените ентитети да ги поврземе во целина.
Од пооделната нормализација на извештаите кои ги зададовме произлегоа следните ентитети:
- Евиденција за избирачки список (gragjani, adresi, dokumenti_za_identifikacija, glasacki_mesta)
- Евиденција за поднесени приговори (gragjani, izbori, realizacii_na_izbori, prigovori, dokumenti_za_identifikacija, adresi)
- Евиденција за пријавени кандидатури (gragjani, kandidaturi, opstini, partii, izbori, realizacii_na_izbori, dokumenti_za_identifikacija)
- Кандидатски листи (kandidatski_listi, partii, izbiracki_edinici, relaizacii_na_izbori, adresi, partii, opstini)
- Коалициони партнери (partii, opstini, adresi, koalicii, realizacii_na_izbori, koalicii, izbori, partii_koalicii (M:N - релација))
- Членови на комисии - избирачки одбори (gragjani, adresi, realizacii_na_izbori, dokumenti_za_identifikacija, komisii, clenovi_na (M:N - релација), glasacki_mesta)
- Излезност на граѓаните на реализација на избори (gragjani, adresi, realizacii_na_izbori, izbori, dokumenti_za_identifikacija, glasanje, glasacko_mesto)
- Резултати од избори со кандидатури (realizacii_na_izbori, izbori, glasacko_mesto, glas_za_kandidatura, kodovi_za_glasanje, opstini, partii, adresi, kandidaturi)
- Резултати од избори со кандидатски листи (realizacii_na_izbori, izbori, glasacko_mesto, glas_za_kandidatska_lista, kodovi_za_glasanje, opstini, partii, adresi, kandidatski_listi)
Од горенаведените релации може да се заклучи дека главниот агрегат на доменот е ентитетот gragjani, што е и очекувано имајќи го предвид фактот дека граѓаните се оние кои гласаат и оние кои се гласани како кандидати/членови на кандидатски листи или се појавуваат на изборите како членови на комисија. Секое правно/физичко лице, односно граѓанин или партија кои се појавуваат во системот, имаат своја адреса на седиште/живеалиште. Дополнително, за секое избирачко место за чува неговата адреса. Оттука го согледуваме учеството на ентитетот adresi во три поддомени. Гласачките места (glasacki_mesta), како еден вид поделба за тоа каде се одвива гласањето, учествуваат во релациите со граѓани кои гласаат во одредено место или пак се членови на избирачкиот одбор во одредено место. Исто така, гласовите на граѓаните било да се однесуваат на кандидатура или кандидатска листа, се во релација со избирачкото место во кое се дадени. Документите за идентификација (dokumenti_za_identifikacija) директно се корелирани само со ентитетот gragjani, меѓутоа гледајќи од аспект на примена во изборниот процес и понатамошно генерирање извештаи, практично се неделив дел од целиот домен бидејќи граѓанин кој нема документ за идентификација или истиот е неважечки не може да го оствари правото на глас, па оттука било каква друга евиденција би била невалидна. Партиите (partii) учествуваат во релација со кандидатури и кандидатски листи, како и во коалиции со други партии. Кандидатурите (kandidaturi) или кандидатските листи (kandidatski_listi) поддржани од некоја партија (релација со partii) или самостојно, учествуваат на една инстанца (realizacii_na_izbori) од одреден тип избори (izbori). Бидејќи изборниот модел во нашата држава, според кој се водевме при изработка на проектот, налага два типа избори од аспект на учесниците, одлучивме ентитетот realizacii_na_izbori понатаму да го разграниме на реализации со кандидатури (realizacii_so_kandidaturi) и реализации со кандидатски листи (realizacii_so_kandidatski listi) со можност за препокривање. Ваквата поделба овозможува одделување на специфичните својства и атрибути за секој од типовите на реализации, додека во основа остануваат корелирани со ентитетите кои не зависат од типот, излезноста на граѓаните (glasanja) и изборите на кои се однесува (izbori). Граѓаните својот глас го даваат на одредена реализација на избори (realizacii_na_izbori) за кандидат или кандидатска листа, при што се евидентира нивната излзност (glasanja) во одредено гласачко место (glasacki_mesta) и за одредена реализација (realizacii_na_izbori), додека гласот останува анонимен и корелиран само со гласачкото место и реализациаја на која се гласа (glas_za_kandidat) и (glas_za_kandidatska_lista). По процесот на гласање, учесниците (gragjani) можат да поднесат приговор (prigovori), кој се однесува на одредено гласачко место (glasacki_mesta) за одредена реализација (realizacii_na_izbori). Дополнително, поради потребата од различна релација, ентитетот prigovori понатаму го разделивме на prigovori_od_gragjani и prigovori_od_ucesnici. Со цел да дадеме некаква ознака на граѓаните кои во процесот учествуваат како кандидати или членови на комисија, ентитетот gragjani дисјунктно го разделивме на kandidati и clenovi_na_komisija, при што сите gragjani учествуваат во изборите како гласачи, а остантите зависно од улогата влегуваат во релација со другите ентитети. Поради сензитивноста на податокот, наместо embg како примарен клуч за ентитетот gragjani користиме вештачки идентификатор. За обезбедување поголема безбедност при гласањето, дополнително е додаден ентитетот kodovi_za_glasanje со кој во програмската имплементација се гарантира сигурноста, уникатноста и анонимноста на гласот. Во продолжение следат поединечните нормализации кои како целина го сочинуваат претходно опишаниот модел
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)