logo

Dependència transitiva en DBMS

Considerem una relació R(A B C). Aquí A, B i C es coneixen com l'atribut de la relació R. Quan es produeix la següent condició; aleshores la dependència transitiva es produeix al SGBD. Les condicions són A → B, B → C. Per tant, la condició passa a ser A → C. En altres paraules, podem dir que quan les dependències estan fetes per dues dependències funcionals, aleshores les dependències funcionals es converteixen en dependències transitives.

Què és la dependència transitòria?

Considereu una relació R(A B C). Aquí A, B i C es coneixen com l'atribut de la relació R. Quan es produeix la següent condició; aleshores la dependència transitiva es produeix al SGBD. Les condicions són A → B, B → C. Per tant, la condició es converteix en A → C. en dependències funcionals transitives, un dependent depèn directament del determinant.

Entenem les dependències transitives amb l'ajuda de l'exemple següent.

ID_autor Autor Llibre Autor_Nacionalitat
A1 Arundhati Roy El déu de les petites coses Índia
A1 Kiran Desai L'herència de la pèrdua Índia
A2 R.K. Narayan El devorador d'homes de Malgudy Índia

A la taula d'autors anterior, ho obtenim.

    Llibre → Autor:Aquí, l'atribut de l'autor està determinat per l'atribut del llibre. Si algú coneix el nom del llibre, també pot conèixer el nom de l'autor.Autor → Autor_Nacionalitat:Si algú coneix el nom de l'autor, també pot conèixer la nacionalitat de l'autor.Llibre → Autor_Nacionalitat: Si algú coneix el nom del llibre, també pot conèixer la nacionalitat de l'autor.

Si mirem de prop les dependències funcionals comentades anteriorment, trobem el patró següent.

  • A → B i B → C B→C; per tant, A → CA → C.
  • A → Llibre, B → Autor B → Autor i C → Autor_Nacionalitat C→Autor_Nacionalitat

Suposem que apliquem la tercera forma normal (3NF) a la taula d'autors anterior. En aquest cas, s'ha d'eliminar la dependència transitiva de la taula d'autor i el procés d'eliminació de les dependències transitives de la base de dades es coneix com a procés de normalització.

Com evitar les dependències transitives?

Considerem de nou la taula d'autors anterior i veiem quin tipus de problema sorgeix durant la creació de la taula.

Taula d'autors:

ID_autor Autor Llibre Autor_Nacionalitat
A1 Arundhati Roy El déu de les petites coses Índia
A1 Kiran Desai L'herència de la pèrdua Índia
A2 R.K. Narayan El devorador d'homes de Malgudy Índia

Les anomalies de les dades (com ara les anomalies d'actualització, inserció i supressió) i la inconsistència poden ser aportades per la taula d'autor. Quan hi ha massa redundància a la base de dades, es produeixen anomalies a les dades. Les anomalies de dades també es produeixen quan hi ha un problema amb l'actualització, la supressió i la inserció de dades noves. Per exemple, a la taula d'autors-

  • No podem afegir un autor nou fins que no podem afegir un llibre a la taula.
  • No podem eliminar l'autor fins que no eliminem completament el llibre de la base de dades.
  • Si volem suprimir el llibre 'El déu de les coses petites', també s'han eliminat l'identificador, l'autor i la nacionalitat de l'autor.

Els problemes anteriors es produeixen en qualsevol relació que contingui dependències transitives.

Tercera forma normal eliminant la dependència transitiva

Considerem el Taula d'autors amb tres atributs (Author_ID, Author, Author_Nationality) i intenteu trobar i eliminar la dependència transitiva d'aquesta taula,

Taula d'autors:

ID_autor Autor Llibre Autor_Nacionalitat
A1 Arundhati Roy El déu de les petites coses Índia
A1 Kiran Desai L'herència de la pèrdua Índia
A2 R.K. Narayan El devorador d'homes de Malgudy Índia

La taula de l'autor anterior no es troba a 3NF perquè té una dependència transitiva. A veure com

java ordenant una llista
  • Autor → Autor_Nacionalitat Autor → Autor_Nacionalitat
  • Author_ID → Autor

Per tant, també existeix la següent dependència funcional:

  • Authir_ID → Author_Nationality està formant un patró similar al que hem comentat anteriorment.

Ara, per eliminar la dependència transitiva, tot el que hem de fer és dividir la taula de l'autor de tal manera que Author_ID ja no dependrà funcionalment de Author_Nationality.

Creem dues taules, una que conté només { Author_ID, Author} i una altra que contingui {Author_Nationality}. Les noves taules seran així,

Taula d'autors

ID_autor Autor
A1 El déu de les petites coses
A2 L'herència de la pèrdua
A3 El devorador d'homes de Malgudy

Taula de nacionalitats d'autor

Autor Autor_Nacionalitat
Arundhati Roy Índia
Kiran Desai Índia
R.K. Narayan Índia

Ara la nova taula d'autors i la taula de nacionalitat de l'autor no conté cap dependència transitiva i la relació es troba ara a 3NF.