Dibyniaeth Aml-werthfawr mewn Dylunio Cronfa Ddata

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:

Myfyrwyr
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:

Myfyrwyr
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:

Myfyrwyr a Majors
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:

Myfyrwyr a 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.