Mae dibyniaeth swyddogaethol lawn yn gyflwr o normaleiddio cyfatebol sy'n cyfateb i safon normaleiddio'r Ail Ffurflen Gyffredin (2NF) . Yn gryno, mae hyn yn golygu ei fod yn cwrdd â gofynion Ffurflen Gyffredin Normal (1NF), ac mae'r holl nodweddion anhysbys yn gwbl weithredol yn dibynnu ar yr allwedd gynradd.
Nid yw hyn mor gymhleth ag y gallai fod yn swnio. Edrychwn ar hyn yn fanylach.
Crynodeb o'r Ffurflen Gyffredin Gyffredin
Cyn y gall cronfa ddata fod yn gwbl weithredol yn ddibynnol, rhaid iddo gydymffurfio yn gyntaf â Ffurflen Gyffredinol Gyffredin .
Mae hyn i gyd yn golygu bod yn rhaid i bob priodwedd ddal gwerth atomig unigol.
Er enghraifft, nid yw'r tabl canlynol yn cydymffurfio ag 1NF, oherwydd bod y gweithiwr Tina wedi'i gysylltu â dau leoliad, y ddau ohonynt mewn un cell:
Gweithiwr | Lleoliad |
---|---|
John | Los Angeles |
Tina | Los Angeles, Chicago |
Gallai caniatáu y dyluniad hwn effeithio'n negyddol ar ddiweddariadau neu gofnodion data. Er mwyn sicrhau cydymffurfiad 1NF, ail-drefnwch y bwrdd fel bod pob nodwedd (neu gelloedd colofn) yn dal un gwerth:
Gweithiwr | Lleoliad |
---|---|
John | Los Angeles |
Tina | Los Angeles |
Tina | Chicago |
Ond mae 1NF yn dal i fod yn ddigon i osgoi problemau gyda'r data.
Sut mae 2NF yn Gweithio i Sicrhau Dibyniaeth Llawn
I fod yn gwbl ddibynnol, rhaid i bob elfen allweddol nad yw'n ymgeisydd ddibynnu ar yr allwedd gynradd. (Cofiwch mai priodwedd allweddol ymgeisydd yw unrhyw allwedd (er enghraifft, allwedd sylfaenol neu dramor) a ddefnyddir i nodi cofnod cronfa ddata yn unigryw.
Mae dylunwyr cronfa ddata yn defnyddio nodiant i ddisgrifio'r berthynas ddibynnol rhwng nodweddion:
Os yw priodoldeb A yn pennu gwerth B, ysgrifennwn yr A -> B - sy'n golygu bod B yn dibynnu'n swyddogol ar A. Yn y berthynas hon, mae A yn pennu gwerth B, tra bod B yn dibynnu ar A.
Er enghraifft, yn y tabl Adrannau Gweithwyr canlynol, mae EmployeeID a'r DeptID yn ddau allwedd ymgeisydd: EmployeeID yw prif allwedd y tabl tra bod DeptID yn allwedd dramor.
Rhaid i unrhyw briodoldeb arall - yn yr achos hwn, EmployeeName a DeptName - ddibynnu ar yr allwedd gynradd i gael ei werth.
EmployeeID | CyflogaiName | DeptID | AdranName |
---|---|---|---|
Emp1 | John | Adran2001 | Cyllid |
Emp2 | Tina | Adran3 | Gwerthu |
Emp3 | Carlos | Adran2001 | Cyllid |
Yn yr achos hwn, nid yw'r tabl yn gwbl ddibynnol oherwydd, tra bod y GweithiwrName yn dibynnu ar y prif weithiwr EmployeeID, mae'r Adran yn dibynnu yn lle hynny ar yr Adran Ddata. Gelwir hyn yn ddibyniaeth rhannol .
I wneud y tabl hwn yn cydymffurfio â 2NF, mae angen i ni wahanu'r data yn ddau dabl:
EmployeeID | CyflogaiName | DeptID |
---|---|---|
Emp1 | John | Adran2001 |
Emp2 | Tina | Adran3 |
Emp3 | Carlos | Adran2001 |
Rydym yn dileu priodoldeb yr Adran o'r tabl Gweithwyr ac yn creu tabl newydd Adrannau :
DeptID | AdranName |
---|---|
Adran2001 | Cyllid |
Adran 2 | Adnoddau Dynol |
Adran3 | Gwerthu |
Nawr mae'r berthynas rhwng y tablau yn gwbl ddibynnol, neu yn 2NF.
Pam Mae Dibyniaeth Llawn yn Bwysig
Mae dibyniaeth lawn rhwng nodweddion cronfa ddata yn helpu i sicrhau cywirdeb data ac osgoi anghysondebau data.
Er enghraifft, ystyriwch y tabl yn yr adran uchod sy'n cadw at 1NF yn unig. Dyma, unwaith eto:
Gweithiwr | Lleoliad |
---|---|
John | Los Angeles |
Tina | Los Angeles |
Tina | Chicago |
Mae gan Tina ddau gofnod. Os byddwn yn diweddaru un heb sylweddoli bod yna ddau, byddai'r canlyniad yn ddata anghyson.
Neu, beth os ydym am ychwanegu gweithiwr i'r tabl hwn, ond nid ydym eto'n gwybod y Lleoliad? Efallai na fyddwn ni'n cael hyd yn oed ychwanegu gweithiwr newydd os nad yw'r priodoldeb Lleoliad yn caniatáu gwerthoedd NULL.
Nid dibyniaeth lawn yw'r darlun cyfan, fodd bynnag, pan ddaw i normaleiddio. Rhaid i chi sicrhau bod eich cronfa ddata yn y Trydydd Ffurf Gyffredin (3NF).