Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice)



Podobné dokumenty
5. Formalizace návrhu databáze

5. Formalizace návrhu databáze

Relační datový model. Integritní omezení. Normální formy Návrh IS. funkční závislosti multizávislosti inkluzní závislosti

Úvod do databázových systémů 10. cvičení

NORMALIZACE Část 2 1

Databáze I. 4. přednáška. Helena Palovská

Úvod do databázových systémů. Cvičení 12 Ing. Martin Zwierzyna

Kapitola 6: Omezení integrity. Omezení domény

Databázové systémy Tomáš Skopal

Úvod do databázových systémů

Databáze I. Přednáška 3

Databázové systémy. Úvod do teorie normalizace. Vilém Vychodil

Databázové systémy Tomáš Skopal

Teorie zpracování dat

Databázové systémy. Cvičení 3

Inovace tohoto kurzu byla spolufinancována z Evropského sociálního fondu a státního rozpočtu České republiky.

7. Normální formy. PŘ: POJIŠŤOVNA Povinné ručení relace Platby

DBS Normální formy, normalizace

Obsah přednášky. Databázové systémy. Normalizace relací. Normalizace relací. Normalizace relací. Normalizace relací

Kvalita relačního schématu, normalizace

DATABÁZOVÝ SYSTÉM Proč databázový systém? Vrstvy modelování Konceptuální datové modelování

UDBS Cvičení 10 Funkční závislosti

Databáze. Logický model DB. David Hoksza

4IT218 Databáze. 4IT218 Databáze

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS

RELAČNÍ DATABÁZOVÉ SYSTÉMY

TÉMATICKÝ OKRUH Teorie zpracování dat, Databázové a informační systémy a Teorie informačních systémů

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML

Primární klíč, cizí klíč, referenční integrita, pravidla normalizace, relace

Analýza a modelování dat 3. přednáška. Helena Palovská

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

Úvod do databázových systémů

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Materiál byl vytvořen v rámci projektu Nové výzvy, nové příležitosti, nová škola

11. blok Normalizace. Studijní cíl

Databázové a informační systémy

Fakulta elektrotechniky a informatiky Vysoká škola báňská - Technická univerzita Ostrava. Úvod do databázových systémů 2012/2013 IS MHD

Terminologie v relačním modelu

UČEBNÍ TEXTY OSTRAVSKÉ UNIVERZITY. Přírodovědecká fakulta RELAČNÍ DATABÁZE (DISTANČNÍ VÝUKOVÁ OPORA) Zdeňka Telnarová. Aktualizovaná verze 2006

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

J. Zendulka: Databázové systémy 4 Relační model dat 1

Kapitola 3: Relační model. Základní struktura. Relační schéma. Instance relace

Kapitola 2: Entitně-vztahový model (Entity-Relationship model) Množiny entit (entitní množiny) Atributy

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Normalizace rela ního schématu

Relační model dat (Codd 1970)

Algoritmy na ohodnoceném grafu

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

IV113 Validace a verifikace. Převod LTL formule na Büchi automat. Jiří Barnat

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Zadání. Slovníček pojmů. Otázka 19 A7B36DBS

Návrh databázového modelu

4. Relační model dat. J. Zendulka: Databázové systémy 4 Relační model dat 1

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

Strukturované metodologie

Střední průmyslová škola Zlín

Databáze Bc. Veronika Tomsová

Datum narození. Obor: Informační management. ZÁZNAM ZKUŠEBNÍ KOMISE Počet bodů. Varianta: 2421 TEST STUDIJNÍCH PŘEDPOKLADŮ 4 strany 1.

Implementace LL(1) překladů

Relační model reprezentuje databázi jako soubor relací. Kaţdá relace představuje tabulku nebo soubor (ve smyslu soubor na nosiči dat).

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Algoritmy výpočetní geometrie

Michal Valenta DBS Databázové modely 2. prosince / 35

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Řídicí struktury. alg3 1

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou:

DBS Transformace konceptuálního schématu na

Databázové systémy. Cvičení 2

Dijkstrův algoritmus

teorie logických spojek chápaných jako pravdivostní funkce

Základy algoritmizace. Hašování

C8 Relační databáze. 1. Datový model

Databázové systémy BIK-DBS

Otázka č. 1 (bodů za otázku: 4)

Použití dalších heuristik

Unbounded Model Checking

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Algoritmy a datové struktury

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Úvod do databázových systémů. Ing. Jan Šudřich

68. ročník Matematické olympiády 2018/2019

Bezkontextové jazyky 2/3. Bezkontextové jazyky 2 p.1/27

Kurz Databáze. Obsah. Návrh databáze E-R model. Datová analýza, tabulky a vazby. Doc. Ing. Radim Farana, CSc.

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

Téma 9 Databáze úvod, modelovánídat

Normální formy, referenční integrita, návrh databáze, interakce s ostatními jazyky

Sada 1 - Základy programování

Stromy, haldy, prioritní fronty

DATABÁZE A INFORMAČNÍ SYSTÉMY

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Abstraktní datové typy FRONTA

Kapitola 13: Transakce. Koncept transakce. ACID vlastnosti

Okruhy z odborných předmětů

Pokročilá algoritmizace amortizovaná složitost, Fibonacciho halda, počítačová aritmetika

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie.

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL

Základní datové struktury III: Stromy, haldy

Transkript:

- 7.1 - Kapitola 7: Návrh relačních databází Nástrahy návrhu relačních databází Dekompozice (rozklad) Normalizace použitím funkčních závislostí Nástrahy relačního návrhu Návrh relačních databází vyžaduje nalézt nějakou dobrou množinu relačních schémat. Špatný návrh může vést k: Opakování stejné informace Nemožnosti vyjádřit nějakou informaci Cíle návrhu: Zabránit redundanci (opakování) dat Zajistit vyjádření všech vztahů mezi atributy Usnadnit kontrolu porušení integritních omezení databáze při změnách dat Uvažujme relační schéma: schéma-půjček = (jméno-pobočky, město-pobočky, aktiva, jménozákazníka, číslo-půjčky, zůstatek) Redundance (opakování, nadbytečnost): Data o jméno-pobočky, město-pobočky, aktiva jsou opakována pro každou půjčku, kterou pobočka vytvoří Plýtvá místem a komplikuje provádění změn Null hodnoty Nelze uložit informace o pobočce, pokud neexistuje žádná půjčka Lze použít prázdné (null) hodnoty, ale je obtížné s nimi pracovat Rozklad (dekompozice) Rozložit relační schéma schéma-půjček do: pobočka-zákazník-schéma = (jméno-pobočky, město-pobočky, aktiva, jméno-zákazníka) zákazník-půjčka-schéma = (jméno-zákazníka, číslo-půjčky, zůstatek) Všechny atributy původního schématu R se musí objevit v rozkladu (R 1,R 2 ): R = R 1 R 2 Rozklad bezeztrátového spojení Pro všechny možné relace r na schématu R platí r = R1 (r) R2 (r)

- 7.2 - bezeztrátového rozkladu Dekompozice schématu R=(A,B) R 1 =(A) R 2 =(B) A B A B α 1 α 1 α 2 β 2 β 1 r A (r) B (r) A (r) B (r) A B α 1 α 2 β 1 β 2 Cíl navrhnout teorii Rozhodnout, zda-li určité relační schéma je v dobrém tvaru. V případě, že schéma R není v dobrém tvaru, rozlož jej na množinu {R 1,R 2,,R n } takovou, že Každá relace R i je v dobrém tvaru Rozklad je bezeztrátový Tato teorie je založená na: Funkčních závislostech Vícehodnotových závislostech Normalizace pomocí funkčních závislostí Pokud dekomponujeme relační schéma R s množinou funkčních závislostí F do schémat R 1 a R 2, požadujeme aby: Bezeztrátovost spojení: nejméně jedna z následujících závislostí je v F + : R 1 R 2 R 1 R 1 R 2 R 2 Žádná redundance: relační schémata R 1 a R 2 by nejlépe měly být v Boyce- Coddově normální formě nebo ve třetí normální formě. Uchování závislostí: nechť F i je množina závislostí v F +, která obsahuje pouze atributy ve schématu R i, ověříme, že platí: (F 1 F 2 ) + = F + Jinak je test na porušení funkčních závislostí příliš drahý.

- 7.3 - R = (A, B, C) F = {A B, B C} R 1 = (A, B), R 2 = (B, C) Rozklad pomocí bezeztrátového spojení: R 1 R 2 = {B} a B BC Zachovává závislosti R 1 = (A, B), R 2 = (A, C) Rozklad pomocí bezeztrátového spojení: R 1 R 2 = {A} a A AB Nezachovává závislosti (nelze otestovat B C bez výpočtu spojení R 1 R 2 ) Boyce-Coddova normální forma Relační schéma R je v BCNF vzhledem k množině funkčních závislostí F, pokud pro všechny funkční závislosti v F + tvaru α β, kde α R a β R, je splněna alespoň jedna z podmínek: α β je triviální (tj. β α) α je superklíč schématu R R = (A, B, C) F = {A B, B C}, klíč = {A} R není v BCNF Rozklad na R 1 = (A, B), R 2 = (B, C) R 1 a R 2 je v BCNF Splněna podmínka bezeztrátovosti spojení Zachovává závislosti BCNF algoritmus rozkladu result := {R}; done := false; vypočítej F + ; while (not done) do if (existuje schéma R i v result, které není v BCNF) then nechť α β je netriviální funkční závislost, která je splněna na R i taková, že α R i není v F + a α β = ; result := (result - R i ) (R i - β) (α,β); else done := true; fi Poznámka: každé schéma R i je v BCNF a rozklad je bezeztrátový podle spojení.

- 7.4 - rozkladu do BCNF R = (jméno-pobočky, město-pobočky, aktiva, jméno-zákazníka, číslo-půjčky, zůstatek) F = {jméno-pobočky aktiva město-pobočky číslo-půjčky zůstatek jméno-pobočky} Key = {číslo-půjčky, jméno-zákazníka} První rozklad R 1 = (jméno-pobočky, město-pobočky, aktiva) R 2 = (jméno-pobočky, jméno-zákazníka, číslo-půjčky, zůstatek) Druhý rozklad R 1 = (jméno-pobočky, město-pobočky, aktiva) R 3 = (jméno-pobočky, číslo-půjčky, zůstatek) R 4 = (jméno-zákazníka, číslo-půjčky) Výsledný rozklad: R 1, R 3, R 4 BCNF a zachování závislostí Vždy není možné vytvořit rozklad do BCNF normální formy, který zachovává funkční závislosti. R = (J, K, L) F = {JK L L K} Dva kandidátní klíče JK a JL R není v BCNF Jakýkoli rozklad schématu R nebude splňovat závislost: JK L Třetí normální forma Relační schéma R je ve třetí normální formě (3NF), jestliže pro všechny závislosti α β z F + alespoň jedna podmínka z následujících platí: α β je triviální (tj. β α) α je superklíč schématu R každý atribut A v β -α je obsažený v kandidátním klíči schématu R Pokud je relace v BCNF, pak je i v 3NF (protože v BCNF musí platit alespoň jedna z prvních dvou podmínek). : R = (J, K, L) F = {JK L, L K} Dva kandidátní klíče: JK a JL R je ve 3NF JK L JK je superklíč L K K je obsažený v kandidátním klíči

- 7.5 - Algoritmus pro rozklad relačního schématu R do množiny relačních schémat {R 1, R 2,..., R n } zaručuje následující: Každé relační schéma R i je ve 3NF Rozklad splňuje bezeztrátovost spojení Zachovává závislosti 3NF algoritmus pro rozklad Nechť F C je kanonický uzávěr množiny F; i := 0; for each funkční závislost α β z F C do if žádné ze schémat R j, 1 j i neobsahuje αβ then i := i + 1; R i := αβ; if žádné ze schémat R j, 1 j i neobsahuje kandidátní klíč pro R then i := i + 1; R i := libovolný kandidátní klíč pro R; return (R 1, R 2,..., R n ) Relační schéma: schéma-bankéř-info = (jméno-pobočky, jméno-zákazníka, jméno-bankéře, číslo-kanceláře) Funkční závislosti pro toto schéma jsou: jméno-bankéře jméno-pobočky číslo-kanceláře jméno-zákazníka jméno-pobočky jméno-bankéře Klíč schématu je: {jméno-zákazníka, jméno-pobočky} For cyklus v algoritmu způsobí vytvoření schémat: schéma-bankéř-kancelář = (jméno-bankéře, jméno-pobočky, číslo-kanceláře) schéma-bankéř = (jméno-zákazníka, jméno-pobočky, jméno-bankéře) Protože schéma-bankéř obsahuje kandidátní klíč pro schéma-bankéř-info, jsme hotovi s rozkladem. Porovnání BCNF a 3NF Vždy je možné provést rozklad schématu do více schématů, které jsou v 3NF, a rozklad je bezeztrátový závislosti jsou zachovány Vždy je možné provést rozklad schématu do více schématů, které jsou v BCNF, a rozklad je bezeztrátový všechny závislosti nemusí být zachovány

- 7.6 - R = (J, K, L) F = {JK L, L K} Uvažujme následující relaci: J L K j 1 l 1 k 1 j 2 l 1 k 1 j 3 l 1 k 1 null l 2 k 2 Schéma, které je v 3NF ale ne v BCNF, má následující problémy: opakování informací (např. vztah l 1,k 1 ) potřebuje používat prázdné hodnoty (null) (např. pro vyjádření vztahu l 2,k 2 nemáme odpovídající hodnotu pro atribut J). Cíle návrhu Cíle návrhu relačních databází jsou: BCNF bezeztrátové spojení zachování závislostí Pokud předchozího nemůžeme dosáhnout, stačí nám: 3NF bezeztrátové spojení zachování závislostí Další normální formy Existují i další normální formy, zejména: 1. normální forma * Relační schéma je v 1NF tehdy a jen tehdy, pokud každý atribut je atomický (tj. není vícehodnotový) 2. normální forma * Relační schéma je v 2NF právě, když je v 1NF a každý atribut závisí na klíči (primárním klíči), pozn. závislost může být i tranzitivní, závislost musí být na celém klíči nikoli jen na některé jeho části.