Skip to main content

Hogyan alakítsunk át egy adatbázist a harmadik normál űrlapra (3NF)

Nash 2016 Carp Fishing DVD + Eurobanx 2 Alan Blair Full Movie (Április 2024)

Nash 2016 Carp Fishing DVD + Eurobanx 2 Alan Blair Full Movie (Április 2024)
Anonim

A harmadik normál űrlap (3NF) egy adatbázis elv, amely támogatja az adatok integritását azáltal, hogy az első normál űrlap (1NF) és a második normál űrlap (2NF) által biztosított adatbázis normalizációs elvekre épül.

Harmadik normál formára vonatkozó követelmények

Az adatbázisnak két alapvető követelménye van, hogy harmadik normál formában legyen:

  • Az adatbázisnak meg kell felelnie mind az 1NF, mind a 2NF követelményeinek.
  • Minden adatbázis oszlopnak az elsődleges kulcstól kell függnie, vagyis az oszlopok értéke csak az elsődleges kulcsból származhat.

Az elsődleges kulcsfüggőségről

Vizsgáljuk tovább, hogy mit értünk azzal, hogy minden oszlopnak az elsődleges kulcstól kell függenie.

Ha egy oszlop értéke mind az elsődleges kulcsból, mind a táblázat egy másik oszlopából származik, akkor megsérti a 3NF értéket. Tekintsük az Alkalmazottak táblázatot ezekkel az oszlopokkal:

  • Munkavállalói azonosító
  • Keresztnév
  • Vezetéknév

Mind a LastName, mind a FirstName csak a EmployeeID értékétől függ? Nos, a LastName függhet a FirstName-től? Nem, mert a LastName benne rejlő tulajdonságok nem utalnak a FirstName értékére. Lehetséges, hogy a FirstName a LastName-től függ? Még egyszer, mert ugyanaz igaz: bármi is lehet a LastName, nem tudott utalni a FirstName értékére. Ezért ez a táblázat 3NF-kompatibilis.

De fontolja meg a Járművek táblázatot:

  • VehicleID
  • Gyártó
  • Modell

A gyártó és a modell a VehicleID-ből származhat - de a modell származhat a gyártótól is, mert a jármű modellt csak egy adott gyártó gyártja. Ez a táblázat nem 3NF-kompatibilis, és ezért adat-anomáliákhoz vezethet. Például frissítheti a gyártót a modell frissítése nélkül, pontatlanságokat vezetve be.

Ahhoz, hogy megfelelővé tegye, a másik függő oszlopot másik táblázatba kell áthelyezni, és idegen kulcs használatával kell hivatkozni. Ez két táblázatot eredményezne:

Járművek táblázata

Az alábbi táblázatban a ModelID egy idegen kulcs a Összes asztal:

  • VehicleID
  • Gyártó
  • modelID

Modellek táblázat

Ez az új tábla modelleket készít a gyártóknak. Ha egy adott modellre vonatkozó járműinformációkat szeretnél frissíteni, ezt a táblázatban kell elvégezned, nem pedig a Járművek táblázatban.

  • modelID
  • Gyártó
  • Modell

Származtatott mezők a 3NF modellben

Egy tábla tartalmazhat egy származtatott mezőt - amelyet a táblázatban szereplő többi oszlop alapján számítanak ki. Például, tekintse át a widget-megrendelések ezen táblázatát:

  • Rendelésszám
  • Ügyfélszám
  • Egységár
  • Mennyiség
  • Teljes

A teljes megszakítja a 3NF megfelelést, mivel az az egységárat a mennyiséggel szorozva származik, és nem teljes mértékben az elsődleges kulcstól függ. El kell távolítanunk az asztaltól, hogy megfeleljen a harmadik szokásos formának.

Valójában, mivel származik, jobb, ha egyáltalán nem tárolja az adatbázisban.

Egyszerűen kiszámíthatjuk "leterheljük" az adatbázis-lekérdezések végrehajtásakor. Előfordulhat, hogy korábban ezt a lekérdezést használtam a rendelési számok és összegek lekéréséhez:

SELECT sorszám, összesen FROM WidgetOrders

Mostantól a következő lekérdezést használhatjuk:

KIVÁLASZTÁS Rendelési szám, egységár * Mennyiség AS Összesen FROM WidgetOrders

hogy ugyanazokat az eredményeket érje el a normalizációs szabályok megsértése nélkül.