Skjøteavhengighet
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,[1] selv om aksiomatisering eksisterer for mer uttrykksfulle avhengighetsspråk, som for eksempel fullt typiserte avhengigheter.[2]:kapittel 8 Imidlertid er implikasjon av skjøteavhengigheter avgjørbar.[2]:teorem 8.4.12
Formell definisjon
[rediger | rediger kilde]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 .[3]
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
[rediger | rediger kilde]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å
[rediger | rediger kilde]- 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
[rediger | rediger kilde]- ^ Petrov, S. V. (1989). «Finite axiomatization of languages for representation of system properties». Information Sciences. 47: 339–372. doi:10.1016/0020-0255(89)90006-6.
- ^ a b Abiteboul; Hull; Vianu (1995). Foundations of databases. Addison-Wesley. ISBN 9780201537710.
- ^ Silberschatz, Korth. Database System Concepts (1st utg.).