1.Navrh relacnich schemat
- Klice Na hledani klicu potrebujeme minimalni pokryti, tedy a)Kanonicke pokryti F->D, F->U, F->Z, FK->R, FR->C, FR->D, FR->K, FR->U, FR->Z, K->C, D->Z, Z->D, Z->U b)Redukovane atributy u zavislosti, tedy: F->D, F->U, F->Z, FK->R, FR->C, FR->K, K->C, D->Z, Z->D, Z->U c)Odstraneni redundatnich zavislost: F->Z, FK->R, FR->K, K->C, D->Z, Z->D, Z->U Zavislosti z "c)" tvori minimalni pokryti. Dale nalezneme prvni klic: [code] CDFKRUZ->all /F->DUZ CFKR->all /FK->R CFK->all /K->C FK->all [/code] Tedy mame prvni klic "FK" Nalezneme zavislost FR->K, ktera nema prazdny prunik prave strany a prvniho klice. Redukujeme: [code] FR->all [/code] Druhy klic je FR. Zadne dalsi klice nejsou.
- Redundantni atributy a zavislost Viz "Klice".
- Minimalni pokryti Viz "Klice".
- Synteza Nejprve sloucime FZ z minimalniho pokryti podle levych stran, tedy: F->Z, FK->R, FR->K, K->C, D->Z, Z->DU Nyni tabulky podle FZ: [b]F[/b]Z, [b]FK[/b]R, [b]FR[/b]K, [b]K[/b]C, [b]D[/b]Z, [b]Z[/b]DU Synteza prevedla do 3NF (BCNF vadi ve FRK, ze FK->R), pokryti zavislosti synteza zachovava. Bezztratovost zachovana diky tabulce obsahujici klic.
A)
Dotaz:
Kód: Vybrat vše
((TvKanal*Vysilani)*Porad)[Nazev, Kategorie] % Porad[Kategorie]
Strom:
Kód: Vybrat vše
TvKanal
prirozene spojeni
Vysilani
prirozene spojeni
Porad
projekce (nazev, kategorie)
deleni
Porad
projekce (kategorie)
- prirozene spojeni (TvKanal, Vysilani)
- prirozene spojeni (Porad)
- projekce (nazev, kategorie)
- projekce (kategorie)
- deleni
Porady, ktere se vysilaji na kanalech, ktere nejsou v relaci TvKanal nebo se na kanalech z relace TvKanal nevysilaji (nejsou v relaci Vysilani).
Dotaz neni bezpecny - obsahuje neomezene ohodnoceni promennych kvuli FA (vyskyt symbolu "pro vsechny").
Bezpecny dotaz je:
Kód: Vybrat vše
{(o) | Ex minutaz Ex kategorie ( Porad(o, minutaz, kategorie) & non ( Ex n ( (Ex vlastnik TvKanal(n, vlastnik)) & (Ex datum Vysilani(n, o, datum)) ))) }