Databázové systémy. Normálové formy + kandidátní klíče. 2.přednáška

Save this PDF as:
 WORD  PNG  TXT  JPG

Rozměr: px
Začít zobrazení ze stránky:

Download "Databázové systémy. Normálové formy + kandidátní klíče. 2.přednáška"

Transkript

1 Databázové systémy Normálové formy + kandidátní klíče 2.přednáška

2 Struktura databází = struktura samotných relací První aspekt návrhu relační databáze 2 cíle: 1. Obsahový (odpovědi na otázky) 2. Minimalizace redundancí

3 Co je a co není redundance? Č. obj. Jméno prodejce Zaměstnán od Linka Firma Výrobek Ks 1 Nová A Kobe CX Nová A Alexo MD Nová A Tulo DS Míval P Kobe RC Míval P Juko FG Lubo V Hasa CV Bílá F Juko FG-78 20

4 Relace Výrobky na skladě Číslo výrobku Název výrobku Jednotková cena FX12 Zubní pasta Signal 25 DX34 Mýdlo Protex 15 FG22 Šampon HB Bříza 39 DX89 Lak na vlasy T. 79 Relace Objednávky Č.obj. Název výrobku Jednotková cena Množství Datum obj. 1 Mýdlo Protex Lak na vlasy T

5 Schopnosti databáze Závisí na úplnosti systému Závisí na struktuře systému

6 Základní princip Principy normalizace = nástroje, které řídí strukturu dat Tzn. specifikují pravidla pro strukturu dat

7 Bezztrátová dekompozice Relace propojujeme prostřednictvím propojení atributů při tvorbě normalizovaného datového modelu odstraňujeme redundance, přičemž rozdělujeme původní relace tak, aby je opětovně bylo možno spojit bez ztráty informace = bezztrátová dekompozice

8 Č.obj. Datum Dodat dne Firma Adresa Telefon AB Dolní AB Dolní Nenormalizovaná relace Řešení : Kod zak. Firma Adresa Telefon Relace Zákazník + Č.obj. Datum Dodat dne Kod zak. Relace Objednávky

9 Kandidátní (identifikační) klíče Z definice relace víme, že každý její člen (řádek) musí být jedinečný. Pro splnění této podmínky musí platit: U každé relace existuje určitá kombinace atributů, která jednoznačně identifikuje každý jednotlivý vektor souřadnic

10 Kandidátní klíč - pokračování Daná relace může mít víc než jeden kandidátní klíč KK (pak se jeden stanoví jako primární KK a ostatní jako náhradní KK) Jestliže mají dva vektory souřadnic stejnou hodnotu KK, pak reprezentují stejnou entitu Každá relace musí mít alespoň jeden KK Triviálním KK je množina všech atributů

11 Kandidátní klíč - pokračování Jednoduchý KK - skládá se z jediného atributu Složený KK - více atributů KK musí být neredukovatelný (jakákoliv podmnožina z KK již nezabezpečí jednoznačnou identifikaci)

12 Kandidátní klíč - pokračování Pokud je jediný KK příliš rozsáhlý, můžeme zvolit umělý KK s hodnotami vygenerovanými systémem Pozor: umělému KK nelze přikládat žádný jiný význam např. číslování atd.

13 Cíl normalizace Odstranění redundance v relaci Existuje 6 normálních forem: 1.NF 2.NF 3.NF Boyce/Coddova NF 4.NF 5.NF

14 První normální forma Relace je v 1.NF, pokud všechny její atributy jsou definovány nad skalárními obory hodnot. (každý atribut je dále nedělitelný)

15 První normální forma Jméno Obec Okres Kraj Petr Poupa Klatovy Klatovy Plzeňský Josef Pokorný Železná Ruda Klatovy Plzeňský Antonín Mokrý Zdice Beroun Středočeský Ladislav Lejbl Broumy Beroun Středočeský Jan Novák Beroun Beroun Středočeský Miroslav Růžička Hradec Králové Hradec Králové Hradec Králové Lucie Hesslerová Doksy Kladno Středočeský Jan Malý Doksy Česká Lípa Liberecký

16 První normální forma Jméno Příjmení Obec Okres Kraj Petr Poupa Klatovy Klatovy Plzeňský Josef Pokorný Železná Ruda Klatovy Plzeňský Antonín Mokrý Zdice Beroun Středočeský Ladislav Lejbl Broumy Beroun Středočeský Jan Novák Beroun Beroun Středočeský Miroslav Růžička Hradec Králové Hradec Králové Hradec Králové Lucie Hesslerová Doksy Kladno Středočeský Jan Malý Doksy Česká Lípa Liberecký

17 První normální forma ID zam. Příjmení Jméno Adresa 1 Novák Petr Luční 534, , Liberec 2 Vodičková Eva Nad lesem 78, , Praha 3 Vítek Vlastimil Potoční 15, , Brno 4 Lukeš Jaroslav Kubánská 235, Liberec ID zam. Příjmení Jméno Ulice Č.p. PSČ Město 1 Novák Petr Luční Liberec 2 Vodičková Eva Nad lesem Praha 3 Vítek Vlastimil Potoční Brno 4 Lukeš Jaroslav Kubánská Liberec

18 Opakovaná skupina hodnot Opakovaná skupina hodnot je typ neskalární hodnoty Tato relace není v 1.NF!!! Č. obj. Kód zákazníka Polož ka 1 Množst ví 1 Položk a 2 Množs tví 2 Položk a 3 Množs tví 3 Polož ka 4 Množs tví 4 1 2

19 Opakovaná skupina hodnot Č. obj. Kód zákazníka Polož ka 1 Množst ví 1 Položk a 2 Množs tví 2 Položk a 3 Množs tví 3 Polož ka 4 Množs tví Č. obj. Položka Množství Č. obj. kód zákazníka 1 +

20 2. normální forma Relace je v 2.NF, pokud je v 1.NF a navíc v relaci existuje atribut A k takový, že hodnoty všech ostatních atributů A i pro i k jsou funkčně závislé na hodnotách atributu A i. Hodnota atributu A i jednoznačně identifikuje popisovaný objekt Atribut A i nazýváme primární klíč Pokud primární klíč v tabulce přirozené neexistuje, můžeme ho do tabulky uměle doplnit (ID)

21 2. normální forma Relace je v 2.NF, pokud je v 1.NF a navíc všechny její atributy jsou závislé na celém kandidátním klíči Tato relace není v 2.NF!!! Název výrobku NV Jméno dodavatele JD Název kategorie NK Telefon dodavatele TD

22 2.NF pokračování Č. výrobku Název výrobku Kategorie Č. dodavatele Jméno dodavatele Telefon

23 2. normální forma Je relace v 2.NF? Jméno Příjmení Obec Okres Kraj Petr Poupa Klatovy Klatovy Plzeňský Josef Pokorný Železná Ruda Klatovy Plzeňský Antonín Mokrý Zdice Beroun Středočeský Ladislav Lejbl Broumy Beroun Středočeský Jan Novák Beroun Beroun Středočeský Miroslav Růžička Hradec Králové Hradec Králové Hradec Králové Lucie Hesslerová Doksy Kladno Středočeský Jan Malý Doksy Česká Lípa Liberecký

24 2. normální forma Není je třeba doplnit ID ID Jméno Příjmení Obec Okres Kraj 1 Petr Poupa Klatovy Klatovy Plzeňský 2 Josef Pokorný Železná Ruda Klatovy Plzeňský 3 Antonín Mokrý Zdice Beroun Středočeský 4 Ladislav Lejbl Broumy Beroun Středočeský 5 Jan Novák Beroun Beroun Středočeský 6 Miroslav Růžička Hradec Králové Hradec Králové Hradec Králové 7 Lucie Hesslerová Doksy Kladno Středočeský 8 Jan Malý Doksy Česká Lípa Liberecký

25 2.NF - pokračování Z předchozího příkladu vidíme, že je lépe nesnažit se vyjádřit více entit v jedné relaci. (menší redundance, možnost zavést nového dodavatele, aniž bychom museli objednat výrobek)

26 3. normální forma Relace je v 3.NF pokud je v 2.NF a navíc v databázi (soustavě tabulek) neexistuje atribut A k, jehož hodnoty by se daly funkčně odvodit z hodnot ostatních atributů. V databázi neexistují redundantní data.

27 3. normální forma Relace je v 3.NF pokud je v 2.NF a navíc všechny její neklíčové atributy jsou vzájemně nezávislé. Př.: Firma, kde z každý region má jednoho obchodního zástupce / prodejce Tato relace není v 3.NF!!! Č.obj. Firma Region příjemce Prodejce

28 3. normální forma Č.obj. Firma Region příjemce Prodejce Č. obj. Firma Region příjemce Region příjemce Prodejce +

29 3. normální forma Je relace v 3.NF? ID Jméno Příjmení Obec Okres Kraj 1 Petr Poupa Klatovy Klatovy Plzeňský 2 Josef Pokorný Železná Ruda Klatovy Plzeňský 3 Antonín Mokrý Zdice Beroun Středočeský 4 Ladislav Lejbl Broumy Beroun Středočeský 5 Jan Novák Beroun Beroun Středočeský 6 Miroslav Růžička Hradec Králové Hradec Králové Hradec Králové 7 Lucie Hesslerová Doksy Kladno Středočeský 8 Jan Malý Doksy Česká Lípa Liberecký

30 3. normální forma Nové tabulky + rozdělit ID Jméno Příjmení Obec 1 Petr Poupa 1 2 Josef Pokorný 2 3 Antonín Mokrý 3 4 Ladislav Lejbl 4 5 Jan Novák 5 6 Miroslav Růžička 6 7 Lucie Hesslerová 7 8 Jan Malý 8 ID_OBCE Jméno Okres 1 Klatovy KT 2 Železná Ruda KT 3 Antonín BE 4 Ladislav BE 5 Jan BE 6 Miroslav HK 7 Lucie KD 8 Jan CL ID_OKR Název Kraj KT Klatovy Plzeňský BE Beroun Středočeský HK Hradec Králové Královéhradecký KD Kladno Středočeský CL Česká Lípa Liberecký

31 Boyce/Coddova NF Jedná se o variaci 3.NF v případě, že relace obsahuje více kandidátních klíčů B/C NF lze aplikovat pouze při splnění následujících podmínek: Relace musí mít 2 nebo více KK Nejméně 2 z KK musí být složené KK se v některých atributech musí překrývat

32 B/C NF - pokračování B/C NF říká, že mezi KK nesmí být žádná funkční závislost Tato relace není v B/C NF!!! Č. dodavatele CD Jméno dodavatele JD Č. výrobku CV Množství M Jednotková cena JC

33 Př.B/C NF - pokračování Mezi CD a JD je funkční závislost, což je porušením pravidel B/C NF. Správný dat. model: Č. dodavatele CD Jméno dodavatele JD ČD Č. výrobku Množství Jedn. cena

34 4. normální forma 4.NF říká, že v jedné relaci se nesmí spojovat nezávislé opakované skupiny Vícehodnotové závislosti (tj. vzájemně nezávislé množiny atributů) musíme vyčlenit do samostatné relace Definice 4 NF: Relace je v 4NF, pokud je v B/C NF a navíc všechny vícehodnotové závislosti jsou zároveň funkčními závislostmi z KK

35 4 NF - příklad Název výrobku Jméno dodavatele Množství v jednotce Siesta ORION 8ks,16ks,32ks Nenormalizovaná relace!! Název výrobku Jméno dodavatele Množství v jednotce Siesta ORION 8ks Siesta ORION 16ks Siesta ORION 32ks Relace v B/C NF. Dvojici vícehodnotové závislosti představují: Název výrobku množství / jméno dodavatele

36 4.NF řešení příkladu Název výrobku SIESTA SIESTA SIESTA Název výrobku SIESTA STUD. PEČEŤ Množství v jednotce 8ks 16ks 32ks Jméno dodavatele ORION ORION Pozn.:4NF má smysl pouze v případě, když atributy mají více hodnot.

37 5. normální forma Týká se poměrně vzácného případu spojené závislosti: Spojená závislost vyjadřuje cyklické omezení: Pokud je Entita 1 spojena s Entitou 2, Entita 2 je spojena s Entitou 3 a Entita 3 je spojena zpětně s Entitou 1, pak všechny 3 entity musí být nutně součástí stejného vektoru hodnot.

38 5 NF - pokračování Př.: Dodavatel dodá Výrobek, Zákazník si objedná Výrobek a Dodavatel dodá něco Zákazníkovi, pak Dodavatel dodává Výrobek Zákazníkovi Dodavatel Výrobek Zákazník Tato relace není v 5 NF!!

39 5 NF - pokračování Řešením příkladu je rozložení spojené závislosti do tří samostatných relací: DODAVATEL, VÝROBEK VÝROBEK, ZÁKAZNÍK DODAVATEL, ZÁKAZNÍK

40 Shrnutí - NF Jedná se o strukturu databází z pohledu normalizace procesů Základní princip je odstranění redundance mechanismem bezztrátové dekompozice tzn. dělením relací bez jakékoli ztráty informací

41 Shrnutí - NF

42 Procvičení Klíč: (město, podnik) Město Podnik Artikl Písek Jitex Textil Písek Elektropřístroj Elektrické ovl. prvky Mladá Boleslav Škoda Automobily Mladá Boleslav Akuma Akumulátory

43 Procvičení Není ve 2.NF, neklíčový atribut musí být závislý na celém klíči Město Podnik Podnik Artikl Písek Písek Mladá Boleslav Mladá Boleslav Jitex Elektropřístroj Škoda Akuma Jitex Textil Elektropřístroj Elektrické ovl. prvky Škoda Automobily Akuma Akumulátory

44 Procvičení Klíč (Os.č.) Os. č. Jmén o Příjme ní Ulice Č.P. Město PSČ Funkce Plat 1 Petr Poupa Krátká 52 Jihlava CEO Josef Cejnar Slepá 1 Praha Senior Consultant 3 Jiří Mokrý Nová 48 Kladno Database Designer 4 Pavel Lejbl Stará 88 Pardubice Junior Developer 5 Petr Malý Uhelná 5 Beroun Junior Developer 6 Aleš Lex Hlavní 99 Beroun Senior Consultant

45 Procvičení Město PSČ Není v 3.NF všechny její neklíčové atributy jsou vzájemně nezávislé Os.č. Jmé no Příjme ní Ulice Č. P. PSČ Funkce Id. f. Jihlava Praha Kladno Pardubice Beroun Funkce Plat 1 Petr Poupa Krátká Josef Cejnar Slepá Jiří Mokrý Nová Pavel Lejbl Stará Petr Malý Uheln á Aleš Lex Hlavní CEO Senior Consultant 3 Database Designer 4 Junior Developer

46 Procvičení Klíče: (hodina, učitel), (hodina, místnost) Přednáška Učitel Místnost Hodina DATS Šrotýř K305 8:00 DATS Šrotýř K305 9:45 UITS Derbek K501 13:15

47 Procvičení Není v 3.BC formě, opakuje se jméno učitele Přednáška Učitel Přednáška Místnost Hodina DATS UITS Šrotýř Derbek DATS K305 8:00 DATS K305 9:45 UITS K501 13:15

48 Konec