Skip to main content

Dipendenza multivalore nei database

Dipendenza (prod. Mordecai) (Giugno 2025)

Dipendenza (prod. Mordecai) (Giugno 2025)
Anonim

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:

Studenti
Nome dello studenteMaggiore
RaviStoria dell'arte
BethChimica

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:

Studenti
Nome dello studenteMaggioreSport
RaviStoria dell'arteCalcio
RaviStoria dell'artePallavolo
RaviStoria dell'arteTennis
BethChimicaTennis
BethChimicaCalcio

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.

Dipendenza e normalizzazione multivalore

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:

Studenti e maggiori
Nome dello studenteMaggiore
RaviStoria dell'arte
RaviStoria dell'arte
RaviStoria dell'arte
BethChimica
BethChimica

Anche questa tabella ha una singola dipendenza funzionale di Student_Name -> Sport:

Studenti e sport
Nome dello studenteSport
RaviCalcio
RaviPallavolo
RaviTennis
BethTennis
BethCalcio

È 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.