Perthynas Un-i-lawer mewn Cronfa Ddata

Mae perthynas un-i-lawer mewn cronfa ddata yn digwydd pan fydd gan bob cofnod yn Nhabl A lawer o gofnodion cysylltiedig yn Nhabl B, ond efallai mai dim ond un cofnod cyfatebol yn Nhabl A. sydd gan bob cofnod yn Nhabl B. Mae perthynas un i lawer yn cronfa ddata yw'r dyluniad cronfa ddata perthynol mwyaf cyffredin ac mae wrth wraidd dylunio da.

Ystyriwch y berthynas rhwng athro a'r cyrsiau y maent yn eu dysgu. Gall athro addysgu sawl cwrs, ond ni fyddai gan y cwrs yr un berthynas â'r athro.

Felly, ar gyfer pob cofnod mewn tabl Athrawon, gallai fod llawer o gofnodion yn y tabl Cyrsiau. Mae hwn yn berthynas un-i-lawer: un athro i gyrsiau lluosog.

Pam Pwysig yw Sefydlu Perthynas Un-i-lawer

I gynrychioli perthynas un-i-lawer, mae angen dau dabl o leiaf arnoch. Gadewch i ni weld pam.

Efallai ein bod ni wedi creu tabl Athrawon lle'r oeddem am gofnodi'r enw a'r cyrsiau a addysgir. Efallai y byddwn yn ei ddylunio fel hyn:

Athrawon a Chyrsiau
Teacher_ID Teacher_Name Cwrs
Teacher_001 Carmen Bioleg
Athro_002 Veronica Math
Athro_003 Jorge Saesneg

Beth os yw Carmen yn dysgu dau neu fwy o gyrsiau? Mae gennym ddau opsiwn gyda'r cynllun hwn. Gallem ond ei ychwanegu at gofnod presennol Carmen, fel hyn:

Athrawon a Chyrsiau
Teacher_ID Athro _Name Cwrs
Teacher_001 Carmen Bioleg, Mathemateg
Athro_002 Veronica Math
Athro_003 Jorge Saesneg

Mae'r dyluniad uchod, fodd bynnag, yn anhyblyg a gallai arwain at broblemau yn ddiweddarach wrth geisio mewnosod, golygu neu ddileu data.

Mae'n ei gwneud hi'n anodd chwilio am ddata. Mae'r dyluniad hwn yn torri'r egwyddor gyntaf o normaleiddio cronfa ddata, First Normal Form (1NF) , sy'n datgan y dylai pob cell bwrdd gynnwys darn unigol o ddata ar wahân.

Efallai mai dyluniad arall arall fyddai ychwanegu ail gofnod ar gyfer Carmen:

Athrawon a Chyrsiau
Athro _ID Athro _Name Cwrs
Teacher_001 Carmen Bioleg
Teacher_001 Carmen Math
Athro_002 Veronica Math
Athro_003 Jorge Saesneg

Mae hyn yn cyd-fynd â 1NF ond mae'n dal i fod yn wael dylunio cronfa ddata oherwydd ei fod yn cyflwyno diswyddiadau ac yn gallu blodeuo cronfa ddata fawr iawn yn ddiangen. Yn bwysicach fyth, gallai'r data fod yn anghyson. Er enghraifft, beth os newidiodd enw Carmen? Efallai y bydd rhywun sy'n gweithio gyda'r data yn diweddaru ei henw mewn un cofnod ac yn methu â'i ddiweddaru yn yr ail gofnod. Mae'r dyluniad hwn yn torri Ffurflen Ail Normal (2NF), sy'n cydymffurfio â 1NF ac mae'n rhaid iddo hefyd osgoi diswyddo nifer o gofnodion trwy rannu is-setiau o ddata i nifer o dablau a chreu perthynas rhyngddynt.

Sut i Ddylunio Cronfa Ddata Gyda Pherthnasoedd Un-i-lawer

Er mwyn gweithredu perthynas un-i-lawer yn y tabl Athrawon a Chyrsiau, rydym yn torri'r tablau yn ddwy ac yn eu cysylltu gan ddefnyddio allwedd dramor .

Yma, rydym wedi dileu'r golofn Cwrs yn y tabl Athrawon:

Athrawon
Athro _ID Athro _Name
Teacher_001 Carmen
Athro_002 Veronica
Athro_003 Jorge

A dyma'r tabl Cyrsiau. Sylwch fod ei allwedd dramor, Teacher_ID, yn cysylltu cwrs i athro yn y tabl Athrawon:

Cyrsiau
Course_ID Enw'r cwrs Teacher_ID
Cwrs_001 Bioleg Teacher_001
Cwrs_002 Math Teacher_001
Cwrs_003 Saesneg Athro_003

Rydym wedi datblygu perthynas rhwng y tabl Athrawon a'r Cyrsiau gan ddefnyddio allwedd dramor.

Mae hyn yn dweud wrthym fod Carmen a Mathemateg yn cael eu haddysgu gan Carmen a bod Jorge yn dysgu Saesneg.

Gallwn weld sut mae'r dyluniad hwn yn osgoi unrhyw ddiswyddiadau posibl, yn caniatáu i athrawon unigol ddysgu nifer o gyrsiau, ac maent yn gweithredu perthynas un-i-lawer.

Gall cronfeydd data hefyd weithredu perthynas un-i-un a pherthynas lawer i lawer.