Hopp til innhold

Funksjonell avhengighet

Fra Wikipedia, den frie encyklopedi

I relasjonsdatabaser er en funksjonell avhengighet en begrensning mellom to mengder med attributter i en relasjon fra en database. Med andre ord er en funksjonell avhengighet en begrensning mellom to attributter i en relasjon. Gitt en relasjon R og mengde med attributter , sies X å funksjonelt bestemme Y (skrevet XY) hvis og bare hvis hver X-verdi i R er assosiert med nøyaktig én Y-verdi i R; R sies da å tilfredsstille den funksjonelle avhengigheten XY. Tilsvarende er projeksjonen en funksjon, altså at Y er en funksjon av X.[1][2] Sagt med enkle ord: Hvis verdiene for X-attributtene er kjente (si at de er x) så kan verdiene for Y-attributtene som tilsvarer x bestemmes ved å slå dem opp i en hvilken som helst tuppel av R som inneholder x. Vanligvis kalles X determinantmengden og Y den avhengige mengden. En funksjonell avhengighet FD: XY kalles triviell hvis Y er en delmengde av X.

Med andre ord betyr en avhengighet FD: XY at verdiene til Y bestemmes av verdiene til X. To tupler som deler de samme verdiene av X vil nødvendigvis ha de samme verdiene av Y.

Bestemmelse av funksjonelle avhengigheter er viktig i utforming av databaser i relasjonsmodellen, og i databasenormalisering og denormalisering. En enkel anvendelse av funksjonelle avhengigheter er Heaths teorem som sier at en relasjon R over en attributtmengde U og som tilfredsstiller en funksjonell avhengighet XY trygt kan deles i to relasjoner som har tapsfri skjøte-dekomposisjon til hvor Z = UXY er resten av attributtene. (Unioner av attributtmengder stilles vanligvis opp ved siden av hverandre i databaseteori.) Et viktig element i denne sammenhengen er en kandidatnøkkel definert som en minimalt mengde attributter som funksjonelt bestemmer alle attributtene i en relasjon. De funksjonelle avhengighetene, sammen med attributtdomenenet, velges slik at man genererer begrensninger som vil ekskludere så mye data som er upassende for brukerdomenet fra systemet som mulig.

En type logisk implikasjon er definert for funksjonelle avhengigheter på følgende måte: En mengde funksjonelle avhengigheter (sigma) impliserer logisk en annen mengde avhengigheter (gamma) hvis de finnes en relasjon R som tilfredsstiller alle avhengigheter fra som også tilfredsstiller alle avhengigheter fra ; dette skrives vanligvis som . En slik logisk implikasjon for funksjonelle avhengigheter medfører en korrekt og komplett aksiomatisering kjent som Armstrongs aksiomer.

Eksempler

[rediger | rediger kilde]

Anta at man designer et system for å spore kjøretøy og størrelsen på motorene deres. Hvert kjøretøy har et unikt rammenummer (VIN). Man kan da skrive VINengine_capacity fordi det ville være upassende for et kjøretøys motor å ha flere enn én størrelse. (Forutsatt at kjøretøy bare har én motor.) På den andre siden er engine_capacityVIN feil fordi det kan være mange kjøretøy med samme motorstørrelse.

Denne funksjonelle avhengigheten kan foreslå at attributtet engine_capacity plasseres i en relasjon med kandidatnøkkelen VIN, men det er kanskje ikke alltid hensiktsmessig. For eksempel hvis den funksjonelle avhengigheten oppstår som et resultat av de transitive funksjonelle avhengighetene VIN → vehicle_model og vehicle_model → engine_capacity så vil det ikke resultere i en normalisert relasjon.

Forelesninger

[rediger | rediger kilde]

Dette eksemplet illustrerer konseptet funksjonell avhengighet. Situasjonen som modelleres er at studenter besøker en eller flere forelesninger hvor de får tildelt en lærlæringsassistent. Anta videre at hver student befinner seg i et semester, og identifiseres med en unik heltalls-ID.

Student-ID Semester Forelesning Læringsassistent
1234 6 Numeriske metoder Emil
1221 4 Numeriske metoder Emma
1234 6 Visuell databehandling Oskar
1201 2 Numeriske metoder Olivia
1201 2 Fysikk II Simon

Legg merke til at når to rader i denne tabellen har samme Student-ID så har de også nødvendigvis de samme semester-verdi. Dette grunnleggende faktumet kan uttrykkes som en funksjonell avhengighet:

  • Student-ID → Semester.

Dersom det ble lagt til en rad hvor studenten hadde en annen verdi for semester så ville ikke lenger den funksjonelle avhengigheten eksistert. Dette betyr at den funksjonelle avhengigheten antydes av dataene da det er mulig å ha verdier som vil ugyldiggjøre den funksjonelle avhengigheten.

Andre ikke-trivielle funksjonelle avhengigheter kan identifiseres, for eksempel:

  • {Student-ID, Forelesning} → Læringsassistent
  • {Student-ID, Forelesning} → {Læringsassistent, Semester}

Sistnevnte uttrykker det faktum at mengden {StudentID, Forelesning} er en supernøkkel av relasjonen.

Ansattes avdeling

[rediger | rediger kilde]

Et klassisk eksempel på funksjonell avhengighet er hvilken avdeling arbeidere er ansatt i.

Ansatt-ID Ansattes navn Avdelings-ID Avdelingsnavn
0001 Ola Nordmann 1 Personaladministrasjon
0002 Kari Nordmann 2 Markedsføring
0003 Ola Andersen 1 Personaladministrasjon
0004 Kari Jonsen 3 Salg

I dette eksempel er det flere funksjonelle avhengigheter innebygd i en enkelt representasjon av data. Merk at fordi en ansatt bare kan være medlem av én avdeling så vil den ansattes unike ID bestemme avdelingen.

  • Ansatt-ID → Ansattnavn
  • Ansatt-ID → Avdelings-ID

I tillegg til denne relasjonen har tabellen også en funksjonell avhengighet gjennom et ikke-nøkkelattributt

  • Avdelings-ID → Avdelingsnavn

Dette eksemplet viser at selv om det finnes en funksjonell avhengighet Ansatt-ID → Avdelings-ID så vil ikke ansatt-ID være en logisk nøkkel for å bestemme avdelingsnavnet. I en prosess med normalisering av dataene vil man gjenkjenne alle funksjonelle avhengigheter, og tillate designeren å konstruere tabeller og relasjoner som er mer logiske basert på dataene.

Egenskaper og aksiomatisering av funksjonelle avhengigheter

[rediger | rediger kilde]

Gitt at X, Y og Z er mengder med attributter i en relasjon R kan man utlede flere egenskaper av funksjonelle avhengigheter. Blant de viktigste er følgende, vanligvis kalt Armstrongs aksiomer:[3]

Refleksivitet kan svekkes til bare , altså at det er et faktisk aksiom, mens de to andre er anstendige slutningsregler, hvilket mer presist gir opphav til følgende regler for syntaktisk konsekvens:[4]

Disse tre reglene er en korrekt og komplett aksiomatisering av funksjonelle avhengigheter. Denne aksiomatiseringen beskrives noen ganger som endelig fordi antallet slutningsregler er endelig,[5] med forbehold om at aksiomet og slutningsreglene alle er skjemaer, som betyr at X, Y og Z spenner over alle grunnledd (attributtmengder).[4]

Ved å bruke utvidelse og transitivitet kan man utlede to tilleggsregler:

  • Pseudotransitivitet: Hvis XY og YWZ, så XWZ[3]
  • Komposisjon: Hvis XY og ZW, så XZYW[6]

Man kan også utlede union- og dekomposisjonsreglene fra Armstrongs aksiomer:[3][7]

XY og XZ hvis og bare hvis XYZ

Tillukking av funksjonell avhengighet

[rediger | rediger kilde]

Tillukkingen er i hovedsak hele mengden verdier som kan bestemmes fra en mengde med kjente verdier for en gitt relasjon ved å bruke dets funksjonelle avhengigheter. Man bruker Armstrongs aksiomer for å gi et bevis, alså refleksivitet, utvidelse og transitivitet.

Gitt og vil en mengde funksjonelle avhengigheter som holder i : Tillukninen av i (notert +) er mengden av alle funksjonelle avhengigheter som logisk impliseres av .[8]

Tillukking av en mengde med attributter

[rediger | rediger kilde]

Tillukking av en mengde attributter X med hensyn på er mengden X+ av alle attributter som er funksjonelt bestemt av X ved hjelp av +.

Anta følgende liste over funksjonelle avhengigheter, og at det skal beregnes en tillukking for A fra denne relasjonen:

  1. AB
  2. BC
  3. ABD

Tillukkingen vil være som følger:

  1. A → A (av Armstrongs refleksivitet)
  2. A → AB (av 1. og (a))
  3. A → ABD (av (b), 3 og Armstrongs transitivitet)
  4. A → ABCD (av (c) og 2)

Tillukkingen er derfor A → ABCD. Ved å beregne tillukkingen av A har vi validert at A også er en god kandidatnøkkel da tillukkingen er hver enkelt dataverdi er i relasjonen.

Overdekking og ekvivalens

[rediger | rediger kilde]

Ikke-redundante overdekker

[rediger | rediger kilde]

Definisjon: overdekker hvis hver funksjonelle avhengighet i kan utledes av . dekker hvis ++. Hver mengde av funksjonelle avhengigheter har en kanonisk overdekking.

Ekvivalens av to mengder med funksjonelle avhengigheter

[rediger | rediger kilde]

To mengder med funksjonelle avhengigheter og over skjemaet er ekvivalente, som noteres , hvis + = +. Dersom vil overdekke for og vice versa. Med andre ord kalles ekvivalente mengder med funksjonelle avhengigheter for overdekker av hverandre.

Ikke-redundante overdekker

[rediger | rediger kilde]

En mengde av funksjonelle avhengigheter er ikke-redundant hvis det ikke er en ekte delmengde av med . Hvis en slik eksisterer er redundant. er ikke-redundant overdekke for hvis er overdekke for og er ikke-redundant.En alternativ karakterisering av ikke-redundans er at er ikke-redundant hvis det er ingen funksjonelle avhengigheter XY i slik at - {XY} XY. En funksjonell avhengighet XY i er redundant i hvis - {XY} XY.

Bruksområder for normalisering

[rediger | rediger kilde]

Heaths teorem

[rediger | rediger kilde]

En viktig egenskap (som gir en umiddelbar anvendelse) av funksjonelle avhengigheter er at hvis R er en relasjon med kolonner navngitt fra en mengde attributter U og R tilfredsstiller en funksjonell avhengighet XY så er hvor Z = UXY. Intuitivt, hvis en funksjonell avhengighet XY holder i R, kan relasjonen trygt deles i to relasjoner ved siden av kolonnen X (som er en nøkkel for ) som sikrer at når de to delene skjøtes sammen tilbake går ingen data tapt. Altså vil en funksjonell avhengighet gi en enkel måte å konstruere en tapsfri skjøte-dekomponering av R i to mindre relasjoner. Dette faktumet kalles noen ganger Heaths teorem, og er et av de tidlige resultatene innen databaseteori.[9]

Heaths teorem sier effektivt at man kan trekke ut verdiene til Y fra den store relasjonen R og lagre dem i en, altså , som ikke har noen verdirepetisjoner i raden for X og er effektivt en oppslagstabell for Y tastet av X og som følgelig bare gir ett sted å oppdatere Y som tilsvarer hver X i motsetning til den "store" relasjonen R hvor det er potensielt mange kopier av hver X, hver med sin kopi av Y som må holdes synkronisert ved oppdateringer. (Denne elimineringen av redundans er en fordel i OLTP-kontekster hvor mange endringer forventes, men ikke så mye i OLAP-kontekster som hovedsakelig involverer spørringer.) Heaths dekomponering etterlater bare X som fungerer som en fremmednøkkel i resten av den store tabellen .

Funksjonelle avhengigheter bør imidlertid ikke forveksles med inklusjonsavhengigheter som er formalismen for fremmednøkler: Selv om de brukes til normalisering så uttrykker funksjonelle avhengigheter begrensninger over en relasjon (skjema), mens inklusjonsavhengigheter uttrykker begrensninger mellom relasjonsskjemaer i et databaseskjema. Videre krysser de to konseptene ikke engang i klassifiseringen av avhengigheter: Funksjonelle avhengigheter er likhetsgenererende avhengigheter, mens inklusjonsavhengigheter er tuppelgenererende avhengigheter. Å håndheve referansebegrensninger etter dekomponering av relasjonsskjema (normalisering) krever en ny formalisme, altså inklusjonsavhengigheter. I dekomponeringen som følger av Heaths teorem er det ingenting som hindrer at innsetting av tupler i har en verdi av X som ikke finnes i .

Normalformer

[rediger | rediger kilde]

Normalformer er nivåer av databasenormalisering som bestemmer "godheten" til en tabell. Vanligvis anses tredje normalform for å være en "god" standard for en relasjonsdatabaser.[trenger referanse]

Normalisering tar sikte på å frigjøre databasen fra avvik forårsaket av oppdatering, innsetting og sletting. Den sikrer også at en ny verdi som introduseres i relasjonen vil ha minimal effekt på databasen, og dermed minimal effekt på applikasjonene som bruker databasen.[trenger referanse]

Mengder avhengig av irredusible funksjoner

[rediger | rediger kilde]

En mengde S med funksjonelle avhengigheter er irredusibel hvis mengden har følgende tre egenskaper:

  1. Hver høyremengde av en funksjonell avhengighet av S inneholder bare ett attributt.
  2. Hver venstremengde av en funksjonell avhengighet av S er irreduserbar. Dette betyr at å redusere et attributt fra venstre mengde vil endre innholdet i S (S vil miste noe informasjon).
  3. Å redusere funksjonell avhengighet vil endre innholdet i S.

Mengder med funksjonelle avhengigheter med disse egenskapene kalles også kanoniske eller minimale. Å finne et slikt mengde S med funksjonelle avhengigheter som tilsvarer en inngangsmengde S' gitt som innputt kalles å finne et minimalt overdekke av S'. Dette problemet kan løses i polynomtid.[10]

Referanser

[rediger | rediger kilde]
  1. ^ Terry Halpin. Information Modeling and Relational Databases (2nd utg.). Morgan Kaufmann. s. 140. ISBN 978-0-12-373568-3. 
  2. ^ Chris Date. Database Design and Relational Theory: Normal Forms and All That Jazz. O'Reilly Media, Inc. s. 21. ISBN 978-1-4493-2801-6. 
  3. ^ a b c Abraham Silberschatz; Henry Korth; S. Sudarshan. Database System Concepts (6th utg.). McGraw-Hill. s. 339. ISBN 978-0-07-352332-3. 
  4. ^ a b M. Y. Vardi. Fundamentals of dependency theory. In E. Borger, editor, Trends in Theoretical Computer Science, pages 171–224. Computer Science Press, Rockville, MD, 1987. ISBN 0881750840
  5. ^ Abiteboul; Hull; Vianu (1995), Foundations of Databases, Addison-Wesley, ISBN 0-201-53771-0 
  6. ^ S. K. Singh. Database Systems: Concepts, Design & Applications. Pearson Education India. s. 323. ISBN 978-81-7758-567-4. 
  7. ^ Hector Garcia-Molina; Jeffrey D. Ullman; Jennifer Widom. Database systems: the complete book (2nd utg.). Pearson Prentice Hall. s. 73. ISBN 978-0-13-187325-4.  This is sometimes called the splitting/combining rule.
  8. ^ . 1. februar 1996. 
  9. ^ Heath, I. J. «Unacceptable file operations in a relational data base». Proceedings of the 1971 ACM SIGFIDET (now SIGMOD) Workshop on Data Description, Access and Control - SIGFIDET '71. doi:10.1145/1734714.1734717.  cited in:
  10. ^ Meier, Daniel (1980). «Minimum covers in the relational database model». Journal of the ACM. 27 (4): 664–674. doi:10.1145/322217.322223. Mal:Closed access