Dipendenza transitiva - Transitive dependency

Una dipendenza transitiva è una dipendenza funzionale che vale in virtù della transitività tra vari componenti software.

Programmi per computer

In un programma per computer una dipendenza diretta è una funzionalità esportata da una libreria , o API , o da qualsiasi componente software a cui fa riferimento direttamente il programma stesso. Una dipendenza transitiva è qualsiasi dipendenza indotta dai componenti a cui il programma fa riferimento direttamente. Ad esempio, una chiamata a una funzione log() di solito induce una dipendenza transitiva a una libreria che gestisce l'I/O per scrivere il messaggio di log in un file.

Le dipendenze e le dipendenze transitive possono essere risolte in tempi diversi, a seconda di come il programma per computer viene assemblato e/o eseguito: ad esempio un compilatore può avere una fase di collegamento in cui le dipendenze vengono risolte. A volte il sistema di compilazione consente anche la gestione delle dipendenze transitive.

Allo stesso modo, quando un computer utilizza i servizi , un programma per computer può dipendere da un servizio che dovrebbe essere avviato prima di eseguire il programma. Una dipendenza transitiva in tal caso è qualsiasi altro servizio da cui dipende il servizio da cui dipendiamo direttamente, ad esempio un browser web dipende da un servizio di risoluzione dei nomi di dominio per convertire un URL web in un indirizzo IP ; il DNS dipenderà da un servizio di rete per accedere a un server dei nomi remoto. Il sistema di boot di Linux systemd si basa su un insieme di configurazioni che dichiarano le dipendenze dei moduli da avviare: al momento del boot systemd analizza tutte le dipendenze transitive per decidere l'ordine di esecuzione di ogni modulo da avviare.

Sistemi di gestione di database

Sia A, B e C designano tre insiemi distinti (ma non necessariamente disgiunti) di attributi di una relazione. Supponiamo che valgano tutte e tre le seguenti condizioni:

  1. A → B
  2. Non è il caso che B → A
  3. SI → DO

Allora la dipendenza funzionale A → C (che segue da 1 e 3 dall'assioma di transitività ) è una dipendenza transitiva.

Nella normalizzazione del database , una delle caratteristiche importanti della terza forma normale è che esclude alcuni tipi di dipendenze transitive. EF Codd , l'inventore del modello relazionale , ha introdotto i concetti di dipendenza transitiva e terza forma normale nel 1971.

Esempio

Una dipendenza transitiva si verifica nella seguente relazione:

Libro Genere Autore Nazionalità dell'autore
Ventimila leghe sotto i mari Fantascienza Giulio Verne francese
Viaggio al centro della terra Fantascienza Giulio Verne francese
Foglie d'erba Poesia Walt Whitman americano
Anna Karenina Narrativa letteraria Leone Tolstoj russo
una confessione Storia autobiografica Leone Tolstoj russo

Si applica la dipendenza funzionale {Libro} → {Nazionalità dell'autore}; cioè, se conosciamo il libro, conosciamo la nazionalità dell'autore. Inoltre:

  • {Libro} → {Autore}
  • {Autore} non → {Libro}
  • {Autore} → {Nazionalità dell'autore}

Quindi {Libro} → {Nazionalità dell'autore} è una dipendenza transitiva.

La dipendenza transitiva si è verificata perché un attributo non chiave (Autore) stava determinando un altro attributo non chiave (Nazionalità dell'autore).

Appunti

  1. ^ Codd, EF "Ulteriore normalizzazione del modello relazionale del database". (Presentato al Courant Computer Science Symposia Series 6, "Data Base Systems", New York City, 24-25 maggio 1971.) IBM Research Report RJ909 (31 agosto 1971). Ripubblicato in Randall J. Rustin (ed.), Data Base Systems: Courant Computer Science Symposia Series 6 . Prentice-Hall, 1972. Vedi pagine 45-51, che trattano la terza forma normale e la dipendenza transitiva.