Eng Datebank an Dritt Normalform ze kréien (3NF)

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:

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:

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:

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:

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.

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:

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 WidgetOrders

Mir kënnen elo déi folgend Ufro benotzen:

SELECT BestelltNumber, UnitPrice * Quantitéit AS Total FROM WidgetOrders

fir déi selwecht Resultater ze realiséieren ouni d'Normaliséierungsregelen ze verletzen.