Kodulehed
[380] - Andmebaasid I (ITI0206) (kevad 2021)
Esiletöstetud Kiirvalik
Lisainfo Kõige olulisemate tegevuste kiirvalik. Failide saatmiseks valige Vastamine alt sobiv ülesanne.
Üldist
Materjalid
LisainfoMaterjalide kataloogid.
Värvilised mummud tähistavad hinnangulist kataloogide lugemise vajadust. Roheline - suurim, kollane - keskmine, punane või mummuta - väikseim
Isiklik
Lisainfo Info ainult Sulle - teised kasutajad seda ei näe
Abi
Lisainfo Võimalus küsida õppejõult abi (nagu foorum, kus saab küsida küsimusi ja kommenteerida vastuseid)
Mitmesugust
Abi / Kasutajatugi / Andmebaasi kavandamise sisulised küsimused

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Erki Eessaar (27.10.2021 01:54):
Mida kujundab endast elementaarvõtme normaalkuju (EVNK)?
Vastus:
Kui ma vaatan C.J Date ja J. Celko töid, siis nad mainivad seda normaalkuju lühidalt, ajaloolise tagasivaate ja esitluse täielikkuse huvides. C.J. Date osundab, et EVNK-le viidatakse kirjanduses vähe.

EVNK on kolmanda normaalkuju (3NK) ja Boyce/Coddi normaalkuju (BCNK) vahel - kui tabel on elementaarvõtme normaalkujul, siis on see ka kolmandal normaalkujul. Eesmärk on ikkagi jõuda Boyce/Coddi normaalkujuni. Muide, see artikkel, kus EVNK välja pakutakse, annab head 3NK ja BCNK definitsioonid. EVNK käsitleb olukorda, kui tabelil on rohkem kui üks liitvõti ja need võtmed osaliselt kattuvad (st neil on ühiseid veerge). Sellisel juhul võib kattuvates veergudes olla korduvaid andmeid.

C. J. Date defineerib EVNK järgnevalt: "Tabel on elementaarvõtme normaalkujul (EVNK) siis ja ainult siis kui iga mittetriviaalse funktsionaalse sõltuvuse X=>Y korral on kas
a) X tabeli supervõti või
b) Y on mõne elementaarvõtme alamvõti.

K on tabeli T elementaarvõti siis ja ainult siis kui tabelis T on selline veerg V, mille puhul funktsionaalne sõltuvus K=>{V} on mittetriviaalne ja täielik." (https://learning.oreilly.com/library/view/database-design-and/9781449330187/ch13.html#concluding_remarks-id4)

J. Celko esitab tabeli sellele normaalkujule viimise kohta näite.
https://learning.oreilly.com/library/view/joe-celkos-sql/9780123693792/9780123693792_ch02lev1sec5.html
 
Aine_deklareerimine (yliopilaskood, ainekood, aine_nimetus)
Primaarvõti (yliopilaskood, ainekood)
Alternatiivvõti (yliopilaskood, aine_nimetus)

Mittetriviaalsed täielikud funktsionaalsed sõltuvused selles tabelis:
(yliopilaskood, ainekood) => aine_nimetus
(yliopilaskood, aine_nimetus) => ainekood
ainekood=>aine_nimetus
aine_nimetus=>ainekood

Ülekanduvaid sõltuvusi selles tabelis ei ole ja seega on see tabel kolmandal normaalkujul.

Leidub funktsionaalseid sõltuvusi, mille determinant ei ole kandidaatvõti ning seega pole see Boyce/Coddi normaalkujul.
ainekood=>aine_nimetus
aine_nimetus=>ainekood

Lähemal vaatlemisel ilmneb, et tabelis võivad ainete andmed olla erinevates ridades dubleeritud, st selles tabelis on andmete liiasust, mida saaks täiendava normaliseerimisega vähendada.

Tabeli elementaarvõtmed on minu arusaamise kohaselt.
(yliopilaskood, ainekood)
(sest leidub veerg aine_nimetus, nii et (yliopilaskood, ainekood) => aine_nimetus)
(yliopilaskood, aine_nimetus)
(sest leidub veerg ainekood, nii et (yliopilaskood, aine_nimetus) => ainekood)

Need on kandidaatvõtmed, st nende atribuutide pärisalamhulk ei ole enam võti. Järelikult eelnevalt välja kirjutatud neljast funktsionaalsest sõltuvusest kaks viimast ei rahulda EVNK tingimusi.

Lahendus oleks luua tabelid

Aine (ainekood, aine_nimetus)
Primaarvõti (ainekood)
Alternatiivvõti (aine_nimetus)

Aine_deklareerimine (yliopilaskood, ainekood)
Primaarvõti (yliopilaskood, ainekood)
Välisvõti (ainekood) Viitab Aine (ainekood)

Need tabelid on ka BCNK-l.

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!