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:

R
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:

R1
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
R2
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:

R1
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:

R2
Osztály telefon
Könyvelés 11-22-33
Kínálat 44-55-66

R3
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.