Skip to content

Wat is transitieve afhankelijkheid in een database?

17 de juni de 2021
Programmer 57235e293df78c5640e960a7

Een transitieve afhankelijkheid in een database is een indirecte relatie tussen waarden in dezelfde tabel die een functionele afhankelijkheid veroorzaakt. Om de normalisatiestandaard van de derde normaalvorm (3NF) te bereiken, moet u elke transitieve afhankelijkheid elimineren. Door zijn aard vereist een transitieve afhankelijkheid drie of meer attributen (of databasekolommen) met een functionele afhankelijkheid ertussen, wat betekent dat kolom A in een tabel afhankelijk is van kolom B via een tussenliggende kolom C. Laten we eens kijken hoe dit zou kunnen werken.

Voorbeeld van transitieve afhankelijkheid

AUTEURS

Auteur_ID Schrijver Boek Auteur_Nationaliteit
Auth_001 Orson Scott-kaart Ender’s spel Verenigde Staten
Auth_001 Orson Scott-kaart Kinderen van de geest Verenigde Staten
Auth_002 Margaret Atwood Het verhaal van de dienstmaagd Canada

In het AUTEURS-voorbeeld hierboven:

  • Boek → Auteur: Hier de Boek attribuut bepaalt de Schrijver attribuut. Als u de naam van het boek weet, kunt u de naam van de auteur leren. Echter, Schrijver bepaalt niet Boek, omdat een auteur meerdere boeken kan schrijven. Bijvoorbeeld, alleen omdat we weten dat de naam van de auteur is Orson Scott-kaart, we weten de naam van het boek nog steeds niet.
  • Auteur → Auteur_Nationaliteit: Zo ook de Schrijver attribuut bepaalt de Auteur_Nationaliteit, maar niet andersom – alleen omdat we de nationaliteit van de auteur kennen, betekent niet dat we de auteur kunnen bepalen.

Maar deze tabel introduceert een transitieve afhankelijkheid:

  • Boek →Auteur_Nationaliteit: Als we de boeknaam weten, kunnen we de nationaliteit van de auteur bepalen via de kolom Auteur.

Transitieve afhankelijkheden vermijden

Laten we de transitieve afhankelijkheid verwijderen om de derde normale vorm te garanderen. We kunnen beginnen door de kolom Boek uit de tabel Auteurs te verwijderen en een aparte tabel Boeken te maken:

BOEKEN

Boek_ID Boek Auteur_ID
Boek_001 Ender’s spel Auth_001
Boek_001 Kinderen van de geest Auth_001
Boek_002 Het verhaal van de dienstmaagd Auth_002

AUTEURS

Auteur_ID Schrijver Auteur_Nationaliteit
Auth_001 Orson Scott-kaart Verenigde Staten
Auth_002 Margaret Atwood Canada

Heeft dit het verholpen? Laten we nu onze afhankelijkheden onderzoeken:

BOEKEN tafel:

  • Boek_ID → Boek: De Boek hangt af van de Boek_ID.
  • Er zijn geen andere afhankelijkheden in deze tabel, dus we zijn in orde. Merk op dat de externe sleutel, Auteur_ID, koppelt deze tabel aan de AUTHORS-tabel via de primaire sleutel, Auteur_ID. We hebben een relatie gecreëerd om een ​​transitieve afhankelijkheid te vermijden, een belangrijk ontwerp van relationele databases.

AUTEURS tabel:

  • Auteur_ID → Auteur: De Schrijver hangt af van de Auteur_ID.
  • Auteur → Auteur_Nationaliteit: De nationaliteit kan door de auteur worden bepaald.
  • Auteur_ID → Auteur_Nationaliteit: De nationaliteit kan worden bepaald aan de hand van de Auteur_ID door het Schrijver attribuut. We hebben nog steeds een transitieve afhankelijkheid.

We moeten een derde tabel toevoegen om deze gegevens te normaliseren:

LANDEN

Land_ID land
Coun_001 Verenigde Staten
Coun_002 Canada

AUTEURS

Auteur_ID Schrijver Land_ID
Auth_001 Orson Scott-kaart Coun_001
Auth_002 Margaret Atwood Coun_002

Nu hebben we drie tabellen, die gebruikmaken van externe sleutels om de tabellen te koppelen:

  • De refererende sleutel van de BOOK-tabel, Auteur_ID, koppelt een boek aan een auteur in de tabel AUTEURS.
  • De refererende sleutel van de AUTHORS-tabel, Land_ID, koppelt een auteur aan een land in de tabel LANDEN.
  • De tabel COUNTRIES heeft geen externe sleutel omdat er in dit ontwerp geen koppeling naar een andere tabel nodig is.

Waarom transitieve afhankelijkheden een slecht databaseontwerp zijn

Wat is de waarde van het vermijden van transitieve afhankelijkheden om 3NF te helpen verzekeren? Laten we onze eerste tabel opnieuw bekijken en de problemen bekijken die deze veroorzaakt:

AUTEURS

Auteur_ID Schrijver Boek Auteur_Nationaliteit
Auth_001 Orson Scott-kaart Ender’s spel Verenigde Staten
Auth_001 Orson Scott-kaart Kinderen van de geest Verenigde Staten
Auth_002 Margaret Atwood Het verhaal van de dienstmaagd Canada

Dit soort ontwerp kan bijdragen aan gegevensafwijkingen en inconsistenties, bijvoorbeeld:

  • Als je de twee boeken hebt verwijderd Kinderen van de geest en Ender’s spel, u zou de auteur “Orson Scott Card” en zijn nationaliteit volledig uit de database verwijderen.
  • U kunt geen nieuwe auteur aan de database toevoegen, tenzij u ook een boek toevoegt. Wat als de auteur nog niet is gepubliceerd of u de naam niet weet van een boek dat hij heeft geschreven?
  • Als “Orson Scott Card” zijn staatsburgerschap heeft gewijzigd, moet u zijn staatsburgerschap wijzigen in alle records waarin hij voorkomt. Het hebben van meerdere records met dezelfde auteur kan leiden tot onnauwkeurige gegevens. Wat als de persoon die gegevens invoert niet beseft dat er meerdere records voor iemand zijn en de gegevens in slechts één record wijzigt?
  • U kunt een boek zoals . niet verwijderen Het verhaal van de dienstmaagd zonder ook de auteur volledig te verwijderen.

Veel Gestelde Vragen

  • Wat zijn de soorten afhankelijkheden in een databasebeheersysteem? Er zijn vier soorten databaseafhankelijkheden: triviale functionele afhankelijkheden, volledig functionele afhankelijkheden, transitieve afhankelijkheden en meerwaardige afhankelijkheden.
  • Hoe verschilt functionele afhankelijkheid van transitieve afhankelijkheid? In databasebeheer is afhankelijkheid een relatie tussen twee of meer attributen (kolommen). Terwijl functionele afhankelijkheid een associatie is tussen twee attributen van dezelfde relatie, treedt transitieve afhankelijkheid op wanneer een indirecte relatie functionele afhankelijkheid veroorzaakt.

Meer van Lifewire

  • Wat is een databaserelatie?

  • Handen van een webdesigner die een digitale tablet gebruikt

    Volledige functionele afhankelijkheid bij databasenormalisatie

  • Databaseprogrammeur met behulp van een laptop aan een bureau in een thuiskantoor

    Een database in de derde normale vorm (3NF) plaatsen

  • Mensen uit het bedrijfsleven bespreken via laptop aan bureau in vergadering

    Een databasekenmerk definieert de eigenschappen van een tabel

  • Zakenman met behulp van computer in virtuele serverruimte.

    Een database in de eerste normale vorm zetten

  • Digitale weergave van computercode en verbindingslijnen die een database vertegenwoordigen

    Woordenlijst van algemene databasetermen

  • Jonge vrouw concentreert zich op haar werk achter de computer

    Wat zijn database-afhankelijkheden?

  • De hand van de vrouw houdt haar hand open met een geïllustreerde netwerkverbinding erboven

    Meerwaardige afhankelijkheid in databaseontwerp

  • Gestileerd databasestroomschema

    Basisprincipes van databasenormalisatie

  • Databasebeheerder die aan bureau werkt

    Een databasedomein definiëren

  • Close-up zijaanzicht van medio jaren '20 blonde zwarte vrouw die haar softwareontwikkelingsproject doet.  Ze zit achter een desktopcomputer en drinkt een kopje koffie terwijl ze op een computer werkt.

    Wat is de Boyce-Codd-normale vorm (BCNF)?

  • Lay-out van databaseschema

    Wat is een databaseschema?

  • Vrouw met uitzicht op serverruimte

    Een-op-veel-relaties in een database

  • Servers in serverracks met een overlay van een virtueel netwerkdiagram.

    Triviale functionele afhankelijkheid begrijpen

  • Databasebeheerder die aan bureau werkt

    Determinanten en hun rol in een database

  • Nook-logo

    Nook-app voor Android

reddingsdraad

Volg ons

  • Facebook

  • Over ons
  • Reclame maken
  • Privacybeleid
  • Cookie beleid
  • carrières
  • Redactionele richtlijnen
  • Contact
  • Gebruiksvoorwaarden
  • EU-privacy
  • Privacyverklaring Californië
  • TRUSTe

Uw privacyrechten

Lifewire en onze externe partners gebruiken cookies en verwerken persoonlijke gegevens zoals unieke identificatiegegevens op basis van uw toestemming om informatie op een apparaat op te slaan en/of te openen, gepersonaliseerde advertenties weer te geven en voor inhoudsmeting, doelgroepinzicht en productontwikkeling. Klik hieronder om uw toestemmingskeuzes voor Lifewire.com te wijzigen of in te trekken, inclusief uw recht om bezwaar te maken wanneer een legitiem belang wordt gebruikt. U kunt uw instellingen op elk moment bijwerken via de link “EU-privacy” onderaan elke pagina. Deze keuzes worden wereldwijd aan onze partners gesignaleerd en hebben geen invloed op de browsegegevens. Lijst met partners (leveranciers)

Wij en onze partners verwerken gegevens om:

Scan actief apparaatkenmerken voor identificatie. Gebruik nauwkeurige geolocatiegegevens. Informatie op een apparaat opslaan en/of openen. Selecteer gepersonaliseerde inhoud. Maak een gepersonaliseerd inhoudsprofiel. Meet advertentieprestaties. Selecteer basisadvertenties. Maak een gepersonaliseerd advertentieprofiel. Selecteer gepersonaliseerde advertenties. Pas marktonderzoek toe om doelgroepinzichten te genereren. Inhoudsprestaties meten. Ontwikkelen en verbeteren van producten. Lijst met partners (leveranciers)