Avansjoneel Transitive Dependencies foar help fan gewoane normalisearring
In transitive ôfhinklikheid yn in database is in yndirekte relaasje tusken wearden yn deselde tafel dy't in funksjonele ôfwikkeling feroarsaket. Om de normalisearringstandert fan Tredde Normal Form (3NF) te berikken, moatte jo in transitive ôfhinklikheid foarkomme.
Troch syn natuer hat in transitive ôfhinklikens trije of mear attributen nedich (of databank kolommen) dy't in funksjonele ôfhinging hawwe tusken har, dat betsjut dat kolom A yn in tabel op Kolom B troch in intermediate kolom C.
Lit sjen hoe't dit wurkje kin.
Transitive Dependency Example
AUTHORS
Author_ID | Skriuwer | Boek | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Ender's Game | Feriene Steaten |
Auth_001 | Orson Scott Card | Ender's Game | Feriene Steaten |
Auth_002 | Margaret Atwood | De handmaid's ferhaal | Kanada |
Yn it foarbyld fan 'e AUTHORS:
- Boek → Author : Hjirby befettet it boek- attribút de auteur- attribút. As jo de namme fan 'e boek witte, kinne jo de namme fan de auteur learje. De auteur bestiet lykwols gjin boek , om't in auteur meardere boeken skriuwt. Bygelyks, krekt om't wy de namme fan de auteur fan Orson Scott Card witte, kenne wy noch gjin boeknamme.
- Auteur → Author_Nationality : Ynklusyf it auteurattribute bepaalt de Author_Nationality , mar net de oare manier om; krekt omdat wy witte dat de nasjonaliteit net betsjut dat wy de skriuwer bepale kinne.
Mar dit tablet fertelt in transitive ôfhinging:
- Boek → Author_Nationality: As wy de namme fan 'e boek witte, kinne wy de nasjonaliteit fia de kolorje Author's bepale.
Avoiding Transitive Dependencies
Om it tredde normale formulier te garandearjen, lit de transitive ôfhinklikens fuortsmite.
Wy kinne begjinne mei it fuortheljen fan de Kolomboek út 'e top fan' e Auteurs en it meitsjen fan in aparte boekstafel:
BOEKEN
Book_ID | Boek | Author_ID |
---|---|---|
Book_001 | Ender's Game | Auth_001 |
Book_001 | Bern fan 'e Geast | Auth_001 |
Book_002 | De handmaid's ferhaal | Auth_002 |
AUTHORS
Author_ID | Skriuwer | Author_Nationality |
---|---|---|
Auth_001 | Orson Scott Card | Feriene Steaten |
Auth_002 | Margaret Atwood | Kanada |
Hat dit dit beheind? Litte wy ús ôfhinklikheden no ûndersykje:
BOOKS tafel :
- Book_ID → Boek: It boek hinget ôf fan 'e Book_ID .
- Gjin oare ôfwikselingen yn dizze tabel besteane, dus wy binne goed. Tink derom dat de bûtenlânske kaai Author_ID dizze tafel keppele nei de tabellen AUTHORS troch syn primêre kaai Author_ID . Wy hawwe in relaasje kreëarre om in transitive ôfhinklikheid te foarkommen, in kaai ûntwerp fan relaasje-database.
AUTHORS tabel :
- Autor_ID → Auteur: De auteur hinget fan 'e Author_ID .
- Auteur → Author_Nationality: De nasjonaliteit kin bepaald wurde troch de auteur.
- Autor_ID → Author_Nationality: De nasjonaliteit kin bepaald wurde fan 'e auteur_id fia it auteurattributje . Wy hawwe noch in transitive ôfhinklikens.
Wy moatte in tredde tabel taheakje om dizze gegevens te normalisearjen:
LIEDEN
Country_ID | Lân |
---|---|
Coun_001 | Feriene Steaten |
Coun_002 | Kanada |
AUTHORS
Author_ID | Skriuwer | Country_ID |
---|---|---|
Auth_001 | Orson Scott Card | Coun_001 |
Auth_002 | Margaret Atwood | Coun_002 |
No hawwe wy trije tabellen, wêrtroch't gebrûk fan frjemde toetsen is te keppeljen tusken de tabellen:
- De frjemde toetseboek fan 'e BOOK-tabel Author_ID ferwiist in boek nei in auteur yn' e tabel AUTHORS.
- De tafoeging fan 'e AUTHORS-tafellisten Country_ID ferwiist nei in auteur yn in lân yn' t tabel LOUNGE.
- De tabel COUNTRIES hat gjin frjemde kaai, omdat it gjin need hat om in oare tabel te ferbinen yn dizze ûntwerp.
Wêrom Transitive Dependencies binne Bad Database Design
Wat is de wearde fan 'e transitôfhinklikheden om te helpen te garandearjen fan 3NF? Litte wy ús earste tabel wer sjen en sjogge de problemen dy't se meitsje:
AUTHORS
Author_ID | Skriuwer | Boek | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Ender's Game | Feriene Steaten |
Auth_001 | Orson Scott Card | Bern fan 'e Geast | Feriene Steaten |
Auth_002 | Margaret Atwood | De handmaid's ferhaal | Kanada |
Dizze soarte fan ûntwerp kin bydrage oan data-anomalies en ynkonsesten op bygelyks:
- As jo de twa boeken "Children of Mind" en "Ender's Game" fuortsmite, sille jo de skriuwer "Orson Scott Card" en syn nasjonaliteit hielendal út 'e database stjoere.
- Jo kinne gjin nije auteur taheakje oan 'e database, as jo ek in boek tafoegje; wat as de auteur noch net publisearre is of jo witte de namme fan in boek dat se skreaun hat?
- As "Orson Scott Card" syn boargerij feroare hat, dan moatte jo it feroarje yn alle registers wêr't hy ferskynt. Hjirtroch ferskate rekord mei deselde auteur kin ta faluta gegevens komme: wat as de datayngearkomst net realisearret dat der meardere rekken foar him binne en de gegevens yn ien rekord feroaret?
- Jo kinne in boek net lêze lykas "The Handmaid's Tale" sûnder de skriuwer ek hielendal wiskje.
Dit binne gewoan wat redenen wêrom normalisearring , en it foarkommen fan transitive ôfhinklikens, beskermjen fan gegevens en garandearje konsistinsje.