Corso Database
Un dispensa di informatica sul database e sul DBMS (Database Management System)

da | 18 Gen 2006 | Informatica | 2 commenti

Modelli logici

Il modello logico discende dal modello concettuale e disegna un’architettura che tiene conto delle strutture proprie di quel particolare tipo di database. Ciò significa che è possibile realizzare diversi tipi di database a partire da uno stesso modello concettuale.

Nel corso degli anni si sono sviluppati vari tipi di modelli logici, tutti possono essere ricondotti a tre categorie principali: gerarchici, reticolari e relazionali.

Modello gerarchico:

Volendo tracciare un percorso storico che attraversi l’evoluzione subita dai DBMS nel corso degli anni, è necessario iniziare la trattazione a partire dal modello gerarchico. Si può fissare la data di nascita di questo modello alla fine degli anni ’60, quando IBM sviluppa e introduce sul mercato IMS, il primo database gerarchico, ma anche il primo DBMS in assoluto.

Definizione:

Un database gerarchico è un insieme di archivi. Gli archivi sono composti da record chiamati segmenti. I segmenti sono in rapporto gerarchico tra loro attraverso legami di tipo padre-figlio.

 

La struttura ad albero che caratterizza il modello gerarchico si basa sulla possibilità di individuare un segmento principale, il padre o la radice, dal quale dipendono n segmenti figli, che a loro volta si trasformano in padri per altri figli e così via. A questi, in virtù della totale dipendenza dal padre, è possibile fare riferimento solo attraverso il passaggio dal nodo principale. Non è possibile dal figlio risalire al padre.

modello-gerarchico

Questa architettura mal si adatta ad una gestione moderna e dinamica delle basi di dati.

Modello reticolare:

Il modello gerarchico rappresenta una prima soluzione al problema della gestione di grosse moli di dati ma la sua intrinseca rigidità ne limita la potenzialità; per questo, nasce il modello reticolare che dotato di maggiore flessibilità, può adattarsi a situazioni più complesse.

Il modello reticolare può essere visto come un’estensione del modello gerarchico, al quale siano apportati importanti miglioramenti :

In una struttura gerarchica un segmento figlio può avere solo un segmento padre; non è così nel modello reticolare: ogni record può avere un numero qualsiasi di record subordinati e di record precedenti e le correlazioni vengono espresse attraverso record particolari, chiamati record di collegamento (member), che formano delle catene tra le varie parti del sistema.

La struttura:

le strutture utilizzate nel modello reticolare sono due, il record (si pensi ai comuni file) e il set, che permette di correlare i record, per mezzo di catene di puntatori. Dunque una base di dati reticolare è definita con riferimento ad uno schema, che contiene tipi record collegati fra loro da tipo set.

modello-reticolare

Il modello relazionale

Il modello relazionale, fu proposto per la prima volta, nel 1970. Fin da allora ha avuto un crescente successo, dovuto principalmente alla sua semplicità e alla sua flessibilità.

Su cosa si basa il modello relazionale:

Il modello relazionale si basa su due concetti relazione e tabella. La nozione di relazione proviene dalla teoria degli insiemi, mentre il concetto di tabella è semplice ed intuitivo.

Dati due insiemi D1 e D2 si chiama prodotto cartesiano di D1 e D2, l’insieme delle coppie ordinate (v1, v2), tali che v1 è un elemento di D1 e v2 è un elemento di D2.

Una relazione matematica sugli insiemi D1 e D2 è un sottoinsieme del prodotto cartesiano di D1 x D2.

Esempio:

Dati gli insiemi A={1, 2 ,4} e B={a, b}

moltiplicando A x B

si ottiene il prodotto cartesiano {(1, a), (1, b), (2, a), (2, b), (4, a), (4, b)}

una possibile relazione matematica

su A e B è costituita dall’insieme di coppie {(1, a), (1, b), (4, b)}

1 a
1 a
a b

Le relazioni possono esse rappresentate graficamente, in maniera utilmente espressiva, sotto forma tabellare.

Abbiamo visto dunque il concetto di relazione e la rappresentazione tabellare, facciamo ora qualche esempio:

JUVENTUS LAZIO 3 1
ROMA MILAN 2 0
FIORENTINA NAPOLI 0 1

La relazione della pagina precedente è un sottoinsieme del prodotto cartesiano:

Stringa x Stringa x Intero x Intero

L’ordine con cui compaiono i dati all’interno delle righe è fondamentale, per il concetto stesso di relazione. Infatti ci accorgiamo che cambiando l’ordine di alcune colonne i risultati delle partite vengono stravolti.

A tutto ciò possiamo ovviare utilizzando gli attributi come intestazioni per le colonne.

Squadra di casa Squadra ospitata Reti casa Reti ospitata
Juventus Lazio 3 1
Roma Milan 2 0
Fiorentina Napoli 0 1

Modificando la definizione di relazione con l’introduzione degli attributi, possiamo vedere che l’ordinamento delle colonne risulta irrilevante.

Definizione di tupla:

Una tupla su un insieme di attributi X (x rappresenta l’insieme di attributi della relazione) è una funzione t che associa a ciascun attributo A di X un valore del dominio DOM(A)

Valori nulli:

La struttura del modello relazionale è molto semplice e potente. Al tempo stesso, essa impone però un certo grado di rigidità. In ogni relazione possiamo rappresentare solo tuple corrispondenti allo schema della relazione stessa. In effetti in moti casi, i dati disponibili possono non corrispondere esattamente al formato previsto. Ad esempio:

Persone (Cognome, Nome, Indirizzo, Telefono)

Il valore dell’attributo Telefono potrebbe non essere disponibile per tutte le tuple. Vale la pena notare che non sarebbe corretto utilizzare un valore del dominio per rappresentare l’assenza di informazione, in quanto in tal modo si potrebbe ingenerare confusione.

Per rappresentare in modo semplice la non disponibilità di valori, viene assunto un particolare valore per quel attributo detto valore nullo.

In genere quando si definisce una relazione bisogna specificare quali saranno gli attributi in cui è possibile inserire il valore nullo.

Vincoli di integrità:

In una base di dati, è opportuno evitare il più possibile che vengano inseriti dati privi di senso o sbagliati. Per limitare che ciò accada, durante la creazione del database vengono stabiliti dei vincoli.

Un vincolo è un predicato che associa ad ogni istanza il valore vero o falso. Se il predicato assume il valore vero diciamo che l’istanza soddisfa il vincolo. In generale, ad uno schema di base di dati associamo un insieme di vincoli e consideriamo corrette o lecite le istanze che soddisfano tutti i vincoli.

Esempi di vincoli di integrità:

Non permettere l’inserimento del codice di avviamento postale usando lettere invece di cifre numeriche o non accettare che vengano inseriti più di 5 cifre.

Non consentire la cancellazione di un capo vendite senza che i suoi subalterni (venditori) siano gerarchizzati ad altro capo vendita o cancellati precedentemente.

Concetto di chiave:

  • Si definisce chiave candidata l’attributo o l’insieme di attributi che permettono di individuare univocamente la tupla all’interno della relazione.
  • Si definisce chiave primaria la chiave con il minor numero di attributi.
  • Si definisce chiave esterna l’attributo, o l’insieme di attributi, che può essere usata come chiave primaria per un’altra relazione.

AUTO

Targa Proprietario Indirizzo
RM 1A2396 Verdi Piero Via Tigli
FI 1A2300 Verdi Piero Via Tigli
TV 2F4560 Bianchi Antonio Via Tigli

Possono essere considerate chiavi candidate tutti e tre gli attributi insieme della tabella Auto, o gli attributi Targa e Proprietario insieme. Non possono essere considerati chiave candidata gli attributi Proprietario e Indirizzo, sia da soli che insieme. È decisamente chiave primaria l’attributo Targa. L’attributo Proprietario comparendo come chiave primaria nella relazione Proprietari Auto (Persona) è chiave esterna.

PROPRIETARI AUTO

Persona Indirizzo
Verdi Piero Via Tigli
Bianchi Antonio Via Tigli

Vincolo di integrità referenziale:

Si ha un vincolo di integrità referenziale quando uno o più attributi di una relazione R1 compaiano come valori della chiave primaria in un’altra relazione R2.

Esempio:

CANI

ID_Cane Nome Razza Proprietario
56 Fido Setter 134
93 Birillo Meticcio 356
21 Diana Cocker 356

PROPRIETARI

ID_Proprietari Nome Cognome Via Città
356 Carlo Rissi
134 Mario Bianchi
200 Gianni Verdi

Nelle due tabelle abbiamo rispettato il vincolo di integrità in quanto le tutte le tuple sono correlate tra di loro. Tutti i cani hanno un proprietario.

Tipi di associazioni tra tabelle:

Bisogna subito specificare che il termine relazione nel modello relazionale assume due significati diversi: il termine relazione che abbiamo considerato fino ad ora nasce dalla teoria degli insiemi e sta ad indicare una tabella; il termine relazione che andremo ora a considerare sta per sinonimo di associazione e sta a indicare un rapporto di corrispondenza tra informazioni di due tabelle. Andiamo a vedere che tipi di relazioni (associazioni) possiamo avere:

Relazioni uno a molti – Una relazione uno a molti è il tipo più comune di relazione. In una relazione uno a molti un record della tabella A può avere molti record corrispondenti nella tabella B, ma un record della tabella B non ha più di un record corrispondente nella tabella A.

2 Commenti

  1. nico96

    ottima spiegazione

    Rispondi
    • giack

      spiegazione molto chiara e utile.
      ottimi esempi molto comprensibili che aiutano a comprendere meglio.
      grazie

      Rispondi

Invia un commento

Il tuo indirizzo email non sarà pubblicato.

Share This