Úvod do databázových systémů
Cvičení 12 Ing. Martin Zwierzyna
Základní pojmy • Redundance • Stejná data jsou uložena v databázi na více místech, zbytečně se opakují
• Řešení: • Minimalizace redundance
Základní pojmy • Konzistence • Pří výskytu redundance je nutné zajistit, aby byla všude uložena stejná data
• Řešení: • Zajištění konzistence dat
Základní pojmy • Integrita • Data jsou aktuální a představují skutečný svět
• Řešení: • Zajištění integrity dat
Normální formy • 1. Normální forma • Relační schéma musí obsahovat pouze atomické atributy Rodné číslo
Jméno
Datum narození
Adresa
9999
Alena Nová
1. 1. 1947
Slezská 36, Český Těšín, 73701
4444
Petr Starý
21. 4. 1957
Ostravská 1, Ostrava-Poruba, 77147
Normální formy • 1. Normální forma • Relační schéma musí obsahovat pouze atomické atributy Rodné číslo
Jméno
Datum narození
Adresa
9999
Alena Nová
1. 1. 1947
Slezská 36, Český Těšín, 73701
4444
Petr Starý
21. 4. 1957
Ostravská 1, Ostrava-Poruba, 77147 NE!!!
Normální formy • 1. Normální forma • Relační schéma musí obsahovat pouze atomické atributy Rodné Jméno Příjmení číslo
Datum narození
Ulice
Město
PSČ
9999
Alena
Nová
1. 1. 1947
Slezská 36
Český Těšín
73701
4444
Petr
Starý
21. 4. 1957 Ostravská 1
Ostrava-Poruba
77147
Normální formy • 1. Normální forma • Relační schéma musí obsahovat pouze atomické atributy Rodné Jméno Příjmení číslo
Datum narození
Ulice
Město
PSČ
9999
Alena
Nová
1. 1. 1947
Slezská 36
Český Těšín
73701
4444
Petr
Starý
21. 4. 1957 Ostravská 1
Ostrava-Poruba
77147
ANO!!!
Normální formy • 2. Normální forma • Relační schéma musí být v 1. NF a každý sekundární atribut je plně závislý na každém klíči schématu Rodn Jmén é o číslo
Příjmen ID Oddělení Název í
Ulice
Město
PSČ
Český Těšín
73701
9999
Alena Nová
1
Středisko
Slezská 36
4444
Petr
2
Pobočka
Ostravská 1 OstravaANO!!! Poruba
Starý
77147
Normální formy • 2. Normální forma • Relační schéma musí být v 1. NF a každý sekundární atribut je plně závislý na každém klíči schématu Rodn Jmén é o číslo
Příjmen ID Oddělení Název í
Ulice
Město
PSČ
Český Těšín
73701
9999
Alena Nová
1
Středisko
Slezská 36
4444
Petr
2
Pobočka
Ostravská 1 OstravaANO!!! Poruba NE!!!
Starý
77147
Normální formy • 2. Normální forma • Relační schéma musí být v 1. NF a každý sekundární atribut je plně závislý na každém klíči schématu ID Oddělení Název
Ulice
Město
PSČ
1
Středisko
Slezská 36
Český Těšín
73701
2
Pobočka
Ostravská 1
OstravaPoruba
77147
Rodné číslo
Jméno
Příjmení
ID Oddělení
9999
Alena
Nová
1
4444
Petr
Starý
2
Normální formy • 2. Normální forma • Relační schéma musí být v 1. NF a každý sekundární atribut je plně závislý na každém klíči schématu ID Oddělení Název
Ulice
Město
PSČ
1
Středisko
Slezská 36
Český Těšín
73701
2
Pobočka
Ostravská 1
OstravaPoruba
77147
Rodné číslo
Jméno
Příjmení
ID Oddělení
9999
Alena
Nová
1
4444
Petr
Starý
2
ANO!!!
Normální formy • 3. Normální forma • Relační schéma musí být v 2. NF a žádný sekundární atribut není tranzitivně závislý na žádném klíči schématu ID Zaměstnance
Pozice
Plat
1
Svářeč
12000
2
Svářeč
12000
3
Účetní
23000
Normální formy • 3. Normální forma • Relační schéma musí být v 2. NF a žádný sekundární atribut není tranzitivně závislý na žádném klíči schématu ID Zaměstnance
Pozice
Plat
1
Svářeč
12000
2
Svářeč
12000
3
Účetní
23000 NE!!!
Normální formy • 3. Normální forma • Relační schéma musí být v 2. NF a žádný sekundární atribut není tranzitivně závislý na žádném klíči schématu ID Zaměstnance
Pozice
1
Pozice
Plat
Svářeč
Svářeč
12000
2
Svářeč
Účetní
23000
3
Účetní
Normální formy • Boyce-Coddova normální forma • Relační schéma je v BCNF, pokud existují závislosti pouze na klíčích • Nesmí být AB → CD a zároveň C → A
Dekompozice • Hledání schématu začíná dekompozicí originálního velkého schématu • Jeden krok dekompozice rozděluje původní schéma na dvě • Pokud R (A) -> R1(B) a R2(C), pak B∪C=A
Dekompozice • Zákon zachování množiny FZ
• Zákon zachování informace
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G}
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
AB→C
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
AB→C
ABDEFG
ABC
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
AB→C
ABDEFG
ABC C→D
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
AB→C
ABDEFG
ABC C→D
?
?
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
C→D
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
C→D
ABCEFG
CD
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
C→D
ABCEFG
CD E→F
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
C→D
ABCEFG
CD E→F
ABCEG
EF
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
C→D
ABCEFG
CD E→F
ABCEG
EF B→E
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
C→D
ABCEFG
CD E→F
ABCEG
EF B→E
ABCG
BE
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
C→D
ABCEFG
CD E→F
ABCEG
EF B→E
BE C→G
ABCG
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
C→D
ABCEFG
CD E→F
ABCEG
EF B→E
BE C→G
ABCG ABC
CG
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
C→D
ABCEFG
CD E→F
ABCEG
EF B→E
BE C→G
ABCG
CG AB→C
ABC
Dekompozice do BCNF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} ABCDEFG
C→D
ABCEFG
CD E→F
ABCEG
EF B→E
BE C→G
ABCG
CG AB→C
ABC
ABC
Dekompozice do BCNF Dekompozicí jsme získali tento rozklad:
R1(CD), R2(EF), R3(BE), R4(CG), R5(ABC)
Dekompozice do 3.NF 1. Spojení levých a pravých stran FZ 2. Spojení relací se stejnými levými stranami 3. Spojení relací se stejnými klíči 4. Přidání nezpracovaného atributu do kterékoliv relace 5. Není-li klíč obsažen v žádné z relací, pak vytvoříme novou relaci obsahující atributy klíče
Dekompozice do 3.NF R(A, B, C, D, E, F, G) F: {AB→C, C→D, B→E, E→F, C→G} 1. RO1={R1(ABC), R2(CD), R3(BE), R4(EF), R5(CG)} 2. RO2 = RO1 3. RO3 = RO2 4. RO4 = RO3 5. RO5 = RO4
Děkuji za pozornost