Reference articles on history, science, culture and more
Encyclopedia

Transitive dependency

Relationship between software

Image credit is listed at the end of this article.

A transitive dependency is an indirect dependency relationship between software components. This kind of dependency is held by virtue of a transitive relation from a component that the software depends on directly.

01Computer programs

In a computer program a direct dependency is functionality from a library, or API, or any software component that is referenced directly by the program itself. A transitive dependency is any dependency induced by a different component, that in turn is directly or indirectly referenced by the program. E.g. a call to a log() function may induce a transitive dependency to a library that manages the I/O of writing a message to a log file.

Dependencies and transitive dependencies can be resolved at different times, depending on how the computer program is assembled and/or executed: e.g. a compiler can have a link phase where the dependencies are resolved. Sometimes the build system even allows management of the transitive dependencies.

Similarly, when a computer uses services, a computer program can depend on a service that should be started before to execute the program. A transitive dependency in such case is any other service that the service we depend directly on depends on, e.g. a web browser depends on a Domain Name Resolution service to convert a web URL in an IP address; the DNS will depend on a networking service to access a remote name server. The Linux boot system systemd is based on a set of configurations that declare the dependencies of the modules to be started: at boot time systemd analyzes all the transitive dependencies to decide the execution order of each module to start.

02Database management systems

Suppose entities A, B, and C exist such that the following statements hold:

  1. A → B direct dependency relationship exists.
  2. There is no B → A relationship.
  3. B → C direct dependency relationship exists.

Then the functional dependency A → C is a transitive dependency (which follows the axiom of transitivity).

In database normalization of relational databases, one of the important features of third normal form is that it excludes certain types of transitive dependencies. E.F. Codd, the inventor of the relational model, introduced the concepts of transitive dependence and third normal form in 1971.

Example

A transitive dependency occurs in the following relation:

The functional dependency {Book} → {Author nationality} emerges; that is, if we know the book, we can know the author's nationality. Furthermore:

  • {Book} → {Author}
  • {Author} does not → {Book}
  • {Author} → {Author nationality}

Therefore {Book} → {Author nationality} is a transitive dependency.

Watch videos about Transitive dependencyExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article Transitive dependency, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Images, from Wikimedia Commons:

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.