= Нормализација и подобрувања на дизајнот на базата == Поделба на доменот според типот на евиденција Бидејќи нашиот модел го користи апликација којашто служи за различни евиденции од областа на реализација на избори, практично е невозможно да извршиме нормализација користејќи една табела во којашто ќе бидат сместени сите атрибути. Затоа решивме да ги прикажеме различните извештаи кои произлегуваат од различните сценарија на примена на моделот и како такви, парцијално да ги нормалзираме и така добиените ентитети да ги поврземе во целина. Од пооделната нормализација на извештаите кои ги зададовме произлегоа следните ентитети: 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)