logo

Dependencia transitiva en DBMS

Consideremos una relación R(A B C). Aquí A, B y C se conocen como el atributo de la relación R. Cuando surge la siguiente condición; entonces la dependencia transitiva ocurre en el DBMS. Las condiciones son A → B, B → C. Por lo tanto, la condición se convierte en A → C. En otras palabras, podemos decir que cuando las dependencias están formadas por dos dependencias funcionales, entonces las dependencias funcionales se convierten en dependencias transitivas.

¿Qué es la dependencia transitiva?

Considere una relación R(A B C). Aquí A, B y C se conocen como el atributo de la relación R. Cuando surge la siguiente condición; entonces la dependencia transitiva ocurre en el DBMS. Las condiciones son A → B, B → C. Por lo tanto, la condición se convierte en A → C. En dependencias funcionales transitivas, un dependiente depende directamente del determinante.

Entendamos las dependencias transitivas con la ayuda del siguiente ejemplo.

ID_autor Autor Libro Autor_Nacionalidad
A1 Arundhati Roy El Dios de las pequeñas cosas India
A1 Kiran Desai La herencia de la pérdida India
A2 RK Narayan El devorador de hombres de Malgudy India

En la tabla de autores anterior, obtenemos eso.

    Libro → Autor:Aquí, el atributo de autor está determinado por el atributo del libro. Si alguien sabe el nombre del libro, también puede aprender el nombre del autor.Autor → Autor_Nacionalidad:Si alguien conoce el nombre del autor, también puede conocer su nacionalidad.Libro → Autor_Nacionalidad: Si alguien conoce el nombre del libro, también puede conocer la nacionalidad del autor.

Si observamos de cerca las dependencias funcionales discutidas anteriormente, encontramos el siguiente patrón.

  • A → B y B → C B → C; por lo tanto, A → CA → C.
  • A → Libro, B → Autor B → Autor y C → Autor_Nacionalidad C → Autor_Nacionalidad

Supongamos que aplicamos la Tercera Forma Normal (3NF) en la tabla de autores anterior. En ese caso, se debe eliminar la dependencia transitiva de la tabla de autor y el proceso de eliminación de las dependencias transitivas de la base de datos se conoce como proceso de normalización.

¿Cómo evitar las dependencias transitivas?

Consideremos nuevamente la tabla de autores anterior y veamos qué tipo de problema surge durante la creación de la tabla.

Tabla de autores:

Autor_ID Autor Libro Autor_Nacionalidad
A1 Arundhati Roy El Dios de las pequeñas cosas India
A1 Kiran Desai La herencia de la pérdida India
A2 RK Narayan El devorador de hombres de Malgudy India

La tabla de autores puede contribuir a las anomalías de los datos (como anomalías de actualización, inserción y eliminación) y la inconsistencia. Cuando hay demasiada redundancia en la base de datos, se producen anomalías en los datos. Las anomalías en los datos también se producen cuando hay un problema al actualizar, eliminar e insertar nuevos datos. Por ejemplo, en la tabla de autores-

  • No podemos agregar un nuevo autor hasta que no podamos agregar un libro a la tabla.
  • No podemos eliminar al autor hasta que eliminemos completamente el libro de la base de datos.
  • Si queremos eliminar el libro 'El Dios de las pequeñas cosas', también se eliminaron la identificación del autor, el autor y la nacionalidad.

Los problemas anteriores ocurren en cualquier relación que contenga dependencias transitivas.

Tercera forma normal eliminando la dependencia transitiva

Consideremos el tabla de autores con tres atributos (Autor_ID, Autor, Autor_Nacionalidad) e intentar encontrar y eliminar la dependencia transitiva de esta tabla,

Tabla de autores:

Autor_ID Autor Libro Autor_Nacionalidad
A1 Arundhati Roy El Dios de las pequeñas cosas India
A1 Kiran Desai La herencia de la pérdida India
A2 RK Narayan El devorador de hombres de Malgudy India

La tabla del autor anterior no está en 3NF porque tiene una dependencia transitiva. veamos como

escáner.siguiente java
  • Autor → Autor_Nacionalidad Autor → Autor_Nacionalidad
  • Autor_ID → Autor

Por lo tanto, también existe la siguiente dependencia funcional,

  • Authir_ID → Author_Nationality está formando un patrón similar al que comentamos anteriormente.

Ahora, para eliminar la dependencia transitiva, todo lo que tenemos que hacer es dividir la tabla de Autor de tal manera que Author_ID ya no dependa funcionalmente de Author_Nationality.

Creemos dos tablas, una que contenga solo {Autor_ID, Autor} y otra que contenga {Autor_Nacionalidad}. Las nuevas tablas se verán así,

Tabla de autores

Autor_ID Autor
A1 El Dios de las pequeñas cosas
A2 La herencia de la pérdida
A3 El devorador de hombres de Malgudy

Tabla de nacionalidad de autores

Autor Autor_Nacionalidad
Arundhati Roy India
Kiran Desai India
RK Narayan India

Ahora la nueva tabla de Autor y la tabla de Nacionalidad del Autor no contienen dependencia transitiva y la relación ahora está en 3NF.