wiki:Normalization

Нормализација и подобрувања на дизајнот на базата

Поделба на доменот според типот на евиденција

Бидејќи нашиот модел го користи апликација којашто служи за различни евиденции од областа на реализација на избори, практично е невозможно да извршиме нормализација користејќи една табела во којашто ќе бидат сместени сите атрибути. Затоа решивме да ги прикажеме различните извештаи кои произлегуваат од различните сценарија на примена на моделот и како такви, парцијално да ги нормалзираме и така добиените ентитети да ги поврземе во целина.

Од пооделната нормализација на извештаите кои ги зададовме произлегоа следните ентитети:

  1. Евиденција за избирачки список (gragjani, adresi, dokumenti_za_identifikacija, glasacki_mesta)
  2. Евиденција за поднесени приговори (gragjani, izbori, realizacii_na_izbori, prigovori, dokumenti_za_identifikacija, adresi)
  3. Евиденција за пријавени кандидатури (gragjani, kandidaturi, opstini, partii, izbori, realizacii_na_izbori, dokumenti_za_identifikacija)
  4. Кандидатски листи (kandidatski_listi, partii, izbiracki_edinici, relaizacii_na_izbori, adresi, partii, opstini)
  5. Коалициони партнери (partii, opstini, adresi, koalicii, realizacii_na_izbori, koalicii, izbori, partii_koalicii (M:N - релација))
  6. Членови на комисии - избирачки одбори (gragjani, adresi, realizacii_na_izbori, dokumenti_za_identifikacija, komisii, clenovi_na (M:N - релација), glasacki_mesta)
  7. Излезност на граѓаните на реализација на избори (gragjani, adresi, realizacii_na_izbori, izbori, dokumenti_za_identifikacija, glasanje, glasacko_mesto)
  8. Резултати од избори со кандидатури (realizacii_na_izbori, izbori, glasacko_mesto, glas_za_kandidatura, kodovi_za_glasanje, opstini, partii, adresi, kandidaturi)
  9. Резултати од избори со кандидатски листи (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)

Last modified 5 months ago Last modified on 06/18/24 00:30:12
Note: See TracWiki for help on using the wiki.