Basi di Dati e Sistemi Informativi Progettazione logica: Il modello relazionale Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale
Introduzione Basato sul lavoro di Codd (~1970) E attualmente il modello più utilizzato nel mondo dei database (Oracle, Informix, IBM, Microsoft, etc.) E basato su una struttura dati semplice ed uniforme, la relazione. Ha solide basi teoriche. 2 di 12
Concetti base del modello (1/3) Una base di dati è rappresentata come una collezione di relazioni. Possiamo informalmente considerare una relazione come una tabella. Ciascuna riga rappresenta una collezione di valori di dati tra loro collegati Il nome della relazione e quelli delle colonne consentono di comprendere il significato dei valori delle righe. Tutti i valori di una colonna sono del medesimo tipo, appartengono cioè ad un medesimo dominio. Studente Nome Mario Piero Cognome Rossi Bianchi Matricola 119310 514222 3 di 12
Concetti base del modello (2/3) Dominio: un insieme di valori atomici, cioè indivisibili. Es.: voti_università: valori tra 0 e 30. nomi_propri: l insieme dei nomi di persona. A ciascun dominio si associa un tipo di dato o formato. Es: voti_università: interi tra 0 e 30 nomi_propri: stringhe di caratteri rappresentanti nomi propri. 4 di 12
Concetti base del modello (3/3) Schema o intensione di una relazione R: è specificato come un nome R e una lista di attributi (A1, A2,..,An). Ciascun attributo Ai corrisponde ad un dominio D(Ai) nello schema relazionale. Es.: Studente(nome, cognome, matricola, data_nascita,data_immatr) Grado della relazione: numero di attributi. Istanza o estensione di R: r(r), è un insieme di tuple r=(t1, t2,..,tm). Ciascuna tupla t è una lista ordinata di valori t=<v1, v2,.., vn); ciascun valore vi dom(ai) null (dove null rappresenta uno speciale valore, sconosciuto, inapplicabile). Cardinalità: il numero di tuple nella estensione r(r). 5 di 12
Note sulla definizione (1/2) Le tuple sono definite come insieme. Ciò implica l assenza di un particolare ordinamento sulle tuple stesse. Studente Studente Nome Cognome Matricola Nome Cognome Matricola Mario Rossi 119310 Piero Bianchi 514222 Piero Bianchi 514222 Mario Rossi 119310 I valori all interno di una tupla sono stati definiti come lista ordinata, quindi esiste un ordinamento. N.B. Le relazioni sono definite a livello logico, quindi ha senso non avere ordinamento predefinito sulle tuple; è inoltre possibile, fornendo una diversa definizione di tupla, prescindere anche dall ordinamento all interno della tupla stessa. Intuitivamente è sufficiente considerare ogni valore all interno della generica tupla direttamente associato al nome di attributo corrispondente. 6 di 12
Note sulla definizione (2/2) E possibile interpretare uno schema di relazione come una dichiarazione o asserzione: ciascuna tupla può essere pertanto vista come un esempio di asserzione. E anche possibile interpretare uno schema di relazione come un predicato: i valori di ciascuna tupla soddisfano il predicato. 7 di 12
Vincoli del modello (1/2) Vincolo di dominio: i valori di ciascun attributo sono valori atomici appartenenti al corrispondente dominio. Vincolo di chiave: per ogni relazione R esiste un sottoinsieme di attributi sk tale che t1 sk] t2[sk]. Il sottoinsieme sk dicesi superchiave. Dicesi chiave un sottoinsieme di attributi che goda della ulteriore proprietà di essere minimo, cioè privo di attributi ridondanti. Es.: studente(nome, cognome, matricola, data_nascita) Il sottoinsieme nome, cognome, matricola è superchiave, come pure cognome, matricola. Matricola è chiave (non ridondante) In genere possono esserci più sottoinsiemi di attributi che verificano le due proprietà: chiavi candidate La chiave designata è detta chiave primaria. 8 di 12
Vincoli del modello (2/2) Integrità di entità: nessuna chiave primaria può assumere valore null. Integrità referenziale: una tupla in una relazione R1 che si riferisca ad un altra relazione R2 deve riferirsi ad una tupla esistente in R2. Il precedente vincolo è normalmente espresso mediante il concetto di chiave esterna (foreign key). Un sottoinsieme di attributi FK di una relazione R1 è una chiave esterna se: 1. Gli attributi di FK hanno lo stesso dominio degli attributi della chiave primaria PK di un altra relazione R2 2. Un valore di FK in una tupla t1 di R1 o è presente identicamente come valore di PK di qualche tupla t2 in R2 o è nullo. Nel primo caso si avrà t1[fk]=t2[pk] e si dice che t1 referenzia t2. 9 di 12
Mapping E-R relazionale (1/3) Creare una relazione per ogni entità con gli attributi semplici della stessa entità, scegliendo come chiave primaria una delle chiavi dell entità. Per le entità deboli: creare una relazione con gli attributi dell entità e includere, inoltre, come chiave esterna, la chiave primaria dell entità proprietaria la chiave primaria della nuova relazione sarà la combinazione della chiave esterna più la chiave parziale. 10 di 12
Mapping E-R relazionale (2/3) Per ogni associazione binaria 1:1 identificare le entità partecipanti S e D scegliere una entità S con partecipazione totale ed includere in essa, come chiave esterna, la PK di D. includere in S anche eventuali attributi dell associazione. Per ogni associazione binaria 1:N identificare le entità partecipanti scegliere l entità S dal lato N ed includere in essa, come chiave esterna, la PK dell altra includere in S anche eventuali attributi dell associazione. 11 di 12
Mapping E-R relazionale (3/3) Per ogni associazione R di tipo M:N creare una nuova relazione R includere le chiavi esterne delle entità partecipanti la loro combinazione formerà la PK di R includere eventuali attributi di R Per ogni attributo multivalore A creare una nuova relazione che include A e la chiave primaria della entità di partenza come chiave esterna la PK sarà la combinazione della chiave esterna e di A Per ogni associazione con grado > 2 creare una nuova relazione includere come chiavi esterne le PK delle entità partecipanti nonché eventuali attributi dell associazione la PK sarà la combinazione delle chiavi esterne. 12 di 12