Eitt til margra samskipta í gagnagrunninum

Fjölbreytt tengsl í gagnagrunni eiga sér stað þegar hvert skrá í töflu A kann að hafa marga tengda færslur í töflu B en hvert met í töflu B getur aðeins haft eina samsvarandi skrá í töflu A. Eitt til margra tengsl í gagnagrunnur er algengasta samskiptatæknihönnunin og er í hjarta góðrar hönnunar.

Íhuga tengsl kennara og námskeiðanna sem þeir kenna. Kennari getur kennt margar námskeið, en námskeiðið myndi ekki hafa sama samband við kennara.

Því fyrir hvert skrá í kennaraborðinu gætu verið margar færslur í Námskeiðstöflunni. Þetta er eitt til margra samskipta: einn kennari í margar námskeið.

Afhverju er að koma á fót einum til margra samskipta

Til að tákna eitt til margra samband, þarftu að minnsta kosti tvær töflur. Við skulum sjá af hverju.

Kannski skapaði við kennara borð þar sem við vildum skrá nafn og námskeið kennt. Við gætum hugsað það þannig:

Kennarar og námskeið
Kennari_ID Kennari_Name Námskeið
Kennari_001 Carmen Líffræði
Kennari_002 Veronica Stærðfræði
Kennari_003 Jorge Enska

Hvað ef Carmen kennir tvær eða fleiri námskeið? Við höfum tvær valkosti með þessari hönnun. Við gætum bara bætt því við núverandi skrá Carmen sem svona:

Kennarar og námskeið
Kennari_ID Kennari _Name Námskeið
Kennari_001 Carmen Líffræði, stærðfræði
Kennari_002 Veronica Stærðfræði
Kennari_003 Jorge Enska

Hönnunin hér að framan er hins vegar ósveigjanleg og gæti leitt til vandamála seinna þegar reynt var að setja inn, breyta eða eyða gögnum.

Það er erfitt að leita að gögnum. Þessi hönnun brýtur í bága við fyrstu meginregluna um eðlilegan gagnagrunn, fyrsta eðlilegu formi (1NF) , þar sem segir að hver taflafasi ætti að innihalda eitt, staklegt skjal af gögnum.

Annað hönnunarmöguleiki gæti verið að einfaldlega bæta við öðru met fyrir Carmen:

Kennarar og námskeið
Kennari _ID Kennari _Name Námskeið
Kennari_001 Carmen Líffræði
Kennari_001 Carmen Stærðfræði
Kennari_002 Veronica Stærðfræði
Kennari_003 Jorge Enska

Þetta fylgir 1NF en er ennþá léleg gagnasafnhönnun vegna þess að hún kynnir offramboð og gæti uppvakað mjög stóra gagnagrunn í óþörfu. Meira um vert, gögnin gætu orðið ósamræmi. Til dæmis, hvað ef nafn Carmen breyttist? Einhver sem vinnur með gögnin gæti endurnýjað nafn sitt í einu meti og mistekst að uppfæra það í seinni skrá. Þessi hönnun brýtur í bága við annað venjulegt form (2NF), sem fylgir 1NF og verður einnig að koma í veg fyrir uppsagnir margra skráa með því að skilja undirskila gagna í margar töflur og skapa tengsl milli þeirra.

Hvernig á að hanna gagnagrunn með einum til margra samskipta

Til að framkvæma eitt til margra tengsl á kennaranámskeiðinu og námskeiðinu skiptum við töflunum í tvo og tengjum þeim með erlendu takkanum .

Hér höfum við fjarlægt námskeiðssúluna í kennaraborðinu:

Kennarar
Kennari _ID Kennari _Name
Kennari_001 Carmen
Kennari_002 Veronica
Kennari_003 Jorge

Og hér er námskeiðið. Athugaðu að erlent lykill, kennari_ID, tengir námskeið við kennara í kennaraborðinu:

Námskeið
Course_ID Course_Name Kennari_ID
Course_001 Líffræði Kennari_001
Course_002 Stærðfræði Kennari_001
Course_003 Enska Kennari_003

Við höfum þróað tengsl milli kennara og námskeiðs borðsins með því að nota erlendan lykil.

Þetta segir okkur að bæði líffræði og stærðfræði eru kennt af Carmen og að Jorge kennir ensku.

Við getum séð hvernig þessi hönnun forðast allar hugsanlegar uppsagnir, gerir einstökum kennurum kleift að kenna mörgum námskeiðum og útfærir eitt til margra samskipta.

Gagnasöfn geta einnig komið í veg fyrir eitt til eitt samband og mörg til margra samskipta.