Il Modello Relazionale
Il modello relazionale fu proposto da Edgar F.Codd nel 1970 al fine di superare le limitazioni dei modelli all'epoca utilizzati a livello logico, che non permettevano di realizzare efficacemente la proprietà di indipendenza dei dati.
I primi DBMS relazionali sono arrivati nel 1981. Questo ritardo rispetto all'idea di Codd è dovuto al fatto che era difficile implementare il concetto di relazione con efficienza e affidabilità.
Le relazioni
[modifica]Il modello relazionale si basa sul concetto di relazione, un concetto che proviene dalla matematica e più precisamente dalla teoria degli insiemi.
Le relazioni in matematica
[modifica]Siano insiemi (non necessariamente distinti), e si consideri il loro prodotto cartesiano .
Una relazione è definita come un qualsiasi sottoinsieme del prodotto cartesiano .
Ogni relazione è un insieme di n-ple tutte distinte tra loro e senza alcun ordinamento tra le n-uple.
Le relazioni nel modello relazionale
[modifica]Si associa ad ogni insieme di provenienza un nome, detto attributo, e si perdono alcune caratteristiche della relazione matematica, ottenendo quindi una Tabella.
Quello di tabella è un concetto semplice e intuitivo. Le tabelle sono le realizzazioni delle relazioni.
Questo modello risponde al requisito di indipendenza dei dati che prevede una distinzione, nella descrizione dei dati, tra livello fisico e livello logico. Gli utenti che accedono ai dati e i programmatori che sviluppano le applicazioni fanno riferimento solo al livello logico.
I dati descritti a livello logico sono poi realizzati per mezzo di opportune strutture fisiche, ma per accedere ai dati non è necessario conoscere le strutture fisiche stesse.
I modelli precedenti facevano espliciti riferimenti alle strutture facendo uso di puntatori.
Una delle caratteristiche più importanti del modello relazione è che "è basato su valori": i riferimenti fra i dati in relazioni diverse sono rappresentati per mezzo di valori dei domini che compaiono nelle tuple.
Vantaggi modello relazionale:
- si rappresenta solo ciò che è rilevante dal punto di vista dell'applicazione. I puntatori sono qualcosa di aggiuntivo.
- la rappresentazione logica dei dati (solo i valori) non fa alcun riferimento a quella fisica, che può anche variare nel tempo. Si parla di indipendenza fisica dei dati.
- tutta l'informazione è contenuta nei valori quindi è relativamente semplice trasferire una base di dati. Nel caso di puntatori è più complessa perché hanno un significato locale al singolo sistema.