Mae'r drydedd ffurflen arferol (3NF) yn egwyddor cronfa ddata sy'n cefnogi cyfanrwydd y data trwy adeiladu ar egwyddorion normaliad y gronfa ddata a ddarperir gan Ffurflen Gyffredinol Normal (1NF) a'r Ail Ffurflen Gyffredin (2NF).
Trydydd Gofynion Ffurf Gyffredin
Mae dau ofyniad sylfaenol ar gyfer cronfa ddata mewn trydydd ffurflen arferol:
- Rhaid i'r gronfa ddata eisoes fodloni gofynion 1NF a 2NF .
- Rhaid i bob colofn y gronfa ddata ddibynnu ar yr allwedd gynradd , sy'n golygu y gellir deillio unrhyw werth unrhyw golofn o'r allwedd gynradd yn unig.
Ynglŷn â'r Ddibyniaeth Allweddol Cynradd
Gadewch i ni archwilio ymhellach yr hyn a olygwn gan y ffaith bod pob colofn yn dibynnu ar yr allwedd gynradd.
Os gellir dod o hyd i werth colofn o'r allwedd gynradd a cholofn arall yn y tabl, mae'n torri 3NF. Ystyried tabl Gweithwyr gyda'r colofnau hyn:
- EmployeeID
- Enw cyntaf
- LastName
A yw'r ddau LastName a FirstName yn dibynnu'n unig ar werth EmployeeID? Wel, a allai LastName ddibynnu ar FirstName? Na, oherwydd ni fyddai dim yn gynhenid yn LastName yn awgrymu gwerth FirstName. A allai FirstName ddibynnu ar LastName? Na, eto, gan fod yr un peth yn wir: beth bynnag y gallai LastName fod, ni allai roi awgrym ynglŷn â gwerth FirstName. Felly, mae'r tabl hwn yn cydymffurfio â 3NF.
Ond ystyriwch y tabl Cerbydau hwn:
- VehicleID
- Gwneuthurwr
- Model
Gallai'r Gwneuthurwr a'r Model ddeillio o'r VehicleID - ond gallai'r Model hefyd ddeillio o'r Gwneuthurwr oherwydd bod model cerbyd yn cael ei wneud yn unig gan wneuthurwr penodol. Mae'r dyluniad hwn o dabl yn cydymffurfio â 3NF, a gallai, felly, arwain at anghysondebau data. Er enghraifft, efallai y byddwch chi'n diweddaru'r gwneuthurwr heb ddiweddaru'r model, gan gyflwyno anghywirdebau.
Er mwyn ei gwneud yn cydymffurfio, byddai angen i ni symud y golofn dibynnol ychwanegol i dabl arall a'i gyfeirio gan ddefnyddio allwedd dramor. Byddai hyn yn arwain at ddau dabl:
Tabl Cerbydau
Yn y tabl isod, mae'r Model Model yn allwedd dramor i'r bwrdd Modelau :
- VehicleID
- Gwneuthurwr
- Model Model
Tabl Modelau
Mae'r tabl newydd hwn yn fodelau i weithgynhyrchwyr. Os ydych chi am ddiweddaru unrhyw wybodaeth cerbyd sy'n benodol i fodel, byddech yn ei wneud yn y tabl hwn, yn hytrach nag yn y bwrdd Cerbydau.
- Model Model
- Gwneuthurwr
- Model
Maes Deilliedig yn y Model 3NF
Gallai tabl gynnwys maes deillio - un sy'n cael ei gyfrifo yn seiliedig ar golofnau eraill yn y tabl. Er enghraifft, ystyriwch y tabl hwn o orchmynion teclynnau:
- Rhif archeb
- Rhif Cwsmer
- Pris yr Uned
- Nifer
- Cyfanswm
Mae'r cyfanswm yn torri cydymffurfiaeth 3NF oherwydd gellir ei deillio trwy luosi'r pris uned fesul swm, yn hytrach na bod yn gwbl ddibynnol ar yr allwedd gynradd. Rhaid inni ei dynnu o'r tabl i gydymffurfio â'r trydydd ffurflen arferol.
Mewn gwirionedd, gan ei fod yn deillio, mae'n well peidio â'i storio yn y gronfa ddata o gwbl.
Gallwn ei gyfrifo'n syml ar "hedfan" wrth berfformio ymholiadau cronfa ddata. Er enghraifft, efallai y byddwn wedi defnyddio'r ymholiad hwn yn flaenorol i adennill rhifau archeb a chyfansymiau:
SELECT OrderNumber, Cyfanswm ODDI GAN WidgetOrdersGallwn nawr ddefnyddio'r ymholiad canlynol:
SELECT OrderNumber, UnitPrice * Nifer UG UG ODDI ODDI WANBYNNAUi gyflawni'r un canlyniadau heb dorri rheolau normaleiddio.