logo

Dipendenza transitiva nei DBMS

Consideriamo una relazione R(A B C). Qui A, B e C sono conosciuti come l'attributo della relazione R. Quando si verifica la seguente condizione; quindi la dipendenza transitiva si verifica nel DBMS. Le condizioni sono A → B, B → C. Pertanto, la condizione diventa A → C. In altre parole, possiamo dire che quando le dipendenze sono formate da due dipendenze funzionali, allora le dipendenze funzionali diventano dipendenze transitive.

Cos'è la dipendenza transitiva?

Consideriamo una relazione R(A B C). Qui A, B e C sono conosciuti come l'attributo della relazione R. Quando si verifica la seguente condizione; quindi la dipendenza transitiva si verifica nel DBMS. Le condizioni sono A → B, B → C. Pertanto, la condizione diventa A → C. Nelle dipendenze funzionali transitive, un dipendente dipende direttamente dal determinante.

Comprendiamo le dipendenze transitive con l'aiuto del seguente esempio.

ID_autore Autore Libro Autore_Nazionalità
A1 Arundhati Roy Il Dio delle piccole cose India
A1 Kiran Desai L'eredità della perdita India
A2 RK Narayan Il mangiatore di uomini di Malgudy India

Nella tabella degli autori sopra, lo otteniamo.

    Libro → Autore:Qui, l'attributo dell'autore è determinato dall'attributo del libro. Se qualcuno conosce il nome del libro, può anche conoscere il nome dell'autore.Autore → Autore_Nazionalità:Se qualcuno conosce il nome dell'autore, può anche conoscerne la nazionalità.Libro → Autore_Nazionalità: Se qualcuno conosce il nome del libro, può anche conoscere la nazionalità dell'autore.

Se osserviamo da vicino le dipendenze funzionali discusse sopra, troviamo il seguente modello.

  • A → B e B → C B→C; quindi A → CA → C.
  • A → Libro, B → Autore B → Autore e C → Nazionalità_Autore C→Nazionalità_Autore

Supponiamo di applicare la Terza Forma Normale (3NF) nella tabella degli autori sopra. In tal caso, la dipendenza transitiva della tabella autore deve essere rimossa e il processo di rimozione delle dipendenze transitive del database è noto come processo di normalizzazione.

Come evitare le dipendenze transitive?

Consideriamo nuovamente la tabella degli autori sopra e vediamo che tipo di problema si presenta durante la creazione della tabella.

Tabella degli autori:

Autore_ID Autore Libro Autore_Nazionalità
A1 Arundhati Roy Il Dio delle piccole cose India
A1 Kiran Desai L'eredità della perdita India
A2 RK Narayan Il mangiatore di uomini di Malgudy India

Le anomalie dei dati (come anomalie di aggiornamento, inserimento e cancellazione) e le incoerenze possono essere fornite dalla tabella dell'autore. Quando c'è troppa ridondanza nel database, si verificano anomalie nei dati. Le anomalie dei dati si verificano anche quando si verifica un problema con l'aggiornamento, l'eliminazione e l'inserimento di nuovi dati. Ad esempio, nella tabella dell'autore-

  • Non possiamo aggiungere un nuovo autore finché non possiamo aggiungere un libro alla tabella.
  • Non possiamo eliminare l'autore finché non eliminiamo completamente il libro dal database.
  • Se vogliamo eliminare il libro 'Il Dio delle piccole cose', verranno eliminati anche l'ID, l'autore e la nazionalità dell'autore.

I problemi di cui sopra si verificano in qualsiasi relazione che contiene dipendenze transitive.

Terza forma normale rimuovendo la dipendenza transitiva

Consideriamo il Tabella degli autori con tre attributi (Author_ID, Author, Author_Nationality) e provare a trovare ed eliminare la dipendenza transitiva da questa tabella,

Tabella degli autori:

ID_autore Autore Libro Autore_Nazionalità
A1 Arundhati Roy Il Dio delle piccole cose India
A1 Kiran Desai L'eredità della perdita India
A2 RK Narayan Il mangiatore di uomini di Malgudy India

La tabella dell'autore sopra non è in 3NF perché ha una dipendenza transitiva. Vediamo come

oggetto Java
  • Autore → Autore_Nazionalità Autore → Autore_Nazionalità
  • ID_autore → Autore

Pertanto esiste anche la seguente dipendenza funzionale,

  • Authir_ID → Author_Nationality sta formando uno schema simile a quello di cui abbiamo discusso sopra.

Ora per eliminare la dipendenza transitiva, tutto ciò che dobbiamo fare è dividere la tabella dell'autore in modo tale che Author_ID non dipenda più funzionalmente da Author_Nationality.

Creiamo due tabelle, una contenente solo {Author_ID, Author} e un'altra contenente {Author_Nationality}. Le nuove tabelle saranno simili a queste,

Tabella degli autori

ID_autore Autore
A1 Il Dio delle piccole cose
A2 L'eredità della perdita
A3 Il mangiatore di uomini di Malgudy

Tabella sulla nazionalità dell'autore

Autore Autore_Nazionalità
Arundhati Roy India
Kiran Desai India
RK Narayan India

Ora la nuova tabella Autore e la tabella Nazionalità dell'autore non contengono alcuna dipendenza transitiva e la relazione è ora in 3NF.