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:
- Ang database kinahanglan nga matuman na ang mga kinahanglanon sa 1NF ug 2NF .
- Ang tanan nga mga kolum sa database kinahanglan nga magdepende sa nag-una nga yawe , nga nagpasabut nga ang bisan unsang haligi mahimong makuha gikan sa nag-unang yawe lamang.
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:
- EmployeeID
- FirstName
- LastName
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:
- VehicleID
- Gama
- Modelo
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 :
- VehicleID
- Gama
- ModelID
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.
- ModelID
- Gama
- Modelo
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:
- Numero sa Order
- Numero sa Customer
- Unit Price
- Gidaghanon
- Total
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 WidgetOrdersMahimo na namong gamiton ang mosunod nga pangutana:
PILI OrderNumber, UnitPrice * Gidaghanon AS Total GIKAN WidgetOrdersaron makab-ot ang sama nga resulta nga walay paglapas sa mga lagda sa normalisasyon.