Transitiv avhengighet

A depends on B, which depends on C. Therefore, A is a transitive dependent of C.
Illustrasjon av en transitiv avhengighet

En transitiv avhengighet er et indirekte avhengighetsforhold mellom programvarekomponenter. Denne typen avhengighet holdes i kraft av en transitiv relasjon fra en komponent som programvaren er direkte avhengig av.

Dataprogrammer

I et dataprogram er en direkte avhengighet funksjonalitet fra et bibliotek eller API, eller en hvilken som helst programvarekomponent som refereres direkte av selve programmet. En transitiv avhengighet er enhver avhengighet indusert av en annen komponent, som igjen direkte eller indirekte refereres til av programmet. For eksempel kan et kall til en log()-funksjon indusere en transitiv avhengighet til et bibliotek som administrerer I/O-en for å skrive en melding til en loggfil .

Avhengigheter og transitive avhengigheter kan slås opp på forskjellige tidspunkt, avhengig av hvordan dataprogrammet er satt sammen og/eller utført: For eksempel kan en kompilator ha en lenkefase hvor avhengighetene løses. Noen ganger tillater byggesystemet til og med administrasjon av transitive avhengigheter.[trenger referanse]

På samme måte når en datamaskin bruker tjenester kan et dataprogram være avhengig av en tjeneste som bør startes før programmet kjøres. En transitiv avhengighet i et slikt tilfelle er enhver annen tjeneste som tjenesten man er direkte avhengig av igjen er avhengig av, for eksempel at en nettleser er avhengig av en tjeneste for å konvertere en nettadresses domenenavn (DNS) til en IP-adresse. DNS vil da avhenge av en nettverkstjeneste for å få tilgang til en ekstern navneserver. Linux-oppstartssystemet systemd er basert på en mengde konfigurasjoner som erklærer avhengighetene til modulene som skal startes: Ved oppstartstidspunktet analyserer systemd alle transitive avhengigheter for å bestemme utførelsesrekkefølgen for hver modul som skal starte.

Databasestyringssystemer

Anta at entitetene A, B og C eksisterer slik at følgende utsagn gjelder:

  1. A → B er en direkte avhengig relasjon som eksisterer.
  2. Det er ingen B → A-relasjon.
  3. B → C er en direkte avhengig relasjon som eksisterer.

Da er den funksjonelle avhengigheten A → C en transitiv avhengighet (som følger av Armstrong's transitivitetsaksiom).

I databasenormalisering er en av de viktige egenskapene til tredje normalform at den utelukker visse typer transitive avhengigheter. Edger F. Codd, oppfinneren av relasjonsmodellen, introduserte begrepene transitiv avhengighet og tredje normalform i 1971.

Eksempel

En transitiv avhengighet oppstår i følgende relasjon:

Bok Sjanger Forfatter Forfatterens nasjonalitet
En verdensomseiling under havet Science fiction Jules Verne Fransk
En reise til jordens indre Science fiction Jules Verne Fransk
Leaves of Grass Poesi Walt Whitman Amerikansk
Anna Karenina Litterær skjønnlitteratur Leo Tolstoj Russisk
En bekjennelse Selvbiografisk historie Leo Tolstoj Russisk

Den funksjonelle avhengigheten {Bok} → {Forfatterens nasjonalitet} dukker opp; det vil si at hvis vi kjenner boken kan vi vite forfatterens nasjonalitet. Dessuten:

  • {Bok} → {Forfatter}
  • {Forfatter} fører ikke → {Bok}
  • {Forfatter} → {Forfatterens nasjonalitet}

Derfor er {Bok} → {Forfatterens nasjonalitet} en transitiv avhengighet.

Se også

Referanser

  1. ↑ Codd, E.F. "Further Normalization of the Data Base Relational Model." (Presented at Courant Computer Science Symposia Series 6, "Data Base Systems," New York City, May 24th-25th, 1971.) IBM Research Report RJ909 (August 31st, 1971). Republished in Randall J. Rustin (ed.), Data Base Systems: Courant Computer Science Symposia Series 6. Prentice-Hall, 1972. See pages 45-51, which cover third normal form and transitive dependence.