Nagbutang sa usa ka Database sa Third Normal Form (3NF)

Ang ikatulong normal nga porma (3NF) usa ka database nga prinsipyo nga nagsuporta sa integridad sa datos pinaagi sa pagtukod sa database nga mga prinsipyo sa normalisasyon nga gihatag sa First Normal Form (1NF) ug Second Normal Form (2NF).

Mga Kinahanglanon nga Porma sa Ikatulong Normal

Adunay duha ka nag-unang mga kinahanglanon alang sa usa ka database nga anaa sa ikatulo nga normal nga porma:

Mahitungod sa Depresyon sa Primary

Susihon nato ang dugang unsay atong gipasabut sa kamatuoran nga ang tanan nga mga kolum kinahanglan gayud magdepende sa pangunang yawe.

Kon ang bili sa usa ka kolum makuha gikan sa pangunang yawe ug laing kolum sa lamesa, kini naglapas sa 3NF. Hunahunaa ang usa ka lamesa sa empleyado uban niining mga kolum:

Ang duha LastName ug FirstName nagsalig lamang sa bili sa EmployeeID? Buweno, ang LastName ba nagsalig sa FirstName? Dili, tungod kay walay bisan unsa nga kinaiya sa LastName ang mosugyot sa bili sa FirstName. Mahimo ba nga ang FirstName nagsalig sa LastName? Dili na usab, tungod kay mao ra ang tinuod: bisan unsa pa ang LastName, dili kini makahatag usa ka pahibalo mahitungod sa bili sa FirstName. Busa, kini nga lamesa mao ang 3NF compliant.

Apan hunahunaa kining lamesa sa Vehicles:

Ang Manufacturer ug ang Model mahimong makuha gikan sa VehicleID - apan ang Model mahimo usab nga makuha gikan sa Manufacturer tungod kay ang modelo sa sakyanan gihimo lamang sa usa ka partikular nga tiggama. Kini nga disenyo sa lamesa dili uyon sa dili-3NF, ug mahimo, busa, moresulta sa mga anomalya sa datos. Pananglitan, mahimo nimo nga ipa-update ang tiggama nga wala mag-update sa modelo, nga nagpaila sa mga sayop.

Aron mahimo kini nga compliant, gikinahanglan nato nga ibalhin ang dugang nga dependent nga kolum sa laing lamesa ug i-reference kini gamit ang usa ka langyaw nga yawe. Kini magresulta sa duha ka mga lamesa:

Mga Sakyanan sa Mga Sakyanan

Sa lamesa sa ubos, ang ModelID usa ka langyaw nga yawe sa mga lamesa sa Mga Modelo :

Mga Table sa Mga Modelo

Ang bag-o nga lamesa nagpakita sa mga modelo sa mga tiggama Kung gusto nimo i-update ang bisan unsang impormasyon sa sakyanan nga tukma sa usa ka modelo, mahimo nimo kini sa lamesa, inay sa lamesa sa Vehicles.

Naggikan sa mga Fields sa 3NF Model

Ang lamesa mahimo nga adunay usa ka nakuha nga natad - usa nga gikalkulo base sa ubang mga kolum sa lamesa. Pananglitan, tagda kini nga talaan sa mga order sa widget:

Ang kinatibuk-an nga paghunong sa pagsunod sa 3NF tungod kay kini makuha pinaagi sa pagpadaghan sa kantidad sa unit pinaagi sa gidaghanon, kay sa hingpit nga nagsalig sa pangunang yawe. Gikuha nato kini gikan sa lamesa aron pagtuman sa ikatulo nga normal nga porma.

Sa pagkatinuod, tungod kay kini makuha, mas maayo nga dili kini ibutang sa database.

Mahimo lamang naton ihulagway kini "sa langaw" sa paghimo sa mga pangutana sa database. Pananglitan, tingali gigamit nato kaniadto kini nga pangutana aron makuha ang mga numero ug mga numero sa order:

PILI OrderNumber, Total FROM WidgetOrders

Mahimo na namong gamiton ang mosunod nga pangutana:

PILI OrderNumber, UnitPrice * Gidaghanon AS Total GIKAN WidgetOrders

aron makab-ot ang sama nga resulta nga walay paglapas sa mga lagda sa normalisasyon.