Skip to main content

Een gids voor het begrijpen van database-afhankelijkheden

Kansrekening - Onafhankelijke kansen (VWO wiskunde A/C) (Juni- 2025)

Kansrekening - Onafhankelijke kansen (VWO wiskunde A/C) (Juni- 2025)
Anonim

Een afhankelijkheid is een beperking die van toepassing is op of de relatie tussen kenmerken definieert. Het komt voor in een database wanneer informatie die is opgeslagen in dezelfde databasetabel op unieke wijze andere informatie bepaalt die is opgeslagen in dezelfde tabel. U kunt dit ook als een relatie beschrijven waarbij het kennen van de waarde van één attribuut (of een reeks attributen) voldoende is om u de waarde van een ander attribuut (of een reeks attributen) in dezelfde tabel te vertellen.

Databaseafhankelijkheden verwarren vaak zowel studenten als databaseprofessionals. Gelukkig zijn ze niet zo ingewikkeld als ze lijken. Ze kunnen het best worden uitgelegd aan de hand van enkele voorbeelden. Hier zullen we gemeenschappelijke typen database-afhankelijkheid onderzoeken.

Database afhankelijkheden en functionele afhankelijkheden

Zeggen dat er een afhankelijkheid is tussen attributen in een tabel is hetzelfde als zeggen dat er een functionele afhankelijkheid is tussen deze attributen. Als er een afhankelijkheid in een database is, zodat kenmerk B afhankelijk is van kenmerk A, schrijft u dit als volgt:

A -> B

In een tabel met kenmerken van werknemers, waaronder sofinummer (SSN) en naam, kan bijvoorbeeld worden vermeld dat de naam afhankelijk is van SSN (of SSN -> naam) omdat de naam van een werknemer uniek kan worden bepaald op basis van een SSN. De omgekeerde instructie (naam -> SSN) is echter niet waar, want meer dan één werknemer kan dezelfde naam hebben, maar altijd verschillende SSN's hebben.

Triviale functionele afhankelijkheden

Een triviale functionele afhankelijkheid treedt op wanneer u een functionele afhankelijkheid van een attribuut op een verzameling kenmerken beschrijft die het oorspronkelijke kenmerk bevat. {A, B} -> B is bijvoorbeeld een triviale functionele afhankelijkheid, zoals {name, SSN} -> SSN. Dit type functionele afhankelijkheid wordt triviaal genoemd omdat het kan worden afgeleid uit gezond verstand. Het is duidelijk dat als u de waarde van B al kent, de waarde van B op unieke wijze bepaald kan worden door die kennis.

Volledige functionele afhankelijkheden

Een volledig functionele afhankelijkheid treedt op wanneer u al voldoet aan de vereisten voor een functionele afhankelijkheid en de set kenmerken aan de linkerkant van de functionele afhankelijkheidsinstructie kan niet verder worden verlaagd. {SSN, age} -> name is bijvoorbeeld een functionele afhankelijkheid, maar het is geen volledig functionele afhankelijkheid omdat u de leeftijd aan de linkerkant van de instructie kunt verwijderen zonder de afhankelijkheidsrelatie te beïnvloeden.

Transitieve afhankelijkheden

Transitieve afhankelijkheden treden op wanneer er een indirecte relatie is die een functionele afhankelijkheid veroorzaakt. Bijvoorbeeld, A -> C is een transitieve afhankelijkheid wanneer het alleen waar is omdat zowel A -> B als B -> C waar zijn.

Multivalued afhankelijkheden

Meerwaardige afhankelijkheden treden op wanneer de aanwezigheid van een of meer rijen in een tabel de aanwezigheid van een of meer andere rijen in diezelfde tabel impliceert. Stel u bijvoorbeeld een autobedrijf voor dat veel automodellen vervaardigt, maar altijd de rode en blauwe kleuren van elk model maakt. Als u een tabel hebt met de modelnaam, kleur en het jaar van elke auto die het bedrijf produceert, is er een meerwaardige afhankelijkheid in die tabel. Als er een rij is voor een bepaalde modelnaam en een jaar in blauw, moet er ook een vergelijkbare rij zijn die overeenkomt met de rode versie van diezelfde auto.

Het belang van afhankelijkheden

Databaseafhankelijkheden zijn belangrijk om te begrijpen omdat ze de basisbouwstenen bieden die worden gebruikt bij databasenormalisatie, het proces van het efficiënt organiseren van gegevens in een database. Bijvoorbeeld:

  • Om een ​​tabel in de tweede normale vorm (2NF) te laten zijn, mag er geen geval van een nonprime-attribuut in de tabel voorkomen dat functioneel afhankelijk is van een subset van een kandidaatsleutel.
  • Voor een tabel in de derde normale vorm (3NF) moet elk nonprime-kenmerk een niet-transitieve functionele afhankelijkheid van elke kandidaatsleutel hebben.
  • Voor een tabel in Boyce-Codd Normal Form (BCNF) moet elke functionele afhankelijkheid (anders dan triviale afhankelijkheden) op een superkey zijn.
  • Voor een tabel die de vierde normale vorm (4NF) heeft, mag deze geen meerwaardige afhankelijkheden hebben.