Forðastu að flytja til viðhalds til að tryggja að viðhalda stöðlun
Tíðni háðs í gagnagrunni er óbeint tengsl milli gilda í sama töflunni sem veldur hagnýtum ósjálfstæði . Til að ná eðlilegum stöðlum þriðja eðlilegs eyðublaðs (3NF) verður þú að útrýma einhverjum tímabundnum ósjálfstæði.
Af eðli sínu krefst afleiðingarþolir þrír eða fleiri eiginleikar (eða gagnasöfnunarstaðir) sem hafa hagnýtur ósjálfstæði milli þeirra, sem þýðir að dálki A í töflu byggist á dálki B gegnum millistigssúluna C.
Við skulum sjá hvernig þetta gæti virkað.
Dæmi um gagnkvæmni
AUTHORS
Author_ID | Höfundur | Bók | Höfundur_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Leik Ender's | Bandaríkin |
Auth_001 | Orson Scott Card | Leik Ender's | Bandaríkin |
Auth_002 | Margaret Atwood | Tími ambáttarinnar | Kanada |
Í AUTHORS dæmi hér að ofan:
- Bók → Höfundur : Hér skilgreinir bókkenni eiginleiki höfundar . Ef þú þekkir bókamerkið getur þú lært nafn höfundar. Hins vegar ákveður höfundur ekki bók , því að höfundur getur skrifað margar bækur. Til dæmis, bara vegna þess að við þekkjum nafn höfundarins Orson Scott Card, vitum við enn ekki bókheitið.
- Höfundur → Höfundur_Nationality : Á sama hátt ákvarðar höfundurinn eiginleiki höfundarins , en ekki á hinn bóginn ; bara vegna þess að við þekkjum þjóðernið þýðir ekki að við getum ákvarðað höfundinn.
En þetta borð kynnir viðvarandi háð:
- Bók → Höfundur_Nationality: Ef við þekkjum nafn bókarinnar getum við ákvarðað þjóðerni í gegnum dálkinn Höfundur.
Forðastu aðhvarfseinkenni
Til að tryggja þriðja eðlilegt eyðublað, skulum við fjarlægja viðkvæma frásögn.
Við getum byrjað með því að fjarlægja bókakúluna úr töflunni Höfundar og búa til sérstakt bækur borð:
BÆKUR
Book_ID | Bók | Author_ID |
---|---|---|
Book_001 | Leik Ender's | Auth_001 |
Book_001 | Börn í huga | Auth_001 |
Book_002 | Tími ambáttarinnar | Auth_002 |
AUTHORS
Author_ID | Höfundur | Höfundur_Nationality |
---|---|---|
Auth_001 | Orson Scott Card | Bandaríkin |
Auth_002 | Margaret Atwood | Kanada |
Vissir þetta lagað það? Við skulum skoða ósjálfstæði okkar núna:
Bækur borð :
- Book_ID → Bók: Bókin fer eftir Book_ID .
- Engin önnur ósjálfstæði í þessari töflu eru til, svo við erum í lagi. Athugaðu að erlent lykill Author_ID tengir þennan töflu við AUTHORS töflunni með aðal lykilorði sínum AuthorID . Við höfum búið til sambandi til að koma í veg fyrir langvarandi ósjálfstæði, lykilhönnun gagnrýni gagnagrunna.
AUTHORS borð :
- Höfundur_ID → Höfundur: Höfundur fer eftir Author_ID .
- Höfundur → Höfundur_Nationality: Þjóðerni er hægt að ákvarða af höfundinum.
- Höfundur_ID → Höfundur_Nationality: Þjóðerni er hægt að ákvarða af höfundi_ID gegnum höfundaraðganginn . Við höfum enn meðgangssamhengi.
Við þurfum að bæta við þriðja töflunni til að staðla þessar upplýsingar:
Lönd
Country_ID | Land |
---|---|
Coun_001 | Bandaríkin |
Coun_002 | Kanada |
AUTHORS
Author_ID | Höfundur | Country_ID |
---|---|---|
Auth_001 | Orson Scott Card | Coun_001 |
Auth_002 | Margaret Atwood | Coun_002 |
Nú höfum við þrjár töflur með því að nota erlenda lykla til að tengja á milli borðanna:
- Hinn erlendi lykill BOOK töflunnar Author_ID tengir bók við höfund í töflunni AUTHORS.
- AUTHORS töflunnar erlent lykill Country_ID tengir höfund við land í LANDI töflunni.
- COUNTRIES borðið hefur enga erlenda lykil vegna þess að það þarf ekki að tengjast öðrum töflum í þessari hönnun.
Hvers vegna gagnvirk afbrigði eru slæm gagnagrunnshönnun
Hvað er verðmæti þess að forðast aðhvarfsleysi til að tryggja 3NF? Við skulum íhuga fyrstu töfluna okkar aftur og sjá þau mál sem það skapar:
AUTHORS
Author_ID | Höfundur | Bók | Höfundur_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Leik Ender's | Bandaríkin |
Auth_001 | Orson Scott Card | Börn í huga | Bandaríkin |
Auth_002 | Margaret Atwood | Tími ambáttarinnar | Kanada |
Þessi tegund af hönnun getur stuðlað að gögnum frávik og ósamræmi, til dæmis:
- Ef þú hefur eytt tveimur bókum "Barn í huga" og "Ender's Game," myndirðu eyða höfundinum "Orson Scott Card" og þjóðerni hans alveg úr gagnagrunninum.
- Þú getur ekki bætt við nýjum höfund í gagnagrunninum nema þú bætir einnig við bók; Hvað ef höfundurinn er ennþá óútgefinn eða þú veist ekki nafn bókarinnar sem hún hefur skrifað?
- Ef "Orson Scott Card" breytti ríkisborgararétti sínu verður þú að breyta því í öllum skrám sem hann birtist. Ef þú hefur margar færslur með sömu höfundum getur það leitt til ónákvæmar gagna: Hvað gerist ef gagnaþátturinn átta sig ekki á að það séu margar færslur fyrir hann og breytir gögnum í aðeins einu meti?
- Þú getur ekki eytt bók eins og "The Tailor's Tale" án þess að eyða höfundinum alveg.
Þetta eru bara nokkrar ástæður fyrir því að eðlilegt sé að forðast og að forðast aðhvarfsleysi, vernda gögn og tryggja samræmi.