Una dependencia transitiva es una dependencia funcional que se mantiene en virtud de la transitividad entre varios componentes de software.
Programas de computador
En un programa de computadora, una dependencia directa es una funcionalidad exportada por una biblioteca , API o cualquier componente de software al que hace referencia directamente el programa. Una dependencia transitiva es cualquier dependencia inducida por los componentes a los que el programa hace referencia directamente. Por ejemplo, una llamada a una función log () generalmente inducirá una dependencia transitiva a una biblioteca que administra la E / S para escribir el mensaje de registro en un archivo.
Las dependencias y las dependencias transitivas se pueden resolver en diferentes momentos, dependiendo de cómo se ensamble y / o ejecute el programa de computadora : por ejemplo, un compilador puede tener una fase de enlace donde se resuelven las dependencias. A veces, el sistema de compilación incluso permite la gestión de las dependencias transitivas. [1]
De manera similar, cuando una computadora utiliza servicios , un programa de computadora puede depender de un servicio que debe iniciarse antes de ejecutar el programa. En tal caso, una dependencia transitiva es cualquier otro servicio del que depende el servicio del que dependemos directamente, por ejemplo, un navegador web depende de un servicio de resolución de nombres de dominio para convertir una URL web en una dirección IP ; el DNS dependerá de un servicio de red para acceder a un servidor de nombres remoto. El sistema de arranque de Linuxsystemd se basa en un conjunto de configuraciones que declaran las dependencias de los módulos a iniciar: en el momento del arranque systemd analiza todas las dependencias transitivas para decidir el orden de ejecución de cada módulo para comenzar.
Sistemas de gestión de bases de datos
Dejemos que A, B y C designen tres conjuntos distintos (pero no necesariamente disjuntos) de atributos de una relación. Suponga que se cumplen las tres condiciones siguientes:
- A → B
- No es el caso que B → A
- B → C
Entonces, la dependencia funcional A → C (que se sigue de 1 y 3 por el axioma de transitividad ) es una dependencia transitiva.
En la normalización de bases de datos , una de las características importantes de la tercera forma normal es que excluye ciertos tipos de dependencias transitivas. EF Codd , el inventor del modelo relacional , introdujo los conceptos de dependencia transitiva y tercera forma normal en 1971. [2]
Ejemplo
Una dependencia transitiva ocurre en la siguiente relación:
Libro | Género | Autor | Nacionalidad del autor |
---|---|---|---|
Veinte mil leguas de viaje submarino | Ciencia ficción | Julio Verne | francés |
Viaje al centro de la Tierra | Ciencia ficción | Julio Verne | francés |
Hojas de hierva | Poesía | Walt Whitman | americano |
Anna Karenina | Ficcion literaria | Leo Tolstoy | ruso |
Una confesión | Historia autobiográfica | Leo Tolstoy | ruso |
Se aplica la dependencia funcional {Libro} → {Nacionalidad del autor}; es decir, si conocemos el libro, conocemos la nacionalidad del autor. Además:
- {Libro} → {Autor}
- {Autor} no → {Libro}
- {Autor} → {Nacionalidad del autor}
Por lo tanto, {Libro} → {Nacionalidad del autor} es una dependencia transitiva.
La dependencia transitiva se produjo porque un atributo no clave (Autor) estaba determinando otro atributo no clave (Nacionalidad del autor).
Notas
- ^ "Gestión de dependencias transitivas" . gradle.org . Consultado el 21 de febrero de 2019 .
- ^ Codd, EF "Mayor normalización del modelo relacional de la base de datos". (Presentado en Courant Computer Science Symposia Series 6, "Data Base Systems", Ciudad de Nueva York, 24-25 de mayo de 1971.) Informe de investigación de IBM RJ909 (31 de agosto de 1971). Publicado nuevamente en Randall J. Rustin (ed.), Data Base Systems: Courant Computer Science Symposia Series 6 . Prentice-Hall, 1972. Véanse las páginas 45-51, que cubren la tercera forma normal y la dependencia transitiva.