Vermy Transitiewe Afhanklikhede om te help om Normalisering te verseker
'N Transitiewe afhanklikheid in 'n databasis is 'n indirekte verhouding tussen waardes in dieselfde tabel wat 'n funksionele afhanklikheid veroorsaak . Om die normaliseringsstandaard van Derde Normale Vorm (3NF) te behaal, moet u enige transitiewe afhanklikheid uitskakel.
Deur die aard daarvan vereis 'n transitiewe afhanklikheid drie of meer eienskappe (of databasis kolomme) wat 'n funksionele afhanklikheid tussen hulle het, wat beteken dat Kolom A in 'n tabel staatmaak op Kolom B deur middel van 'n intermediêre kolom C.
Kom ons kyk hoe dit kan werk.
Voorbeeld van Transitiewe Afhanklikheid
SKRYWERS
Author_ID | skrywer | Boek | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Ender's Game | Verenigde State |
Auth_001 | Orson Scott Card | Ender's Game | Verenigde State |
Auth_002 | Margaret Atwood | Die Diensmaagd se Tale | Kanada |
In die AUTHORS voorbeeld hierbo:
- Boek → Skrywer : Hier bepaal die Boek se kenmerk die Skrywer se kenmerk. As jy die boeknaam ken, kan jy die skrywer se naam leer. Die skrywer bepaal egter nie Boek nie , omdat 'n skrywer veelvuldige boeke kan skryf. Byvoorbeeld, net omdat ons die skrywer se naam Orson Scott Card ken, ken ons nog steeds nie die boek naam nie.
- Skrywer → Skrywer_Nationaliteit : Net so bepaal die Skrywer se attribuut die Author_Nationality , maar nie andersom nie; net omdat ons die nasionaliteit ken, beteken dit nie dat ons die outeur kan bepaal nie.
Maar hierdie tabel stel 'n transitiewe afhanklikheid voor:
- Boek → Author_Nationality: As ons die naam van die boek ken, kan ons die nasionaliteit bepaal deur die Author-kolom.
Vermy Transitiewe Afhanklikhede
Om Derde Normale Vorm te verseker, laat ons die transitiewe afhanklikheid verwyder.
Ons kan begin deur die boekkolom te verwyder uit die tabel Skrywers en om 'n aparte boeke-tabel te skep:
BOEKE
Book_ID | Boek | Author_ID |
---|---|---|
Book_001 | Ender's Game | Auth_001 |
Book_001 | Kinders van die Gees | Auth_001 |
Book_002 | Die Diensmaagd se Tale | Auth_002 |
SKRYWERS
Author_ID | skrywer | Author_Nationality |
---|---|---|
Auth_001 | Orson Scott Card | Verenigde State |
Auth_002 | Margaret Atwood | Kanada |
Het dit reggemaak? Kom ons kyk nou na ons afhanklikhede:
BOEKE tabel :
- Book_ID → Boek: Die boek hang af van die Book_ID .
- Geen ander afhanklikhede in hierdie tabel bestaan nie, dus is ons ok. Let daarop dat die vreemde sleutel Author_ID hierdie tabel aan die AUTHORS-tabel koppel deur sy primêre sleutel Author_ID . Ons het 'n verhouding geskep om 'n oorgangsafhanklikheid te voorkom, 'n sleutelontwerp van relasionele databasisse.
AUTHORS tabel :
- Author_ID → Author: Die outeur hang af van die Author_ID .
- Skrywer → Skrywer_Nationaliteit: Die nasionaliteit kan deur die skrywer bepaal word.
- Author_ID → Author_Nationality: Die nasionaliteit kan bepaal word deur die Author_ID deur die Author- kenmerk. Ons het steeds 'n oorgangsafhanklikheid.
Ons moet 'n derde tabel byvoeg om hierdie data te normaliseer:
LANDE
Country_ID | land |
---|---|
Coun_001 | Verenigde State |
Coun_002 | Kanada |
SKRYWERS
Author_ID | skrywer | Country_ID |
---|---|---|
Auth_001 | Orson Scott Card | Coun_001 |
Auth_002 | Margaret Atwood | Coun_002 |
Nou het ons drie tafels, wat gebruik maak van vreemde sleutels om tussen die tafels te skakel:
- Die BOEK-tabel se buitelandse sleutel Author_ID skakel 'n boek aan 'n skrywer in die AUTHORS-tabel.
- Die AUTHORS-tabel se buitelandse sleutel Country_ID skakel 'n skrywer na 'n land in die COUNTRIES-tabel.
- Die COUNTRIES-tabel het geen vreemde sleutel nie omdat dit nie nodig is om na 'n ander tabel in hierdie ontwerp te skakel nie.
Waarom Transitiewe Afhanklikhede Is Slegte Databasisontwerp
Wat is die waarde om transitiewe afhanklikhede te voorkom om 3NF te verseker? Kom ons kyk weer na ons eerste tafel en kyk na die probleme wat dit skep:
SKRYWERS
Author_ID | skrywer | Boek | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Ender's Game | Verenigde State |
Auth_001 | Orson Scott Card | Kinders van die Gees | Verenigde State |
Auth_002 | Margaret Atwood | Die Diensmaagd se Tale | Kanada |
Hierdie soort ontwerp kan bydra tot data-afwykings en teenstrydighede, byvoorbeeld:
- As jy die twee boeke "Children of the Mind" en "Ender's Game" uitgevee het, sal jy die skrywer "Orson Scott Card" en sy nasionaliteit heeltemal uit die databasis verwyder.
- Jy kan nie 'n nuwe outeur by die databasis voeg nie, tensy jy ook 'n boek byvoeg; Wat as die outeur nog ongepubliseer is of jy weet nie die naam van 'n boek wat sy outeur het nie?
- As "Orson Scott Card" sy burgerskap verander het, sal jy dit moet verander in alle rekords waarin hy verskyn. As jy veelvuldige rekords met dieselfde skrywer het, kan dit lei tot onakkurate data: wat as die data-invoerpersoon nie besef nie, is daar verskeie rekords vir hom en verander die data in slegs een rekord?
- Jy kan nie 'n boek soos "The Handmaid's Tale" uitvee sonder om die skrywer heeltemal te verwyder nie.
Dit is net 'n paar redes waarom normalisering , en die voorkoming van oorgang afhanklikhede, data beskerm en konsekwentheid verseker.