In un database relazionale, si verifica una dipendenza quando le informazioni memorizzate nella stessa tabella di database determinano in modo univoco altre informazioni memorizzate nella stessa tabella. Una dipendenza multivalore si verifica quando la presenza di una o più righe in una tabella implica la presenza di una o più altre righe nella stessa tabella. In altre parole, due attributi (o colonne) in una tabella sono indipendenti l'uno dall'altro, ma entrambi dipendono da un terzo attributo.
Una dipendenza multivalore impedisce la normalizzazione dello standard di quarta forma normale (4NF). I database relazionali seguono cinque forme normali che rappresentano le linee guida per la progettazione dei record. Impediscono anomalie di aggiornamento e incongruenze nei dati. La quarta forma normale riguarda le relazioni molte-a-uno in un database.
Dipendenza funzionale vs. dipendenza multivalore
Per comprendere una dipendenza multivalore, è utile rivisitare cos'è una dipendenza funzionale.
Se un attributo X determina univocamente un attributo Y, allora Y è funzionalmente dipendente da X. Questo è scritto come X -> Y. Ad esempio, nella tabella Studenti sotto, lo Studente_Name determina il Maggiore:
Nome dello studente | Maggiore |
---|---|
Ravi | Storia dell'arte |
Beth | Chimica |
Questa dipendenza funzionale può essere scritta: Student_Name -> Major . Ogni Student_Name determina esattamente un Maggiore e non più. Se vuoi che il database tenga traccia degli sport praticati da questi studenti, potresti pensare che il modo più semplice per farlo è quello di aggiungere un'altra colonna intitolata Sport: Il problema qui è che sia Ravi che Beth giocano più sport. È necessario aggiungere una nuova riga per ogni altro sport. Questa tabella ha introdotto una dipendenza multivalore perché il maggiore e lo sport sono indipendenti l'uno dall'altro, ma entrambi dipendono dallo studente. Questo è un semplice esempio e facilmente identificabile, ma una dipendenza multivalore potrebbe diventare un problema in un database ampio e complesso. Una dipendenza multivalore è scritta X -> -> Y. In questo caso: Nome dello studente ->-> MaggioreNome dello studente->-> Sport
Viene letto come "Student_Name multidetermines Major" e "Student_Name multidetermines Sport". Una dipendenza multivalore richiede sempre almeno tre attributi poiché consiste di almeno due attributi che dipendono da un terzo. Una tabella con una dipendenza multivalore viola lo standard di normalizzazione del quarto modulo normale (4NK) poiché crea ridondanze non necessarie e può contribuire a dati incoerenti. Per portare questo fino a 4NF, è necessario suddividere queste informazioni in due tabelle. La tabella seguente ora ha una dipendenza funzionale di Student_Name -> Major e nessuna dipendenza multivalore: Anche questa tabella ha una singola dipendenza funzionale di Student_Name -> Sport: È chiaro che la normalizzazione viene spesso affrontata semplificando le tabelle complesse in modo che contengano informazioni relative a una singola idea o tema piuttosto che provare a creare una singola tabella contenente troppe informazioni disparate.Nome dello studente Maggiore Sport Ravi Storia dell'arte Calcio Ravi Storia dell'arte Pallavolo Ravi Storia dell'arte Tennis Beth Chimica Tennis Beth Chimica Calcio Dipendenza e normalizzazione multivalore
Nome dello studente Maggiore Ravi Storia dell'arte Ravi Storia dell'arte Ravi Storia dell'arte Beth Chimica Beth Chimica Nome dello studente Sport Ravi Calcio Ravi Pallavolo Ravi Tennis Beth Tennis Beth Calcio