I databaseteori er en skjøteavhengighet en begrensning på mengden tillatte relasjoner i et databaseskjema. En tabell omfattes av en skjøteavhengighet hvis alltid kan gjenskapes ved å skjøte sammen flere tabeller som hver har en delmengde av attributtene til . Dersom en av tabellene i skjøten har alle attributtene til tabellen kalles skjøteavhengigheten triviell.
Skjøteavhengighet spiller en viktig rolle i femte normalform (5NF), også kjent som projeksjonsskjøt normalform, fordi det kan bevises at hvis et skjema er dekomponert i tabellene til , så vil dekomponeringen være en tapsfri-skjøt-dekomponering dersom de lovlige relasjonene på er begrenset til en skjøteavhengighet på kalt .
En annen måte å beskrive en skjøteavhengighet på er å si at relasjonene i skjøteavhengigheten er uavhengige av hverandre.
I motsetning til funksjonelle avhengigheter er det ingen korrekt og komplett aksiomatisering for skjøteavhengigheter, selv om aksiomatisering eksisterer for mer uttrykksfulle avhengighetsspråk, som for eksempel fullt typiserte avhengigheter. Imidlertid er implikasjon av skjøteavhengigheter avgjørbar.
Formell definisjon La være et relasjonsskjema og la være en nedbryting av .
Relasjonen tilfredsstiller skjøteavhengigheten:
hvis
En skjøteavhengighet er triviell hvis en av selv er .
En binær skjøteavhengighet kalles flervaluert avhengighet av historiske årsaker på grunn av at de ble studert før det generelle tilfellet. Mer spesifikt, hvis U er en mengde attributter og R en relasjon over den, så vil R tilfredsstille hvis og bare hvis R tilfredsstiller
Eksempel Anta at en pizzakjede modellerer innkjøp i tabellen Ordre = {ordrenummer, kundenavn, pizzanavn, kurer}.
Følgende relasjoner kan utledes:
Kundenavnet avhenger av ordrenummeret Pizzanavnet avhenger av ordrenummeret Kureren avhenger av ordrenummeret
Siden relasjonene er uavhengige har vil følgende skjøteavhengighet: *((ordrenummer, kundenavn), (ordrenummer, pizzanavn), (ordrenummer, kurer)).
Hvis hver kunde har sin egen kurer, kan det imidlertid være en skjøteavhengighet som dette: *((ordrenummer, kundenavn), (ordrenummer, pizzanavn), (ordrenummer, kurer), (kundenavn, kurer)), men *((ordrenummer, kundenavn, kurer), (ordrenummer, pizzanavn)) vil også være gyldig. Dette eksempelet gjør det åpenbart at bare å ha en skjøteavhengighet ikke er nok til å normalisere et databaseskjema.
Se også
Chase-algoritmen, enkel fikspunktalgoritme for å teste og håndheving av implikasjoner av dataavhengigheter i databasesystemer Antakelsen om den universelle relasjonen, ideen om at alle dataattributter i en relasjonsdatabase kan plasseres i en tabell, som deretter kan dekomponeres etter behov
Referanser
Kategori:Databaser