Putting in databank yn tredde normale foarmen (3NF)

Tredde normale foarm (3NF) is in databankprinsipe dy't de yntegraasje fan gegevens stipet troch it bouwen fan 'e basis- basisynstellingsprinsipes dy't troch First Normal Form (1NF) en Second Normal Form (2NF) levere wurde.

Tredde normale folsleine easken

Der binne twa basisfoarsjennings foar in databank yn 'e tredde normale foarm:

Oer de Primary Key Dependence

Litte wy fierder ûndersykje wat wy betsjutte troch it feit dat alle kolommen hingje moatte fan 'e primêre kaai.

As in kolom's wearde ôfkomt wurde kin fan sawol de primêre kaai en in oare kolom yn 'e tabel, it oanjaan fan 3NF. Besjogge in meiwurkers tabel mei dizze kolommen:

Doge beide LastName en FirstName allinich ôf fan de wearde fan EmployeeID? No, kin LastName fan FirstName ôfhinne? Nee, om't neat yn LastName yngeande soe de wearde fan FirstName oanbiede. Koe it earsteName ôfhinkje fan LastName? No wer, om't itselde wier is: wat in LastName wêze kin, koe it net in hint jaan as de wearde fan FirstName. Dêrom is dizze tabel 3NF konform.

Mar sjogge dit tabelbalke:

De fabrikant en it model kinne ôflaat fan 'e VehicleID - mar it model koe ek fan' e fabrikant ôflaaie, om't in fytsmodel allinich troch in bepaalde fabrikant makke is. Dit tabelûntwerp is net-3NF konform, en koe dêrom resultaten foar data-anomalies. Bygelyks, jo kinne de fabrikant fernije sûnder it modell te aktualisearje, yntrodearjen fan ûnjildingen.

Om it konform te meitsjen, moatte wy de oanfoljende ôfsûnderlike kolom ferpleatse nei in oare tabel en referearje it mei in bûtenlânske kaai. Dit soe ta twa tafels komme:

Vehikel Tafel

Yn 'e tabel hjirûnder is de ModelID in frjemde toetseboerd foar de modeletabel:

Models Tafel

Dizze nije tabel leit modellen foar fabrikanten. As jo ​​in karakterynformaasje spesifyk nei in model aktualisearje wolle, dan wolle jo dit yn dizze tabel dwaan, dan net yn 'e tabellen fan' e Vehikel.

Derived Fields yn it 3NF Model

In tabel kin in ôflaat fjild befetsje - ien dat berekkent wurdt basearre op oare kolommen yn 't tafel. Sjoch bygelyks dizze tabel fan widgetopsjes:

De totale brekken oer 3NF oerienkomst om't it kin wurde troch it multiplikearjen fan de ienheidpriis troch de kwantiteit, yn stee fan it folslein ôfhinklik fan de primêre kaai. Wy moatte it fan 'e tafel fuortsmite om de tredde normale foarm oan te foljen.

Yn 't feit, om't it ôflaat is, is it better om dat net hielendal yn' e database te bewarjen.

Wy kinne gewoan it "op 'e flier" skriuwe by it útfieren fan database queries. Sa kinne wy ​​bygelyks dizze query earder brûke om bestellingsnûmers en totalen werom te heljen:

SELECT OrderNumber, Totaal FROM WidgetOrders

Wy kinne no de folgjende fraach brûke:

SELEKT OrderNumber, UnitPrice * Quantity AS Totaal FROM WidgetOrders

om deselde resultaten te realisearjen sûnder de normalisearringsregels te lijen.