Déi drëtt normal Form (3NF) ass en Datebankprinzip, deen d'Integritéit vu Daten ënnerstëtzt huet andeems d' Prinzipien vun der Normaliséierung vun der Datebank vun der First Normal Form (1NF) a Second Normal Form (2NF) ënnerstëtzt gouf.
Drëtt normal Form Requirements
Et ginn zwou grondsätzlech Ufuerderungen fir eng Datebank fir an drëtt normal Form ze kréien:
- D'Datebank muss déi Ufuerderungen vun 1NF an 2NF schonn erfëllen .
- Sämtlech Dateblieder Säiten hu vun der Primärschleife abhëlt , dh datt all Wertspiller vum Original Primär klasséiert ginn.
On der Primary Key Dependenz
Loosst eis weider erfuere wat mir mat der Tatsaach bedeit datt all Sällen op den éischte Schlëssel hänken.
Wann de Wäert vun engem Kolonn aus dem Primärschloss kënnt an eng aner Kolonn an der Tabelle ofgeleet ginn, verstéisst hien 3NF. Betrauen eng Staffel Dësch mat dësen Spalten:
- EmployeeID
- Virnumm
- Familljennumm
Gitt d'LastName an den FirstName ofhängeg nëmmen vun dem Wäert vun der EmployeeID? Ma, konnt LastName of FirstName hänken? Neen, well näischt vum LastName heihinner géif de Wert vun FirstName recommandéieren. Konnt éischtName ofhängeg sinn? Keen Neie méi, well déi selwecht ass richteg: wéi ëmmer e LastName wäert sinn, et konnt net e Stéck ginn wéi den Wert vum FirstName. Dofir ass dës Tabelle 3NF kompatibel.
Awer dës Fahrt Dësch behaalen:
- VehicleID
- Fabrikant
- Modell
De Fabrikant an den Model kënnen ofgeleet vu VehicleID - awer de Model konnt och vum Hersteller fabrizéieren, well e Vehikelmodell nëmmen duerch e bestëmmten Fabrik gemaach gëtt. Dëst Table Design ass net-3NF kompatibel, a kéint dofir zu Datenanomalien entstoen. Zum Beispill kënnt Dir de Besëtzer aktualiséieren ouni de Modell ze aktualiséieren an Ongenauegkeeten z'ënnerstëtzen.
Fir se konform ze maachen, brauche mir d'zusätzlech abegraff Säule fir eng aner Dësch ze verloossen an ze referenzéieren mat engem auslännesche Schlëssel. Dëst hätt zu zwee Dëscher:
Vehikel Dësch
An der Tabelle hei ënnen ass de ModelID e Fremdschloss fir d' Modeller Table:
- VehicleID
- Fabrikant
- ModelID
Modeller Dësch
Dës nei Tabellastell Modellen fir d'Fabrikanten. Wann Dir all Informatioun vum Gefier spezifesch fir e Modell aktualiséiere wëllt, da géif Dir et an dëser Tabell maachen, an net an der Tabellen Fahrzeuge.
- ModelID
- Fabrikant
- Modell
Derivéiert Felder am 3NF Modell
Eng Tabell kann en Abléck an engem Tableau entstoen - deen op der anerer Säit an de Tableau baséiert. Zum Beispill, wielt dës Tabelle Widget-Bestellungen:
- Bestellt Nummer
- Client Number
- Eenzelpräis
- Quantitéit
- Total
Déi total Pausen hunn 3NF-Konformitéit, well et kann duerch d'Multiplizéieren vum Eenheetspreis vun der Quantitéit ofgeleet ginn, an net ganz ofhängeg vum Primärschrei. Mir mussen et aus der Tabelle erofhuelen fir déi drëtt normal Form ze respektéieren.
Tatsächlech, well et ass ofgeleent ginn, et ass besser fir et net an der Datebank ze speichern.
Mir kënne se einfach "" on the fly "errechnen beim Ausféierung vu Datebank Ufroen. Zum Beispill, mir hätten dat Viraus ugebueden fir Bestellnumm a Summe abonnéieren:
SELECT BestelltNumber, Total FROM WidgetOrdersMir kënnen elo déi folgend Ufro benotzen:
SELECT BestelltNumber, UnitPrice * Quantitéit AS Total FROM WidgetOrdersfir déi selwecht Resultater ze realiséieren ouni d'Normaliséierungsregelen ze verletzen.