Rhoi Cronfa Ddata mewn Trydydd Ffurf Gyffredin (3NF)

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:

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:

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:

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 :

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.

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:

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 WidgetOrders

Gallwn nawr ddefnyddio'r ymholiad canlynol:

SELECT OrderNumber, UnitPrice * Nifer UG UG ODDI ODDI WANBYNNAU

i gyflawni'r un canlyniadau heb dorri rheolau normaleiddio.