Mete yon baz done nan Fòm Nòmal Twazyèm (3NF)

Twazyèm fòm nòmal (3NF) se yon prensip baz done ki sipòte entegrite nan done pa bati sou prensip yo nòmalizasyon baz done Premye Nòmal Fòm (1NF) ak Dezyèm Fòm Nòmal (2NF).

Kondisyon Fòm Nòmal Twazyèm

Gen de kondisyon debaz pou yon baz done yo dwe nan fòm twazyèm nòmal:

Konsènan depandans kle prensipal la

Se pou nou eksplore plis sa nou vle di pa lefèt ke tout kolòn dwe depann sou kle a prensipal la.

Si yon valè kolòn ka sòti nan tou de kle prensipal la ak yon lòt kolòn nan tablo a, li vyole 3NF. Konsidere yon tablo Anplwaye ak kolòn sa yo:

Èske tou de LastName ak FirstName depann sèlman sou valè a nan EmployeeID? Oke, te ka LastName depann sou FirstName? Non, paske pa gen anyen nannan nan LastName ta sijere valè a nan FirstName. Te kapab FirstName depann sou LastName? Pa ankò, paske menm bagay la tou se vre: kèlkeswa yon LastName ta ka, li pa t 'kapab bay yon allusion kòm valè a FirstName. Se poutèt sa, tablo sa a se 3NF konfòme.

Men, konsidere tablo sa a:

Manifakti a ak modèl la ka dériver soti nan VehicleID la - men modèl la kapab tou dériver soti nan manifakti a paske se yon modèl machin ki fèt sèlman pa yon manifakti patikilye. Konsepsyon tab sa a pa konfòme ki pa 3NF, e li kapab, kidonk, rezilta anomali done yo. Pou egzanp, ou ta ka mete ajou manifakti a san yo pa jour modèl la, entwodwi ereur.

Pou fè li konfòme, nou ta bezwen pou avanse pou pi kolòn depandan an nan yon lòt tab ak referans li lè l sèvi avèk yon kle etranje yo. Sa a ta lakòz nan de tab:

Machin Tablo

Nan tablo ki anba la a, ModelID la se yon kle etranje pou modèl tab la:

Modèl Table

Tablo sa a tab nouvo modèl nan manifaktirè yo. Si ou vle mete nenpòt enfòmasyon machin espesifik nan yon modèl, ou ta fè li nan tablo sa a, olye ke nan tablo a machin.

Derive jaden nan modèl la 3NF

Yon tab ka gen yon jaden ki sòti - yon sèl ki calculée ki baze sou lòt kolòn nan tablo a. Pou egzanp, konsidere tablo sa a nan lòd widje:

Pèspòs total 3NF konfòmite a paske li ka sòti nan miltipliye pri inite a pa kantite a, olye ke yo te konplètman depann sou kle a prensipal la. Nou dwe retire li nan tablo pou konfòme ak fòm twazyèm nòmal la.

An reyalite, depi li se sòti, li pi bon pa sere li nan baz done a nan tout.

Nou ka senpleman kalkile li "sou vole a" lè fè queries baz done. Pou egzanp, nou ka te deja itilize sa a rechèch rekipere nimewo lòd ak total:

SELECT OrderNumber, Total FROM WidgetOrders

Nou ka itilize sijè sa a kounye a:

SELECT OrderNumber, UnitPrice * Kantite AS total de WidgetOrders

reyalize rezilta yo menm san vyole règleman nòmalizasyon.