Una dipendenza è un vincolo che si applica o definisce la relazione tra gli attributi. Si verifica in un database quando le informazioni memorizzate nella stessa tabella del database determinano in modo univoco altre informazioni memorizzate nella stessa tabella. Puoi anche descriverlo come una relazione in cui conoscere il valore di un attributo (o un insieme di attributi) è sufficiente per dirti il valore di un altro attributo (o set di attributi) nella stessa tabella.
Le dipendenze del database spesso confondono sia gli studenti che i professionisti del database. Fortunatamente, non sono così complicati come potrebbero sembrare. Possono essere meglio spiegati utilizzando alcuni esempi. Qui, esamineremo i tipi di dipendenza del database comuni.
Dipendenze del database e dipendenze funzionali
Dire che esiste una dipendenza tra gli attributi in una tabella equivale a dire che esiste una dipendenza funzionale tra questi attributi. Se esiste una dipendenza in un database tale che l'attributo B dipenda dall'attributo A, dovresti scrivere come:
A -> B
Ad esempio, in una tabella che elenca le caratteristiche dei dipendenti, incluso il numero di previdenza sociale (SSN) e il nome, si può affermare che il nome dipende da SSN (o SSN -> nome) perché il nome di un dipendente può essere determinato in modo univoco da un SSN. Tuttavia, l'istruzione inversa (nome -> SSN) non è vera perché più di un dipendente può avere lo stesso nome ma ha sempre SSN diversi. Una dipendenza funzionale banale si verifica quando si descrive una dipendenza funzionale di un attributo su una raccolta di attributi che include l'attributo originale. Ad esempio, {A, B} -> B è una dipendenza funzionale banale, così come {name, SSN} -> SSN. Questo tipo di dipendenza funzionale è chiamato banale perché può essere derivato dal senso comune. È ovvio che se conosci già il valore di B, allora il valore di B può essere determinato in modo univoco da tale conoscenza. Una dipendenza funzionale completa si verifica quando si soddisfano già i requisiti per una dipendenza funzionale e l'insieme di attributi sul lato sinistro dell'istruzione di dipendenza funzionale non può essere ulteriormente ridotto. Ad esempio, {SSN, age} -> nome è una dipendenza funzionale, ma non è una dipendenza funzionale completa poiché è possibile rimuovere l'età dal lato sinistro dell'istruzione senza influire sulla relazione di dipendenza. Le dipendenze transitive si verificano quando esiste una relazione indiretta che causa una dipendenza funzionale. Ad esempio, A -> C è una dipendenza transitiva quando è vera solo perché sia A -> B che B -> C sono vere. Le dipendenze multivalore si verificano quando la presenza di una o più righe in una tabella implica la presenza di una o più altre righe nella stessa tabella. Ad esempio, immagina un'azienda automobilistica che produce molti modelli di auto, ma produce sempre i colori rosso e blu di ciascun modello. Se si dispone di una tabella che contiene il nome del modello, il colore e l'anno di ciascuna vettura prodotta dall'azienda, esiste una dipendenza multivalore in tale tabella. Se c'è una riga per un determinato nome di modello e un anno in blu, deve esserci anche una riga simile corrispondente alla versione rossa della stessa auto. Le dipendenze del database sono importanti da comprendere perché forniscono i blocchi di base utilizzati nella normalizzazione del database, il processo di organizzazione efficiente dei dati in un database. Per esempio: Doppie dipendenze funzionali
Dipendenze funzionali complete
Dipendenze transitive
Dipendenze multivalore
Importanza delle dipendenze