Mae dibyniaeth aml-werthfawr yn torri pedwerydd ffurflen arferol
Mewn cronfa ddata berthynas, mae dibyniaeth yn digwydd pan fydd y wybodaeth a storir yn yr un gronfa ddata yn pennu gwybodaeth arall sy'n cael ei storio yn yr un tabl yn unigryw. Mae dibyniaeth amryfal yn digwydd pan fo presenoldeb un rhes neu ragor mewn tabl yn awgrymu presenoldeb un neu fwy o resi eraill yn yr un tabl hwnnw. Rhowch ffordd arall, mae dau briod (neu golofn) mewn tabl yn annibynnol ar ei gilydd, ond mae'r ddau yn dibynnu ar drydedd nodwedd.
Mae dibyniaeth amryfal yn atal y safon normaleiddio pedwerydd ffurflen arferol (4NF). Mae cronfeydd data perthynol yn dilyn pum ffurf arferol sy'n cynrychioli canllawiau ar gyfer dylunio cofnodion. Maent yn atal anghysondebau diweddar ac anghysonderau yn y data. Mae'r pedwerydd ffurflen arferol yn ymdrin â pherthnasau llawer i un mewn cronfa ddata .
Dibyniaeth Weithredol yn erbyn Dibyniaeth Aml-werthfawr
I ddeall dibyniaeth aml-werthfawr, mae'n ddefnyddiol ail-edrych ar beth yw dibyniaeth swyddogaethol.
Os yw priodwedd X yn pennu priodoldeb yn unigryw, Y yna mae Y yn dibynnu'n swyddogol ar X. Mae hyn wedi'i ysgrifennu fel X -> Y. Er enghraifft, yn y tabl Myfyrwyr isod, mae'r Student_Name yn pennu'r Mawr:
Myfyriwr_Name | Mawr |
---|---|
Ravi | Hanes Celf |
Beth | Cemeg |
Gellir ysgrifennu'r dibyniaeth swyddogaethol hon: Student_Name -> Major . Mae pob Student_Name yn penderfynu yn union un Prif Fawr, ac nid mwy.
Os ydych chi am i'r gronfa ddata hefyd olrhain y chwaraeon y mae'r myfyrwyr hyn yn eu cymryd, efallai y byddwch chi'n meddwl mai'r ffordd hawsaf o wneud hyn yw ychwanegu colofn arall o'r enw Chwaraeon:
Myfyriwr_Name | Mawr | Chwaraeon |
---|---|---|
Ravi | Hanes Celf | Pêl-droed |
Ravi | Hanes Celf | Pêl-foli |
Ravi | Hanes Celf | Tenis |
Beth | Cemeg | Tenis |
Beth | Cemeg | Pêl-droed |
Y broblem yma yw bod Ravi a Beth yn chwarae nifer o chwaraeon. Mae angen ychwanegu rhes newydd ar gyfer pob chwaraeon ychwanegol.
Mae'r tabl hwn wedi cyflwyno dibyniaeth amryfal oherwydd bod y prif a'r chwaraeon yn annibynnol ar ei gilydd ond mae'r ddau'n dibynnu ar y myfyriwr.
Mae hon yn enghraifft syml ac yn hawdd ei hadnabod, ond gallai dibyniaeth aml-droi ddod yn broblem mewn cronfa ddata fawr, gymhleth.
Ysgrifennir dibyniaeth amryfal X -> -> Y. Yn yr achos hwn:
Student_Name -> -> Mawr
Student_Name -> -> Chwaraeon
Darllenir hyn fel "Student_Name multidetermines Major" a "Student_Name multidetermines Sport."
Mae dibyniaeth aml-bris bob amser yn mynnu o leiaf dair nodwedd oherwydd ei bod yn cynnwys o leiaf ddau elfen sy'n dibynnu ar draean.
Dibyniaeth Amrywiol a Normaliad
Mae tabl gyda dibyniaeth aml-bris yn torri safon normaleiddio'r Pedwerydd Ffurflen Gyffredin (4NK) gan ei fod yn creu diswyddiadau diangen a gall gyfrannu at ddata anghyson. Er mwyn dod â hyn hyd at 4NF, mae angen torri'r wybodaeth hon yn ddau dabl.
Bellach mae gan y tabl isod ddibyniaeth swyddogaethol o Student_Name -> Prif ddibyniaethau, a dim dibyniaethau aml-bris:
Myfyriwr_Name | Mawr |
---|---|
Ravi | Hanes Celf |
Ravi | Hanes Celf |
Ravi | Hanes Celf |
Beth | Cemeg |
Beth | Cemeg |
Er bod gan y tabl hwn ddibyniaeth swyddogaethol unigol o Student_Name -> Chwaraeon:
Myfyriwr_Name | Chwaraeon |
---|---|
Ravi | Pêl-droed |
Ravi | Pêl-foli |
Ravi | Tenis |
Beth | Tenis |
Beth | Pêl-droed |
Mae'n amlwg y caiff normalization ei drin yn aml trwy symleiddio'r tablau cymhleth fel eu bod yn cynnwys gwybodaeth sy'n gysylltiedig ag un syniad neu thema yn hytrach na cheisio gwneud un tabl yn cynnwys gormod o wybodaeth wahanol.