Návrh struktury - normalizace Databázové systémy Návrh struktury - normalizace
Návrh struktury databáze Proces návrhu databáze založený na teorii závislostí se nazývá normalizace. - dekompozice dat na jednotlivé tabulky a určení vztahů mezi nimi Problémy špatného návrhu databáze Opakující se informace (redundance) Nemožnost reprezentovat určitou informaci Ztráta informace Složitá kontrola integritních omezení
Funkční závislost X → Y Plná funkční závislost Hodnota atributu relace určuje jednoznačně hodnotu jiného atributu stejné relace X → Y Klient(r_cislo,jmeno,prijmeni,ulice,mesto) Hodnota rodneho cisla jednoznacne určuje hodnoty dalších atributů r_cislo→(jmeno,prijmeni,ulice,mesto) jmeno→(prijmeni,ulice,mesto) Plná funkční závislost Atribut je funkčně závislý na celém složeném atributu a ne jen na některé jeho části.
Tranzitivní závislost Atribut je funkčně závislý na jiném funkčně závislém atributu Ucet(c_uctu,r_cislo,stav,jmeno) Vícehodnotová závislost - multizávislost Hodnota atributu relace určuje jednoznačně množinu hodnot jiného atributu stejné relace nezávisle na hodnotách ostatních atributů. Ucet - r_cislo značí vlastníka účtu, klent ale může mít více adres
Normalizace Potřebné vlastnosti dekompozice - postupná dekompozice dat – transformace tabulky do vhodnějšího tvaru Potřebné vlastnosti dekompozice bezztrátovost při zpětném spojení zachování závislostí odstranění opakování - redundance Bezztrátová dekompozice - spojení tabulek, které vzniknou dekompozicí musí dát přesně původní tabulku
Zachování závislostí - všechny původní závislosti musí být zachovány a snadno kontrolovatelné r_cislo c_uctu stav pobocka jmeni r_cislo c_uctu stav c_uctu pobocka jmeni
Odstranění opakování c_uctu stav pobocka jmeni 4568517 42000 Zarámí 4463 5000000 6585485 75000 T.Bati 2132 8000000 3256151 25000 T.Bati 2132 8000000 ÚČET: POBOČKA: c_uctu stav pobocka nazev jmeni 4568517 42000 Zarámí 4463 T.Bati 2132 5000000 6585485 75000 T.Bati 2132 Zarámí 4463 8000000 3256151 25000 T.Bati 2132
Normální formy - definují požadavky na vlastnosti schématu tabulky z pohledu závislosti mezi atributy Hierarchie normálních forem 1.NF až 3.NF BCNF – (Boyce-Coddova) 4.NF a 5.NF PLATÍ: n-tá normální forma musí splňovat podmínky n-1 normální formy a ještě něco navíc.
1. normální forma – 1NF Tabulka je v první normální formě, právě když všechny její atributy jsou atomické, tj. dále již nedělitelné. Klient JMÉNO PŘÍJMENÍ BYDLIŠTĚ jan novák Ostravská 16, Praha16000 petr nový Svitavská 8, Brno61400 nováček Na bradlech 1147, Ostrava 79002 Správný návrh tabulky, který bude respektovat 1NF bude vypadat následovně: JMÉNO PŘÍJMENÍ ULICE ČÍSLO MĚSTO PSČ jan novák Ostravská 16 Praha 16000 petr nový Svitavská 8 Brno 61400 nováček Na bradlech 1147 Ostrava 79002
2. normální forma – 2NF Tabulka je ve druhé normální formě, právě když splňuje 1NF a navíc každý její neklíčový atribut, je plně funkčně závislý na každém kandidátním klíči. (Tzn. problém 2NF se týká jenom tabulek, kde volíme za primární klíč více položek než jednu.) Ucet1 c_uctu r_cislo stav pobocka jmeni Ucet2 Disponuje c_uctu stav pobocka jmeni r_cislo 4568517 42000 Zarámí 4463 5000000 826111/5267 6585485 75000 T.Bati 2132 8000000 580506/4891 3256151 25000 601012/1224
3. normální forma – 3NF Tabulka je ve třetí normální formě, jestliže je v 2NF a neexistuje žádný neklíčový atribut, který je tranzitivně závislý na některém kandidátním klíči. Ucet1 c_uctu r_cislo stav pobocka jmeni Ucet2 Disponuje c_uctu stav pobocka jmeni r_cislo Ucet3 Disponuje Pobočka c_uctu stav pobocka r_cislo jmeni c_uctu stav pobocka jmeni 4568517 42000 Zarámí 4463 T.Bati 2132 8000000 6585485 75000 5000000 3256151 25000
Boyce-Coddova normální forma Tabulka je v BCNF, jestliže pro každou netriviální funkční závislost X → Y je X superklíčem. - může existovat několik kandidátních klíčů. - kandidátní klíče můžou být složené, - kandidátní klíče se můžou překrývat - 3NF připouší tranzitivní závislosti mezi klíč. atributy Disponuje(r_cislo,c_zakaznika,c_uctu)
4. normální forma – 4NF 5. normální forma – 5NF Tabulka je ve čtvrté normální formě, jestliže pro každou netriviální vícehodnotovou závislost X Y je X superklíčem. Čtvrtá normální forma v podstatě říká, že vícehodnotové závislosti musíme vyčlenit do samostatné tabulky. 5. normální forma – 5NF Tabulka je v páté normální formě, jestliže pro každou netriviální netriviální závislost na spojení je každá množina atributů superklíčem.
Transformace ER diagramu na tabulky relační databáze Hlavní problémy špatného návrhu: opakující se informace (redundance) nemožnost reprezentovat určitou informaci - složitá kontrola integritních omezení
Pravidla transformace Odstranění složených a vícehodnotových atributů (převod do 1NF) Vícehodnotový atribut → slabá entitní množina nebo náhrada pevným počtem opakování
Pravidla transformace Reprezentace silné entitní množiny Reprezentace slabé entitní množiny
Pravidla transformace Reprezentace vztahů
Pravidla transformace Reprezentace ternárních vztahů Generalizace tabulka pro nadtyp + pro podtypy s primárním klíčem nadtypu pouze tabulky pro podtypy i s atributy nadtypu - všechno v jedné tabulce (rozlišení podle prázdné hodnoty)
Př. Spořitelna