105 lines
No EOL
4.9 KiB
Markdown
105 lines
No EOL
4.9 KiB
Markdown
# Normální formy a dekompozice
|
|
|
|
**Úvod**
|
|
- normální formy se vztahují jen k jedné relaci $R$
|
|
- označují se pořadovými čísly, 1NF až 5NF
|
|
- NF s vyšším pořadovým číslem předpokládá, že se relace $R$ nachází v NF s nižším číslem včetně umístění BCNF (meni 3NF a 4NF)
|
|
- platí úmluva, že v návrzích by relace měly splňovat 3NF
|
|
- každá NF odhaluje (popisuje) nějakou diplicitu
|
|
|
|
**První normální forma** (1NF)
|
|
- relace $R$ se nachází v 1NF, pokud všechny komponenty n-tice jsou atomické (řetězce znaků), tj. komponentou nesmí být opět relace
|
|
- poznámka
|
|
- pokud v relačním SŘBD vytvoříme tabulku, je v 1NF, jinak to nejde
|
|
- příklad
|
|
- Přednáška(Předmět, Učitel, Místnost, Hodina, **Zkoušení**)
|
|
- **Zkoušení**(Student, Známka)
|
|
|
|
**Druhá normální forma** (2NF)
|
|
- relace $R$ se nachází v 2NF
|
|
- jestliže je v 1NF
|
|
- každý atribut, který není součástí primárního klíče relace $R$, silně funkčně závisí na primárním klíči relace $R$
|
|
- poznámka
|
|
- hledáme, zda některý neklíčový atribut nezávisí na některém atributu, který tvoří primární klíč
|
|
- pokud je primární klíč tvořen jediným atributem, je 2NF splněna triviálně
|
|
- příklad
|
|
- Dodávka(**č_Dodavatele**, č_Součástky, **Adresa**, Množství)
|
|
- v reálném světě platí funkční závislost č_dodavatele $\to$ adresa
|
|
- adresu převést do samostatné tabulky s dodavatelem
|
|
|
|
**Třetí normální forma** (3NF)
|
|
- relace $R$ se nachází v 3NF
|
|
- jestliže je v 2NF
|
|
- každý atribut, který není součástí primárního klíče relace $R$, není tranzitivně závislý na primárním klíči relace $R$
|
|
- poznámka
|
|
- hledáme, nezávisí některý neklíčový atribut na jiném neklíčovém atributu
|
|
- pokud relace obsahuje maximálně jeden neklíčový atribut, 3NF je splněna triviálně
|
|
- pokud tabulka obsahuje pouze dva sloupce, splňuje 3NF (PK tvořen 1-2 sloupci)
|
|
- příklad
|
|
- Zaměstnanci(č_Zaměstnance, Oddělení, Budova)
|
|
- předpokládejme, že oddělení se nachází jen v jedné budově, poté platí funkční závislost oddělení $\to$ budova
|
|
- budovu převést do samostatné tabulky s oddělením
|
|
|
|
**V jaké NF se nachází relace R?**
|
|
|
|
| A | B | C | D |
|
|
| --- | --- | --- | -------- |
|
|
| a | 1 | A | $\alpha$ |
|
|
| b | 1 | A | $\beta$ |
|
|
| c | 2 | B | $\gamma$ |
|
|
| a | 1 | C | $\delta$ |
|
|
| b | 3 | D | $\alpha$ |
|
|
- primární klíč: **A, C**
|
|
- relace je v 1NF
|
|
- relace není ve 2NF
|
|
- $A \to B$, $A \to D$ - neplatí
|
|
- $C \to B$ - **platí**
|
|
- $C \to D$ - nezkoumáno
|
|
- relace není ve 3NF (není ve 2NF)
|
|
+ primární klíč: **A, D**
|
|
- relace je v 1NF
|
|
- relace je ve 2NF
|
|
- $A \to B$, $A \to C$, $D \to B$, $D \to C$ - neplatí
|
|
- relace není ve 3NF
|
|
- $B \to C$ - neplatí
|
|
- $C \to B$ - platí
|
|
- primární klíč: **B, D**
|
|
- relace je v 1NF
|
|
- relace je ve 2NF
|
|
- $B \to A$, $B \to C$, $D \to A$, $D \to C$ - neplatí
|
|
- relace je ve 3NF
|
|
- $A \to C$, $C \to A$ - neplatí
|
|
|
|
## Dekompozice
|
|
|
|
Převedení relace do 2NF nebo 3NF se provede rozkladem původní relace.
|
|
|
|
**Věta o dekompozici:** Mějme relaci $R$ a tři disjunktní množiny atributů $A, B, C$, které zahrnují všechny atributy relačního schématu relace $R$ a funkční závislosti $B \to C$. Rozložíme-li relaci $R$ na relace $R_{1}(B, C)$ a $R_{2}(A, B)$, potom řekneme, že takto provedená dekompozice je **bezeztrátová**.
|
|
|
|
**Syntéza**
|
|
- Je dána relace $R(A, B, C)$ a její projekce $\Pi_{B,C}(R)$ a $\Pi_{A,B}(R)$. Pak přirozeným spojením těchto projekcí získáme zpět původní relaci $R$.
|
|
- Syntéza chybně provedené dekompozice (tzv. **ztrátové**) vede k situaci, že obvykle získáme nějakou n-tici navíc, ale říkáme tomu **ztrátovost**.
|
|
|
|
## Pokročilé NF
|
|
|
|
**Boyce-Coddova normální forma** (BCNF)
|
|
- relace $R$ se nachází v BCNF
|
|
- jestliže je v 3NF
|
|
- každý determinant je kandidátem klíče
|
|
- poznámka
|
|
- existují různé definice BCNF
|
|
- nalezneme všechny funkční závislosti a u každé určíme, zda jejich determinant může být primárním klíčem a pokud některá nemůže být primárním klíčem, potom relace $R$ není v BCNF
|
|
- příklad
|
|
- Adresář(město, ulice, PSČ)
|
|
- závislosti
|
|
- {město, ulice} $\to$ PSČ
|
|
- PSČ $\to$ město
|
|
- relace je v 3NF, ale druhá funkční závislost brání být v BCNF
|
|
- dekompozice
|
|
- Město(město, PSČ)
|
|
- Ulice(PSČ, ulice)
|
|
|
|
**Multizávislost**
|
|
- z definice funkční závislosti vyplývá, že pokud $A \to B$, pak každá hodnota atributu $A$ určuje (nejvýše) jednu hodnotu atributu $B$
|
|
- **Multizávislost (vícehodnotová závislost)** vyžaduje závislost mezi množinami atributů $A$ a $B$ relačního schématu $X$ relace $R, R(X)$ takovou, že pro každou n-tici hodnot množiny atributů $A$ existuje nějaká množina n-tic hodnot množiny atributů $B$ a tato množina přitom nezávisí na hodnotě ostatních atributů relace $R$
|
|
- značíme $A \to\to B$ |