Anomalita (odvozeno od slova – anomálie – tz. odchylka od normálu, výjnimečnost.) Určitě Jste se dostali při práci do stavu, když bylo potřeba někde vložit nebo smazat data a databáze se zachovala velice podivně. Pojednou Vám pracně sestavené selecty začali vracet úplně jiná data než Jste předpokládali. Prostě vznikla anomálie. Jedne z důvodů může být ten, že při sestavování datového modelu Jste nedodrželi 6. normální formu.
6.NF je spojena se dvěma pojmy :
Je vazba mezi sloupcem a hodnotou, kterou může sloupec nabývat. Definice hodnoty je v definovaná doménou.
Je vazba mezi dvěma a více sloupci, které jsou klíče (např. cizí klíče).
6.NF říká, že nesmí být intrepretována (zobrazována, použita v dotazech) výhradně přímá vazba mezi klíčem a doménou v případě, že hodnota domény je definována více klíči.
Například : Ať cena výrobku je vázaná na zákazníka. Zákazník – výrobek – cena. Jestli někde zobrazíme, nebo použijeme pouze relaci výrobek-cena, nebo zákazník-cena (Samozřejmě pokud se nejedná o agregace, nebo statistiky jako je průměr, minimum, maximum.), může to vést ke falešným údajům.
Vzorová situace je, když z externího zdroje dostanete data a tyto data máte napasovat do vašeho datového modelu. Například dostanete tyto data :
id | zakaznik_id | vyrobek_id | cena | ||
1 | 1001 | 300 | 4000 | ||
2 | 1007 | 350 | 12000 | ||
3 | 1010 | 400 | 8000 | ||
4 | 1024 | 350 | 12000 | ||
5 | 1035 | 400 | 5400 |
Problém je když máte seznam výrobků spolu s cenou. Kolik stojí výrobek 400, který má jednou 8000 a jednou 5400 ?
Je tady tranzitivní (přenesena – nepřímá) vazba. Cena výrobku se neurčuje dle výrobku, ale dle zákazníka. Takže změníte datový model do 3.NF asi takto.
Kouzlo 6.nf je v tom, ze v rámci tvorby datového modelu musíme uvažovat i tom, jak sestavit datový model tak, abychom předešli tvorbě relací, které neexistují. Což při tvorbě datových skladů se často stává. Když těch záznamů máte miliony a nepohlídate si to, tak dostanete falešná data (anomálii).
Ať importovaná data jsou bez 5. řádku, teda bez insert anomálií.
Zkusme s ní vymazat záznam 1. , protože zákazník výrobek vrátil. Když na touto strukturou uděláme select, zjistíme že už v ní nemáme cenu výrobku 300 a v krajném případě, nám může vypadnout i celý výrobek 300.
Tyto anomálie se mohou vyskytnout v datových skladech DWH a hlavně když s nich odvozujeme pohledy. Tak pozór na to !
6. NF byla objevena jako nadstavba nad 1. až 5. NF a já jsem se s ní buďto přímo nebo nepřímo potkal v datových skladech. Ještě zůstavá jedna anomálie, o které chci napsat. Update anomálie, se kterou jsem se v praxi taky potkal. A netýká se tentokrát přímo datových skladů, ale o tom příště.
SQL Developer
Přečteno 31 978×
Přečteno 19 554×
Přečteno 19 507×
Přečteno 17 277×
Přečteno 16 239×