3.1 Adatbázis normalizálása
A normál forma egy relációs adatmodellben lévő reláció olyan tulajdonsága, amely azt redundancia szempontjából jellemzi, ami potenciálisan logikailag hibás mintavételi vagy adatmódosítási eredményekhez vezethet. A normál formát úgy határozzuk meg, mint azon követelmények összességét, amelyeknek egy relációnak (az adatbázis tábláinak) meg kell felelnie.
Az adatbázis-kapcsolatok normál formáknak megfelelő formává alakításának folyamatát normalizálásnak nevezzük. A normalizálás célja az adatbázis szerkezetének olyan formába hozása, amely minimális logikai redundanciát biztosít , és nem célja a teljesítmény csökkentése vagy növelése, illetve az adatbázis fizikai mennyiségének csökkentése vagy növelése .
A normalizálás végső célja az adatbázisban tárolt információk esetleges inkonzisztenciájának csökkentése. A normalizálási folyamat általános célja a következő:
- bizonyos típusú redundancia kizárása;
- javítson ki néhány frissítési anomáliát;
- olyan adatbázis-projekt kidolgozása, amely kellően „jó minőségű” a valós világot reprezentálja, intuitív és jó alapot jelenthet a későbbi bővítéshez;
- a szükséges integritási korlátozások alkalmazási eljárásának egyszerűsítése.
A redundanciát általában úgy küszöböljük ki, hogy a relációkat felbontjuk oly módon, hogy minden relációban csak elsődleges tények tárolódnak (vagyis olyan tények, amelyek nem származnak más tárolt tényekből).
Bár a normalizálási ötletek nagyon hasznosak az adatbázis-tervezésben, semmiképpen sem univerzális vagy kimerítő eszköz az adatbázistervezés minőségének javítására. Ennek az az oka, hogy az adatbázis szerkezetében túl sokféle lehetséges hiba és hiányosság van, amelyeket normalizálással nem lehet kiküszöbölni.
E megfontolások ellenére a normalizálás elmélete a relációs elmélet és gyakorlat igen értékes vívmánya, mivel tudományosan szigorú és ésszerű kritériumokat ad egy adatbázis-projekt minőségére, valamint formális módszereket e minőség javítására. Ez kiemeli a normalizációs elméletet a tisztán empirikus tervezési megközelítések közül, amelyeket más adatmodellek kínálnak. Ezen túlmenően vitatható, hogy az informatika teljes területén gyakorlatilag nincs olyan módszer a tervezési megoldások értékelésére és javítására, amelyek a formai szigor szintjén összevethetők a relációs adatbázisok normalizálásának elméletével.
A normalizálást olykor kritizálják azon az alapon, hogy "ez csak a józan ész", és minden hozzáértő szakember "természetesen" megtervez egy teljesen normalizált adatbázist anélkül, hogy függőségi elméletet kellene alkalmaznia.
Amint azonban Christopher Date professzor megjegyezte, a normalizálás pontosan a józan ész elvei, amelyek egy érett tervezőt vezérelnek, vagyis a normalizálás alapelvei a formalizált józan ész . Mindeközben a józan ész alapelveinek azonosítása és formalizálása igen nehéz feladat, a megoldásban való siker pedig jelentős eredmény.
3.2 Első normál forma
Az első normálforma (1NF) egy reláció alapvető normálformája a relációs adatmodellben.
Egy relációs változó akkor és csak akkor van első normál formában, ha a változó bármely érvényes értékében minden relációs sor pontosan egy értéket tartalmaz mindegyik attribútumhoz.
A relációs modellben a reláció a reláció fogalmának definíciója szerint mindig első normál formában van.
Ami a különböző táblákat illeti, előfordulhat, hogy nem a kapcsolatok helyes ábrázolásai, és ennek megfelelően nem szerepelnek az 1NF-ben. Christopher Date ilyen esetre vonatkozó definíciója szerint egy tábla akkor és csak akkor normalizálódik (egyenértékű, első normál formában van), ha valamilyen reláció közvetlen és igaz reprezentációja. Pontosabban, a kérdéses táblázatnak a következő öt feltételnek kell megfelelnie:
- Nincs fentről lefelé a sorok sorrendje (vagyis a sorok sorrendje nem közvetít semmilyen információt).
- Az oszlopok sorrendje nincs balról jobbra (vagyis az oszlopok sorrendje nem hordoz információt).
- Nincsenek ismétlődő sorok.
- Egy sor és egy oszlop minden metszéspontja pontosan egy értéket tartalmaz a megfelelő tartományból (és semmi mást).
- Minden oszlop "szabályos".
A táblázat összes oszlopának "szabályszerűsége" azt jelenti, hogy a táblázatban nincsenek "rejtett" komponensek, amelyek csak valamilyen speciális operátor meghívásával érhetők el, ahelyett, hogy a szokásos oszlopnevekre hivatkoznának, vagy amelyek mellékhatásokhoz vezetnek a soroknál. vagy táblázatokat szabványos operátorok meghívásakor.
Az eredeti, nem normalizált (vagyis nem valami reláció helyes ábrázolása) tábla:
Munkavállaló | Telefonszám |
---|---|
Ivanov I.I. |
283-56-82 390-57-34 |
Petrov P.P. | 708-62-34 |
Sidorov S.S. |
Egy táblázat 1NF-re redukálva, ami valamilyen reláció helyes ábrázolása:
Munkavállaló | Telefonszám |
---|---|
Ivanov I.I. | 283-56-82 |
Ivanov I.I. | 390-57-34 |
Petrov P.P. | 708-62-34 |
3.3 Második normál forma
Egy relációs változó akkor és csak akkor van második normál formában, ha az első normál formában van, és minden nem kulcsjellemző attribútum redukálhatatlanul függ (minden) jelölt kulcsától .
Az irreducibilitás azt jelenti, hogy a potenciális kulcs nem tartalmaz olyan attribútumok kisebb részhalmazát, amelyből ez a funkcionális függőség is származtatható. Az irreducibilis funkcionális függőségre gyakran használják a "teljes funkcionális függőség" egyenértékű fogalmát.
Ha a jelölt kulcs egyszerű, azaz egyetlen attribútumból áll, akkor a tőle való bármilyen funkcionális függés irreducibilis (teljes). Ha a jelölt kulcs összetett kulcs, akkor a második normálforma definíciója szerint a relációban nem lehetnek olyan nem kulcsjellemzők, amelyek az összetett kulcsjelölt kulcs egy részétől függenek.
Példa egy reláció második normálalakra való konvertálására
Legyen a {Vállalati ág, Pozíció} attribútumpár az elsődleges kulcs a következő relációban:
Vállalati fióktelep | Munka megnevezése | Fizetés | Számítógép elérhetősége |
---|---|---|---|
Tomszki fióktelep | Tisztító | 20000 | Nem |
Fióktelep Moszkvában | Programozó | 40000 | Eszik |
Tomszki fióktelep | Programozó | 25000 | Eszik |
Tegyük fel, hogy a fizetés ágtól és beosztástól függ, a számítógép elérhetősége pedig csak a beosztástól.
Létezik egy funkcionális függőség Pozíció -> Számítógép birtoklása, amelyben a bal oldal (determináns) csak egy része az elsődleges kulcsnak, ami sérti a második normálforma feltételét.
A 2NF-re való csökkentéshez az eredeti relációt két relációra kell bontani:
Vállalati fióktelep | Munka megnevezése | Fizetés |
---|---|---|
Tomszki fióktelep | Tisztító | 20000 |
Fióktelep Moszkvában | Programozó | 40000 |
Tomszki fióktelep | Programozó | 25000 |
Munka megnevezése | Számítógép elérhetősége |
---|---|
Tisztító | Nem |
Programozó | Eszik |
Programozó | Eszik |
3.4 Harmadik normál forma (3NF)
Az R relációs változó akkor és csak akkor van a 3NF-ben, ha a következő feltételek igazak:
- Rmásodik normál formában van.
- nincs nem kulcs attribútumRnincs tranzitív funkcionális függésben a jelölt kulcstólR.
Magyarázatok a definícióhoz:
Az R reláció nem kulcs attribútuma olyan attribútum, amely nem tartozik R egyik jelölt kulcsához sem.
A Z attribútumhalmaz funkcionális függése az X attribútumhalmaztól (írva X → Z, ejtsd: „x határozza meg z-t”) tranzitív, ha van olyan Y attribútumkészlet, hogy X → Y és Y → Z. Ebben az esetben az X, Y és Z halmazok egyike sem részhalmaza a másiknak, azaz az X → Z, X → Y és Y → Z funkcionális függőségek nem triviálisak, és nincs Y → X funkcionális függőség sem.
A 3NF meghatározását, amely egyenértékű Coddéval, de másképpen fogalmazott, Carlo Zaniolo adta meg 1982-ben. Eszerint egy relációs változó akkor és csak akkor van a 3NF-ben, ha minden X → A funkcionális függősége teljesíti az alábbi feltételek legalább egyikét:
- X A-t tartalmaz (azaz X → A egy triviális funkcionális függőség)
- X - szuper kulcs
- Az A egy kulcsattribútum (azaz A egy jelölt kulcs része).
Zaniolo definíciója egyértelműen meghatározza a különbséget a 3NF és a szigorúbb Boyce-Codd normálforma (BCNF) között: a BCNF kizárja a harmadik feltételt ("A kulcsattribútum").
A Codd-féle 3NF definíció emlékezetes és hagyományosan leíró összefoglalását Bill Kent adta: minden nem kulcs attribútum "információt kell nyújtson a kulcsról, a teljes kulcsról, és csak a kulcsról " .
A nem kulcsjellemzők "teljes kulcsától" való függés feltétele biztosítja, hogy a reláció második normál formában legyen; és a feltétele annak, hogy "semmitől, csak a kulcstól" függjenek, az, hogy harmadik normál formában legyenek.
Chris Date úgy beszél Kent összefoglalójáról, mint a 3NF "intuitívan vonzó tulajdonságáról", és megjegyzi, hogy kis módosítással a szigorúbb Boyce-Codd normálforma definíciójaként is szolgálhat: "minden attribútumnak információt kell szolgáltatnia egy kulcsról , egy teljes kulcs, és semmi más, csak a kulcs.
A 3NF definíció Kent-féle változata kevésbé szigorú, mint a Data formuláció Boyce-Codd normál formájú változata, mivel az előbbi csak azt mondja ki, hogy a nem kulcsjellemzők kulcsoktól függenek.
Az elsődleges attribútumoknak (amelyek kulcsok vagy azok részei) egyáltalán nem kell funkcionálisan függőknek lenniük; mindegyik információt nyújt a kulcsról úgy, hogy megadja magát a kulcsot vagy annak egy részét. Itt meg kell jegyezni, hogy ez a szabály csak nem kulcs attribútumokra érvényes, mivel az összes attribútumra történő alkalmazása teljesen letiltja az összes összetett alternatív kulcsot, mivel egy ilyen kulcs minden eleme megsérti a "teljes kulcs" feltételt.
Tekintsük példaként az R1 relációs változót:
Munkavállaló | Osztály | telefon |
---|---|---|
Grishin | Könyvelés | 11-22-33 |
Vasziljev | Könyvelés | 11-22-33 |
Petrov | Kínálat | 44-55-66 |
Minden alkalmazott kizárólag egy osztályhoz tartozik; minden osztálynak egyetlen telefonja van. Az Employee attribútum az elsődleges kulcs. Az alkalmazottaknak nincs személyes telefonjuk, és az alkalmazott telefonszáma kizárólag az osztálytól függ.
A példában a következő funkcionális függőségek léteznek: Alkalmazott → Osztály, Osztály → Telefon, Alkalmazott → Telefon.
Az R1 relációs változó a második normál formában van, mivel mindegyik attribútumnak van egy redukálhatatlan funkcionális függősége a potenciális kulcsfontosságú alkalmazotttól.
A Munkavállaló → Telefon kapcsolat tranzitív, így a kapcsolat nincs harmadik normál formában.
Az R1 felosztása két relációs változót eredményez, amelyek a 3NF-ben vannak:
Osztály | telefon |
---|---|
Könyvelés | 11-22-33 |
Kínálat | 44-55-66 |
Munkavállaló | Osztály |
---|---|
Grishin | Könyvelés |
Vasziljev | Könyvelés |
Petrov | Kínálat |
Az R1 kezdeti relációt szükség esetén könnyen megkaphatjuk az R2 és R3 relációk összekapcsolásának művelete eredményeként.