od kukmuk » 3. 5. 2009 17:43
Reseni zadani B z 2008-05-21,
http://siret.ms.mff.cuni.cz/skopal/data ... 0508/B.pdf.
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.
2.Dotazovani
A)
Dotaz:
Kód: Vybrat vše
((TvKanal*Vysilani)*Porad)[Nazev, Kategorie] % Porad[Kategorie]
Vrati Nazev pro vsechny TvKanaly vysilajici vsechny kategorie poradu.
Strom:
Kód: Vybrat vše
TvKanal
prirozene spojeni
Vysilani
prirozene spojeni
Porad
projekce (nazev, kategorie)
deleni
Porad
projekce (kategorie)
Poradi:
- prirozene spojeni (TvKanal, Vysilani)
- prirozene spojeni (Porad)
- projekce (nazev, kategorie)
- projekce (kategorie)
- deleni
B)
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)) ))) }
Reseni zadani B z 2008-05-21, [url]http://siret.ms.mff.cuni.cz/skopal/databaze/pis210508/B.pdf[/url].
[b]1.Navrh relacnich schemat[/b]
[list]
[*][b]Klice[/b][/*]
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.
[*][b]Redundantni atributy a zavislost[/b][/*]
Viz "Klice".
[*][b]Minimalni pokryti[/b][/*]
Viz "Klice".
[*][b]Synteza[/b][/*]
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.
[/list]
[b]2.Dotazovani[/b]
[b]A)[/b]
Dotaz:
[code]
((TvKanal*Vysilani)*Porad)[Nazev, Kategorie] % Porad[Kategorie]
[/code]
Vrati Nazev pro vsechny TvKanaly vysilajici vsechny kategorie poradu.
Strom:
[code]
TvKanal
prirozene spojeni
Vysilani
prirozene spojeni
Porad
projekce (nazev, kategorie)
deleni
Porad
projekce (kategorie)
[/code]
Poradi:
[list]
[*]prirozene spojeni (TvKanal, Vysilani)[/*]
[*]prirozene spojeni (Porad)[/*]
[*]projekce (nazev, kategorie)[/*]
[*]projekce (kategorie)[/*]
[*]deleni[/*]
[/list]
[b]B)[/b]
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:
[code]
{(o) | Ex minutaz Ex kategorie ( Porad(o, minutaz, kategorie) & non ( Ex n ( (Ex vlastnik TvKanal(n, vlastnik)) & (Ex datum Vysilani(n, o, datum)) ))) }
[/code]