Databázové systémy Úvod do teorie normalizace Vilém Vychodil KMI/DATA1, Přednáška 12 Databázové systémy V. Vychodil (KMI/DATA1, Přednáška 12) Úvod do teorie normalizace Databázové systémy 1 / 10
Přednáška 12: Přehled 1 Boyce-Coddova normální forma: formulace normální formy, dekompozice na základě funkčních závislostí, normalizace pomocí dekompozice. V. Vychodil (KMI/DATA1, Přednáška 12) Úvod do teorie normalizace Databázové systémy 2 / 10
Opakování: Funkční závislosti (Přednáška 11) Definice (funkční závislost, angl.: functional dependency) Nechť R je relační schéma. Pak funkční závislost nad schématem R je formule ve tvaru A B, kde A, B R. Definice (pravdivost funkční závislosti v datech) Nechť R je relační schéma a D je relace nad schématem R. Pak funkční závislost A B nad schématem R je pravdivá v D, což označujeme D = A B, pokud pro každé n-tice r 1, r 2 D platí: pokud r 1 (A) = r 2 (A), pak r 1 (B) = r 2 (B). V opačném případě říkáme, že A B neplatí v D a píšeme D = A B. Funkční závloslost se nazývá triviální, pokud je pravdivá v každé D. pozorování: A B je triviální p. k. B A V. Vychodil (KMI/DATA1, Přednáška 12) Úvod do teorie normalizace Databázové systémy 3 / 10
Příklad (Funkční závislosti, které jsou/nejsou pravdivé v D) mějme relaci D = {r 1, r 2, r 3, r 4 } nad schématem R = {FOO, BAR, BAZ, QUX}: FOO BAR BAZ QUX 10 22 a 222 10 33 b 333 10 22 a 444 20 33 a 555 r 1 = { FOO, 10, BAR, 22, BAZ, a, QUX, 222 } r 2 = { FOO, 10, BAR, 33, BAZ, b, QUX, 333 } r 3 = { FOO, 10, BAR, 22, BAZ, a, QUX, 444 } r 4 = { FOO, 20, BAR, 33, BAZ, a, QUX, 555 } D = {BAZ} {BAR} (kvůli r 1 a r 4 ) D = {FOO, BAZ} {QUX} (kvůli r 1 a r 3 ) D = {BAR} {BAZ} (kvůli r 2 a r 4 ) D = {FOO, BAR} {BAZ} D = {QUX} S (pro jakékoliv S je triviálně splněná) D = {FOO, BAR} {FOO} V. Vychodil (KMI/DATA1, Přednáška 12) Úvod do teorie normalizace Databázové systémy 4 / 10
Motivace pro normalizaci motivace: Na základě znalostí (funkčních) závislostí v datech je potřeba navrhnout relační schémata v databázi tak, aby se minimalizovala redundance dat a nedocházelo k patologickým situacím souvisejícím s modifikací dat. příklad relace nad nevhodným schématem: problémy: SCHOOL DEAN DEPT HEAD ID COURSE YEAR SCI Blangis AF Durcet 7 QOPT1 2012 SCI. Blangis AF.. Durcet 8.. LASR1. 2012. SCI Blangis CS Curval 6 PAPR1 2012 1 redundance dat (zbytečná duplikace hodnot) 2 anomálie spojená s výmazem dat (výmaz kurzů katedry odstraní vedoucího ) 3 anomálie spojená s aktualizací hodnot (změna vedoucího katedry na víc místech) V. Vychodil (KMI/DATA1, Přednáška 12) Úvod do teorie normalizace Databázové systémy 5 / 10
Boyce-Coddova normální forma zdroj anomálií v předchozím příkladě: některá množina atributů je funkčně závislá na jiné množině atributů, která není nadklíč; zavádíme proto: Definice (Boyce-Coddova normální forma, BCNF) Mějme relační schéma R a teorii Γ. Pak R je v BCNF vzhledem k Γ pokud pro každou netriviální A B Γ platí, že Γ = A R. normalizace pomocí dekompozice: pokud není R v BCNF vzhledem k Γ, pak: 1 vezmeme netriviální A B Γ takovou, že Γ = A R 2 položíme R 1 = A B a Γ 1 = {C R 1 D R 1 C R 1 D Γ} 3 položíme R 2 = A (R \ B) a Γ 2 = {C R 2 D R 2 C R 2 D Γ} 4 proces se pokusíme opakovat pro dvojici R 1 a Γ 1 pokud R 1 není v BCNF vzhledem k Γ 1 a analogicky pro R 2 a Γ 2 poznámka: BCNF nemusí být dosažitelná, více kurs Databázové systémy 2 (!!) V. Vychodil (KMI/DATA1, Přednáška 12) Úvod do teorie normalizace Databázové systémy 6 / 10
Příklad (Schéma, které není v BCNF) Uvažujme relační schéma R = {SCHOOL, DEAN, DEPT, HEAD, ID, COURSE, YEAR} a teorii Γ popisující závislosti mezi atributy: Γ = {{DEPT} {HEAD, SCHOOL, DEAN}, {SCHOOL} {DEAN}, {COURSE, YEAR} {ID}, {ID, YEAR} {DEPT}}. Schéma R není v BCNF vzhledem k Γ, protože (například): {DEPT} {HEAD, SCHOOL, DEAN} Γ, ale [{DEPT}] Γ = {SCHOOL, DEAN, DEPT, HEAD} R, to jest Γ = {DEPT} R, nebo: {SCHOOL} {DEAN} Γ, ale [{SCHOOL}] Γ = {SCHOOL, DEAN} R, to jest Γ = {SCHOOL} R. V. Vychodil (KMI/DATA1, Přednáška 12) Úvod do teorie normalizace Databázové systémy 7 / 10
Příklad (Normalizace schématu pomocí dekompozice) R = {SCHOOL, DEAN, DEPT, HEAD, ID, COURSE, YEAR} Γ = {{DEPT} {HEAD, SCHOOL, DEAN},...} (viz předchozí příklad) R 1 = {SCHOOL, DEAN, DEPT, HEAD} Γ 1 = {{DEPT} {HEAD, SCHOOL, DEAN}, {SCHOOL} {DEAN}} R 11 = {SCHOOL, DEAN} Γ 11 = {{SCHOOL} {DEAN}} R 12 = {SCHOOL, DEPT, HEAD} Γ 12 = {{DEPT} {HEAD, SCHOOL}, {SCHOOL} {}} R 2 = {DEPT, ID, COURSE, YEAR} Γ 2 = {{DEPT} {}, {COURSE, YEAR} {ID}, {ID, YEAR} {DEPT}} R 21 = {DEPT, ID, YEAR} Γ 21 = {{DEPT} {}, {ID, YEAR} {DEPT}} R 22 = {ID, COURSE, YEAR} Γ 22 = {{COURSE, YEAR} {ID}, {ID, YEAR} {}} V. Vychodil (KMI/DATA1, Přednáška 12) Úvod do teorie normalizace Databázové systémy 8 / 10
Příklad (Reprezentace výchozích dat v normalizované databázi) SCHOOL DEAN DEPT HEAD ID COURSE YEAR SCI Blangis AF Durcet 7 QOPT1 2012 SCI Blangis AF Durcet 8 LASR1 2012 SCI Blangis AF Durcet 8 LASR1 2013 SCI Blangis CS Curval 3 ALMA1 2012 SCI Blangis CS Curval 3 ALMA1 2013 SCI Blangis CS Curval 6 DATA1 2012 SCI Blangis CS Curval 6 DATA1 2013 SCI Blangis CS Curval 6 PAPR1 2012 = SCHOOL DEPT HEAD SCHOOL DEAN SCI Blangis SCI AF Durcet SCI CS Curval DEPT ID YEAR AF 7 2012 AF 8 2012 AF 8 2013 CS 3 2012 CS 3 2013 CS 6 2012 CS 6 2013 ID COURSE YEAR 3 ALMA1 2012 3 ALMA1 2013 6 DATA1 2012 6 DATA1 2013 6 PAPR1 2012 7 QOPT1 2012 8 LASR1 2012 8 LASR1 2013 V. Vychodil (KMI/DATA1, Přednáška 12) Úvod do teorie normalizace Databázové systémy 9 / 10
Přednáška 8: Závěr pojmy k zapamatování: anomálie, Boyce-Coddova normální forma, normalizace pomocí dekompozice použité zdroje: Date C. J.: Database in Depth: Relational Theory for Practitioners O Reilly Media 2005, ISBN 978 0596100124 Maier D: Theory of Relational Databases Computer Science Press 1983, ISBN 978 0914894421 Simovici D.: Tenney R.: Relational Database Systems Academic Press 1995, ISBN 978 0126443752 V. Vychodil (KMI/DATA1, Přednáška 12) Úvod do teorie normalizace Databázové systémy 10 / 10