Harmadik normálforma
A harmadik normálforma (3NF) egy adatbázisséma, amely kapcsolódik a relációs adatbázisokat használó normalizáló elvekhez, amely csökkentse a párhuzamos adatokat, elkerülje adatok anomáliáit és hibáit, biztosítják a hivatkozási integritást és egyszerűsítsék az adatkezelést. Edgar F. Codd, angol informatikus definiálta 1971-ben, aki feltalálta az adatbázis-kezelés relációs modelljét.
Az adatbázis-relációról (pl. adatbázis-táblázatról) azt mondják, hogy megfelel a harmadik normálforma szabályainak, ha az összes attribútum (pl. Oszlop (adatbázis)) funkcionálisan csak az elsődleges kulcstól függ. Codd ezt egy relációként határozta meg a második normálformában, ahol az összes nem elsődleges attribútum csak a jelölt kulcsoktól függ, és nincs tranzitív függőségük egy másik kulcstól.[1]
A harmadik normálforma elmulasztásának hipotetikus példája egy kórházi adatbázis lehet, ahol egy betegtáblázat található, amely oszlopot tartalmaz az orvosuk telefonszámához. A telefonszám az orvostól függ, nem pedig a pácienstől, így jobban tárolható lenne az orvosok táblázatában. Az ilyen tervezés negatív eredménye, hogy ha egy orvosnak több betege van, az orvos száma megismétlődik az adatbázisban, ezáltal megnő az adatbeviteli hiba esélye, valamint a szám frissítésének költsége és kockázata, ha ez megváltozik (a harmadik normálformához képest). A normálformának megfelelő adatmodell, amely egy orvos számát csak egyszer tárolja az orvos táblában).
Codd később rájött, hogy a 3NF nem szüntette meg az összes nemkívánatos adatanomáliát, és 1974-ben kifejlesztett egy erősebb verziót ennek kezelésére, amelyet Boyce–Codd-normálformának neveznek.
A harmadik normálforma meghatározása
[szerkesztés]A harmadik normálforma (3NF) az adatbázis normalizálásában használt normálforma. A 3NF-et eredetileg E. F. Codd határozta meg 1971-ben.[2]
Codd definíciója szerint egy tábla akkor és csak akkor szerepel 3NF-ben, ha az alábbi feltételek mindkét feltétele fennáll:
- A relációban R (tábla) második normálformában van (2NF).
- Az R minden nem elsődleges attribútuma nem tranzitív módon függ R minden kulcsától.
Az R nem elsődleges attribútuma olyan tulajdonság, amely nem tartozik egyetlen R. jelölt kulcshoz sem.[3] A tranzitív függőség olyan funkcionális függőség, amelyben X → Z (X meghatározza Z-t) közvetett módon, ha X → Y és Y → Z (de nem így van, ha Y → X).[4]
Carlo Zanilo másképp kifejezett, ám Coddéval ekvivalens 3NF-meghatározást adott meg 1982-ben. Ez a meghatározás kimondja, hogy egy tábla 3NF-ben van akkor és csak akkor, ha az egyes funkcionális függőségek X → A, közül legalább az egyik az alábbi feltételek valamelyike teljesül:[5] [6]
- X tartalmaz (azaz, A jelentése X részhalmaza, jelentése X → A jelentése triviális funkcionális függőség),
- X szuper kulcs,
- Az A \ X minden eleme, az A és X közötti különbség primer attribútum (azaz az A \ X minden attribútuma szerepel valamilyen jelölt kulcsban).
Zaniolo meghatározása világosan érzékelteti a különbséget a 3NF és a szigorúbb Boyce–Codd-normálforma (BCNF) között. A BCNF egyszerűen kiküszöböli a harmadik alternatívát ("Az A \ X minden eleme, az A és X között beállított különbség elsődleges tulajdonság.").
„Semmi, csak a kulcs”
[szerkesztés]Codd 3NF-definíciójának közelítését, párhuzamosan azzal a hagyományos ígérettel, hogy valódi bizonyítékot szolgáltat a bíróságon, Bill Kent közölte: "[minden] kulcs nélküli [attribútumnak] tényt kell szolgáltatnia a kulcsról, az egész kulcsról, és semmi más, csak a kulcs".[7] Gyakori variáció egészíti ki ezt a meghatározást a "segítsen nekem Codd" esküvel.[8]
A „kulcs” meglétének megkövetelése biztosítja, hogy a táblázat 1NF-ben legyen; annak megkövetelése, hogy a nem kulcs attribútumok „az egész kulcstól” függjenek, biztosítja a 2NF-et; további követelmény, hogy a nem kulcs attribútumok „semmi mástól, csak a kulcstól” függjenek, biztosítja a 3NF-et. Noha ez a mondat hasznos emlékirat, az a tény, hogy csak egyetlen kulcsot említ, azt jelenti, hogy meghatároz néhány szükséges, de nem elégséges feltételt a 2. és 3. normálforma kielégítéséhez. A 2NF és a 3NF egyaránt vonatkozik egy tábla összes jelölt kulcsára, és nem csak egy kulcsra.
Chris Date Kent összefoglalójára a 3NF „intuitívan vonzó jellemzéseként” hivatkozik, és megjegyzi, hogy enyhe adaptációval a kissé erősebb Boyce–Codd-normálforma definíciójaként szolgálhat: „Minden attribútumnak tényt kell képviselnie a kulcsról, az egészről. Kulcs, és semmi más, csak a kulcs.”[9] A definíció 3NF verziója gyengébb, mint a Date BCNF variációja, mivel az előbbi csak annak biztosítására irányul, hogy a nem kulcs attribútumok kulcsoktól függjenek. A Prime attribútumok (amelyek kulcsok vagy kulcsok részei) egyáltalán nem lehetnek funkcionálisan függők; mindegyik tényt képvisel a kulccsal kapcsolatban abban az értelemben, hogy magát a kulcsot vagy egészét megadja. (Ez a szabály csak a funkcionálisan függő attribútumokra vonatkozik, mivel az összes attribútumra való alkalmazása implicit módon tiltaná az összetett jelölt kulcsokat, mivel az ilyen kulcsok minden része megsértené az „egész kulcs” záradékot.)
Példa egy 2NF táblára, amely nem felel meg a 3NF követelményeinek:
Verseny | Év | Győztes | A nyertes születési dátuma |
---|---|---|---|
Indiana Invitational | 1998 | Al Fredrickson | 1975. július 21. |
Cleveland Open | 1999 | Bob Albertson | 1968. szeptember 28. |
Des Moines mesterek | 1999 | Al Fredrickson | 1975. július 21. |
Indiana Invitational | 1999 | Chip Masterson | 1977. március 14. |
Mivel a táblázat minden sorában meg kell mondani, hogy ki nyert egy adott tornát egy adott évben, a {Verseny, Év} összetett kulcs egy minimális attribútumkészlet, amely garantálja a sor egyedi azonosítását. Vagyis a {Verseny, Év} jelölt kulcsa az táblának.
A 3NF megsértése azért következik be, mert a nem elsődleges attribútum (a győztes születési dátuma) átmenetileg függ a {Verseny, Év} jelölt kulcstól a nem elsődleges Győztes attribútumon keresztül. Az a tény, hogy a Győztes születési dátuma funkcionálisan függ a Győztestől, kiszolgáltatottá teszi a táblát a logikai következetlenségekkel szemben, mivel semmi sem akadályozza meg, hogy ugyanazt a személyt különböző születési dátumokkal jelenítsék meg különböző nyilvántartásokban.
Annak érdekében, hogy ugyanazokat a tényeket a 3NF megsértése nélkül fejezhessük ki, a táblázatot két részre kell osztani:
|
|
Ezekben a táblázatokban nem fordulhatnak elő frissítési rendellenességek, mert a korábbiaktól eltérően a Győztes most egy jelöltkulcs a második táblázatban, így minden győztes számára csak egy értéket engedélyez a születési dátumhoz.
Számítás
[szerkesztés]Egy relációt mindig fel lehet bontani harmadik normális alakban, vagyis az R relációt átírják az R1 és a vetületekre … Rn, amelynek összekapcsolása egyenlő az eredeti relációval. Továbbá ez a bomlás nem veszít funkcionális függőség, abban az értelemben, hogy minden funkcionális függőség R levezethető funkcionális függőségek tartsa az előrejelzéseket R1 …, Rn. Sőt, egy ilyen bomlás kiszámítható polinomiális időben.
Zaniolo-feltételek levezetése
[szerkesztés]Carlo Zaniolo által 1982-ben felajánlott és a fentiekben megadott 3NF definíciót a következő módon bizonyítják: Legyen X → A nem triviális FD (azaz olyan, ahol X nem tartalmaz A-t), és A legyen kulcsfontosságú attribútum. Legyen Y is R kulcsa. Ezután Y → X.
Normalizálás a 3NF-en túl
[szerkesztés]A legtöbb 3NF tábla mentes a frissítés, beillesztés és törlés rendellenességeitől. A 3NF táblák bizonyos típusait, amelyek a gyakorlatban ritkán találkoznak, érintik az ilyen rendellenességek; ezek olyan táblázatok, amelyek vagy elmaradnak a Boyce–Codd-normálformától (BCNF), vagy ha megfelelnek a BCNF-nek, akkor elmaradnak a magasabb normálformáktól, mint például a 4NF vagy az 5NF.
A jelentési környezetekben történő használat szempontjai
[szerkesztés]Míg a 3NF ideális volt a gépi feldolgozáshoz, az adatmodell szegmentált jellegét emberi felhasználó nehezen tudja feldolgozni. A lekérdezéssel, jelentésekkel és az irányítópultokkal történő elemzést gyakran megkönnyítette egy más típusú adatmodell, amely előre kiszámított elemzéseket szolgáltatott, például trendvonalakat, időszakról napra vonatkozó számításokat (hónapról hónapra, negyedévről negyedévre, évről évre). to-date), kumulatív számítások alapvető statisztikákat (átlag, szórás, mozgó átlagok) és az előző időszak összehasonlítások (évvel ezelőtt hónapja, hete) pl dimenziós modellezést és azon túl dimenziós modellezés, laposabbá csillagok útján Hadoop és adatok a tudomány.[10] [11]
Jegyzetek
[szerkesztés]- ↑ Codd, E. F. "Further Normalization of the Data Base Relational Model", p. 34.
- ↑ Codd, E. F. "Further Normalization of the Data Base Relational Model". (Presented at Courant Computer Science Symposia Series 6, "Data Base Systems", New York City, May 24–25, 1971.) IBM Research Report RJ909 (August 31, 1971). Republished in Randall J. Rustin (ed.), Data Base Systems: Courant Computer Science Symposia Series 6. Prentice-Hall, 1972.
- ↑ Codd, p. 43.
- ↑ Codd, p. 45–46.
- ↑ Zaniolo, Carlo. "A New Normal Form for the Design of Relational Database Schemata". ACM Transactions on Database Systems 7(3), September 1982.
- ↑ Abraham Silberschatz, Henry F. Korth, S. Sudarshan, Database System Concepts (5th edition), p. 276–277.
- ↑ Kent, William. „A Simple Guide to Five Normal Forms in Relational Database Theory”, Communications of the ACM 26 (2), Feb. 1983, pp. 120–125.
- ↑ Egy adatbázis-kezelésről szóló 1989-es könyv szerzője egy hallgatójának tulajdonítja a „Segítsen, Codd” hozzátételt. Diehr, George. Database Management (Scott, Foresman, 1989), p. 331.
- ↑ Date, C. J. An Introduction to Database Systems (7th ed.) (Addison Wesley, 2000), p. 379.
- ↑ Comparisons between Data Warehouse modelling techniques – Roelant Vos. roelantvos.com. (Hozzáférés: 2018. március 5.)
- ↑ Hadoop Data Modeling Lessons | EMC. InFocus Blog | Dell EMC Services, 2014. szeptember 23. (Hozzáférés: 2018. március 5.)
Fordítás
[szerkesztés]Ez a szócikk részben vagy egészben a Third normal form című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
További információk
[szerkesztés]- Litt tippjei: Normalizálás
- Az adatbázis normalizálásának alapjai: Mike Chapple Archiválva 2007. február 5-i dátummal a Wayback Machine-ben
- Bevezetés az adatbázis-normalizálásba, Mike Hillyer
- Útmutató Fred Coulson első 3 normálformájához
- Az adatbázis normalizálásának alapjai a Microsoft által
- Harmadik normálforma egyszerű példákkal az exploreDatabase segítségével