wiki:Normalization

Version 8 (modified by 193140, 2 years ago) ( diff )

--

Нормализација

Функциски зависности

R = {id_admin, ime_admin, prezime_admin, email_admin, password_admin, id_nastavnik, ime_nastavnik, prezime_nastavnik, opis_nastavnik, email_nastavnik, password_nastavnik, telefonski_broj_nastavnik, id_ucenik, ime_ucenik, prezime_ucenik, opis_ucenik, email_ucenik, password_ucenik, telefonski_broj_ucenik, id_kvalifikacija, dokument_kvalifikacija, id_predmet, ime_predmet, id_cas, vreme_pocetk_cas, tema_cas, id_domasno, opis_domasno, id_zainteresiran_za, datum_zainteresiran, id_plakanja, iznos, id_slusanje, plateno, id_ucenici_domasno, dali_zavrsena_domasna, id_predava_na, cena_po_cas, broj_casovi_po_dogovor, id_predava_predmet, opis_predava_predmet}

F = {id_admin -> ime_admin, id_admin -> prezime_admin, id_admin -> email_admin, id_admin -> password_admin, id_admin -> id_nastavnik, id_admin -> id_kvalifikacija, id_admin -> id_predmet,

id_nastavnik -> ime_nastavnik, id_nastavnik -> prezime_nastavnik, id_nastavnik -> opis_nastavnik, id_nastavnik -> email_nastavnik, id_nastavnik -> password_nastavnik, id_nastavnik -> telefonski_broj_nastavnik, id_nastavnik -> id_kvalifikacija, id_nastavnik -> id_cas, id_nastavnik -> id_domasno, id_nastavnik -> id_plakjanja, id_nastavnik -> id_predava_na, id_nastavnik -> id_predava_predmet,

id_ucenik -> ime_ucenik, id_ucenik -> prezime_ucenik, id_ucenik -> opis_ucenik, id_ucenik -> email_ucenik, id_ucenik -> password_ucenik, id_ucenik -> telefonski_broj_ucenik, id_ucenik -> id_zainteresiran_za, id_ucenik -> id_slusanje, id_ucenik -> id_ucenici_domasno, id_ucenik -> id_predava_na, id_kvalifikacija -> dokument_kvalifikacija,

id_predmet -> ime_predmet, id_predmet -> id_cas, id_predmet -> id_zainteresiran_za, id_predmet -> id_predava_predmet,

id_cas -> vreme_pocetok_cas, id_cas -> tema_cas, id_cas -> id_domasno, id_cas -> id_slusanje,

id_domasno -> opis_domasno, id_domasno -> id_ucenici_domasno, id_zainteresiran_za -> datum_zainteresiran, id_plakanja -> iznos, id_plakanja -> id_slusanje, id_slusanje -> plateno, id_ucenici_domasno -> dali_zavrsena, id_predava_na -> cena_po_cas, id_predava_na -> broj_casovi_po_dogovor, id_predava_predmet -> opis}

Fc = {id_admin -> ime_admin, id_admin -> prezime_admin, id_admin -> email_admin, id_admin -> password_admin, id_admin -> id_nastavnik, id_admin -> id_predmet, id_nastavnik -> ime_nastavnik, id_nastavnik -> prezime_nastavnik, id_nastavnik -> opis_nastavnik, id_nastavnik -> email_nastavnik, id_nastavnik -> password_nastavnik, id_nastavnik -> telefonski_broj_nastavnik, id_nastavnik -> id_kvalifikacija, id_nastavnik -> id_cas, id_nastavnik -> id_plakjanja, id_nastavnik -> id_predava_na, id_nastavnik -> id_predava_predmet, id_ucenik -> ime_ucenik, id_ucenik -> prezime_ucenik, id_ucenik -> opis_ucenik, id_ucenik -> email_ucenik, id_ucenik -> password_ucenik, id_ucenik -> telefonski_broj_ucenik, id_ucenik -> id_zainteresiran_za, id_ucenik -> id_slusanje, id_ucenik -> id_ucenici_domasno, id_ucenik -> id_predava_na, id_kvalifikacija -> dokument_kvalifikacija, id_predmet -> ime_predmet, id_predmet -> id_cas, id_predmet -> id_zainteresiran_za, id_predmet -> id_predava_predmet, id_cas -> vreme_pocetok_cas, id_cas -> tema_cas, id_cas -> id_domasno, id_cas -> id_slusanje, id_domasno -> opis_domasno, id_domasno -> id_ucenici_domasno, id_zainteresiran_za -> datum_zainteresiran, id_plakanja -> iznos, id_plakanja -> id_slusanje, id_slusanje -> plateno, id_ucenici_domasno -> dali_zavrsena, id_predava_na -> cena_po_cas, id_predava_na -> broj_casovi_po_dogovor, id_predava_predmet -> opis}

Нормална форма

Врз основа на горенаведените функциски зависности, нашиот актуелен дизајн се наоѓа во прва н.ф., бидејќи ако го земеме каднидат клучот, ќе видеме дека имаме подмножество од кандидат клучот што покажува кон непримарен атрибут. На пример ако го земем id_admin, што претставува подможество од кандидат клучот ќе видеме дека ги влечи непримарните атрибути како ime_admin, prezime_admin, email_admin итн. Заради ваквите зависности кажуваме дека нашиот актуелен дизајн е во 1Н.Ф.

Декомпозиција до највисока можна нормална форма

За започнување со декомпозиција за почеток го гледаме множеството атрибути кои ја сочинуваат нашата релација:
R = {id_admin, ime_admin, prezime_admin, email_admin, password_admin, id_nastavnik, ime_nastavnik, prezime_nastavnik, opis_nastavnik, email_nastavnik, password_nastavnik, telefonski_broj_nastavnik, id_ucenik, ime_ucenik, prezime_ucenik, opis_ucenik, email_ucenik, password_ucenik, telefonski_broj_ucenik, id_kvalifikacija, dokument_kvalifikacija, id_predmet, ime_predmet, id_cas, vreme_pocetk_cas, tema_cas, id_domasno, opis_domasno, id_zainteresiran_za, datum_zainteresiran, id_plakanja, iznos, id_slusanje, plateno, id_ucenici_domasno, dali_zavrsena_domasna, id_predava_na, cena_po_cas, broj_casovi_po_dogovor, id_predava_predmet, opis_predava_predmet}
Потоа мораме да пронајдеме кандидат клуч и според него да увидеме до кога н.ф., за таа цел ќе ги направиме следните чекори:

id_admin, ime_admin, prezime_admin, email_admin, password_admin, id_nastavnik, ime_nastavnik, prezime_nastavnik, opis_nastavnik, email_nastavnik, password_nastavnik, telefonski_broj_nastavnik, id_ucenik, ime_ucenik, prezime_ucenik, opis_ucenik, email_ucenik, password_ucenik, telefonski_broj_ucenik, id_kvalifikacija, dokument_kvalifikacija, id_predmet, ime_predmet, id_cas, vreme_pocetk_cas, tema_cas, id_domasno, opis_domasno, id_zainteresiran_za, datum_zainteresiran, id_plakanja, iznos, id_slusanje, plateno, id_ucenici_domasno, dali_zavrsena_domasna, id_predava_na, cena_po_cas, broj_casovi_po_dogovor, id_predava_predmet, opis_predava_predmet += {id_admin, ime_admin, prezime_admin, email_admin, password_admin, id_nastavnik, ime_nastavnik, prezime_nastavnik, opis_nastavnik, email_nastavnik, password_nastavnik, telefonski_broj_nastavnik, id_ucenik, ime_ucenik, prezime_ucenik, opis_ucenik, email_ucenik, password_ucenik, telefonski_broj_ucenik, id_kvalifikacija, dokument_kvalifikacija, id_predmet, ime_predmet, id_cas, vreme_pocetk_cas, tema_cas, id_domasno, opis_domasno, id_zainteresiran_za, datum_zainteresiran, id_plakanja, iznos, id_slusanje, plateno, id_ucenici_domasno, dali_zavrsena_domasna, id_predava_na, cena_po_cas, broj_casovi_po_dogovor, id_predava_predmet, opis_predava_predmet} - секој атрибут си се пресликува самиот во себе и така заедно претставуваат супер клуч, но ние треба да стигнеме до идеалиот супер клуч, за да пронајдеме и кандидат клучеви, според горенаведените функциски зависности.

id_admin, id_ucenik += {id_admin, ime_admin, prezime_admin, email_admin, password_admin, id_nastavnik, ime_nastavnik, prezime_nastavnik, opis_nastavnik, email_nastavnik, password_nastavnik, telefonski_broj_nastavnik, id_ucenik, ime_ucenik, prezime_ucenik, opis_ucenik, email_ucenik, password_ucenik, telefonski_broj_ucenik, id_kvalifikacija, dokument_kvalifikacija, id_predmet, ime_predmet, id_cas, vreme_pocetk_cas, tema_cas, id_domasno, opis_domasno, id_zainteresiran_za, datum_zainteresiran, id_plakanja, iznos, id_slusanje, plateno, id_ucenici_domasno, dali_zavrsena_domasna, id_predava_na, cena_po_cas, broj_casovi_po_dogovor, id_predava_predmet, opis_predava_predmet} - според функциските зависности со атрибути од лева страна го добивме следниот супер клуч.

id_admin, id_ucenik

Note: See TracWiki for help on using the wiki.