1.Navrh relacnich schemat
- Klice Na hledani klicu potrebujeme minimalni pokryti, tedy a)Redukovane atributy u zavislosti (ty uz jsou redukovane v zadani), tedy: CDe->N, C->S, SDe->Vy, De->Vi, DeDa->Po, Po->Vy, CDa->Pr b)Odstraneni redundatnich zavislost: Zadne redundantni zavislosti nejsou. Dale nalezneme prvni klic: [code] CSDeVyNDaViPoPr->all /C->S CDeVyNDaViPoPr->all /Po->Vy CDeNDaViPoPr->all /CDe->N CDeDaViPoPr->all /De->Vi CDeDaPoPr->all /DeDa->Po CDeDaPr->all /CDa->Pr CDeDa->all [/code] Tedy mame prvni klic "CDeDa" V minimalnim pokryti ale neexistuje zavislost, ktera by mela prunik jeji prave strany s klicem neprazdny, proto neexistuje dalsi klic.
- Redundantni atributy a zavislost Viz "Klice".
- Minimalni pokryti Viz "Klice".
- BCNF [b]CDeDa[/b]SVyNViPoPr /CDe->N [b]CDe[/b]N ; [b]CDeDa[/b]SVyViPoPr /C->S [b]CDe[/b]N ; [b]C[/b]S ; [b]CDeDa[/b]VyViPoPr /De->Vi [b]CDe[/b]N ; [b]C[/b]S ; [b]De[/b]Vi ; [b]CDeDa[/b]VyPoPr /DeDa->Po [b]CDe[/b]N ; [b]C[/b]S ; [b]De[/b]Vi ; [b]DeDa[/b]Po ; [b]CDeDa[/b]VyPr /CDa->Pr [b]CDe[/b]N ; [b]C[/b]S ; [b]De[/b]Vi ; [b]DeDa[/b]Po ; [b]CDa[/b]Pr ; [b]CDeDa[/b]Vy Schema je v BCNF, pokryti se nezachovalo (bylo by potreba pridat tabulky pro [b]SDe->Vy[/b] a [b]Po->Vy[/b]), dekompozice je bezztratova.
A)
Dotaz:
Kód: Vybrat vše
(( (Zahradnik(cislo_holinek = 14)) * ( (Vypestoval(rok = 2008))(kusu_zasazeno > 0)) ) * Roslina)[skudce]
Kód: Vybrat vše
Zahradnik
selekce(cislo_holinek = 14)
prirozene spojeni
Vypestoval
selekce(rok = 2008)
selekce(kusu_zasazeno > 0)
prirozene spojeni
Rostlina
projekce (skudce)
- vyber relace Zahradnik
- selekce (cislo_holinek)
- vyber relace Vypestoval
- selekce (rok)
- selekce (kusu_zasazeno)
- prirozene spojeni: Zahradnik * Vypestoval
- vyber relace Rostlina
- prirozene spojeni:(Zahradnik*Vypestoval) * Rostlina
- projekce (skudce)
Kód: Vybrat vše
{(jm_zahr, odpracovano_let, specializace, cislo_holinek) |
Zahradnik(jm_zahr, odpracovano_let, specializace, cislo_holinek) &
non ( Ex jm_rostliny Ex zalivka Ex max_vek Ex skudce
( Rostlina(jm_rostliny, zalivka, max_vek, skudce) &
max_vek > 1 &
Ex kusu_zasazeno Ex kusu_uhynulo
( Vypestoval(jm_zahr, jm_rostliny, 2008, kusu_zasazeno, kusu_uhynulo) &
kusu_uhynulo > 0 )
)
}