590 likes | 744 Vues
Sistemi per il recupero delle informazioni. PARTE - V MODELLO RELAZIONALE DEI DATI. PROGETTAZIONE. Ricordiamo le fasi della progettazione di una Base di Dati Ci occuperemo adesso della progettazione logica. PROGETTAZIONE LOGICA.
E N D
Sistemi per il recupero delle informazioni PARTE - V MODELLO RELAZIONALE DEI DATI
PROGETTAZIONE • Ricordiamo le fasi della progettazionedi una Base di Dati • Ci occuperemo adesso della progettazione logica
PROGETTAZIONE LOGICA • La descrizione del modello da realizzare è fatta in funzione delle caratteristiche del SGBD che sarà utilizzato (il modello dei dati, il linguaggio per sviluppare le applicazioni). • Il modello dei dati, detto modello logico, è “più vicino” alla rappresentazione informatica dei dati. • Vedremo l’uso del Modello dei Dati Relazionale. Lo schema risultante è detto schema relazionale, ed è rappresentato con un formalismo testuale. • è un modello dei dati “compreso” dal SGBD • si ottiene con una traduzione dello schema E-R
ESEMPIO VIENE TRADOTTO NELLO SCHEMA MUSEI (NomeM, Città, Indirizzo, Direttore) ARTISTI (NomeA, Nazionalità, DataN, DataM) OPERE (Codice, Anno, Titolo, NomeM*, NomeA*) PERSONAGGI (Personaggio, Codice*) DIPINTI (Codice*, Tipo, Larghezza, Altezza) SCULTURE (Codice*, Materiale, Altezza, Peso)
INTRODUZIONE • Il modello relazionale dei dati, proposto nel 1970 ed adottato nei sistemi commerciali a partire dal 1978, si è diffuso rapidamente tanto sui sistemi centrali quanto sugli elaboratori personali. • I meccanismi per definire una base di dati con il modello relazionale sono solo due: • l’ennupla • la relazione.
ENNUPLA E RELAZIONE Ennupla. È un insieme finito di coppie (Attributo, valore atomico) Relazione. È un insieme finito (eventualmente vuoto) di ennuple con la stessa struttura. I campi di un’ennupla sono atomici (numeri, stringhe o il valore NULL). Si tenga presente che non si possono rappresentare proprietà strutturate, o multivalore e vedremo più avanti come risolvere questi problemi di rappresentazione. Un’ennupla si usa per rappresentare entità e la relazione si usa per rappresentare classi di entità.
TERMINOLOGIA - I • attributo: corrisponde (non sempre) ad un attributo del modello E-R. Diversamente dal modello E-R, gli attributi sono sempre univoci (ad un sol valore) ed atomici (non composti) • L’ordine degli attributi non è significativo • dominio (di un attributo): è l’insieme dei valori che può assumere un attributo. • chiaveprimariadi una relazione: un attributo che identifica univocamente le ennuple della relazione. Gli attributi della chiave primaria vengono sottolineati
TERMINOLOGIA - II • Una relazione si definisce dandole un nome ed elencando fra parentesi tonde il tipo delle sue ennuple. La definizione di una relazione è detta schema della relazione R(A1:T1, A2:T2,..., An:Tn) • R è il nome della relazione • A1, A2,... sono gli attributi della relazione • T1, T2,... sono i tipi degli attributi (interi, reali, booleani, stringhe) • Per semplicità omettiamo la specifica dei tipi, per cui lo schema di relazione è R(A1, A2,...,An)
TERMINOLOGIA - III • Lo schema della relazione è la descrizione della struttura di una relazione • Un’istanza di uno schema di relazione è un insieme finito di ennuple. • osserviamo che tutte le ennuple di una relazione hanno la stessa struttura • Lo schema relazionale è la descrizione della struttura di una base di dati • insieme di schemi di relazione • insieme di vincoli
RELAZIONE: TRE ACCEZIONI • Relazione matematica: come nella teoria degli insiemi • Relazione secondo il modello relazionale dei dati • Relazione (relationship): costrutto del modello Entita’-Relazione utilizzato nel modello concettuale per descrivere legami tra entita’ nel mondo reale (tradotto anche con associazione o correlazione)
RELAZIONE MATEMATICA - I • D1, …, Dn (n insiemi anche non distinti) • prodotto cartesiano D1×…×Dn: l’insieme di tutte le n-uple (d1, …, dn) tali che d1D1, …, dn Dn • relazione matematica su D1, …, Dn: - un sottoinsieme di D1×…×Dn. - D1, …, Dn sono i domini della relazione - n è il grado • il numero di elementi della relazione si dice cardinalità
ESEMPIO D1={a,b} D2={x,y,z} prodotto cartesiano D1 × D2 = {(a,x); (a,y); (a,z); (b,x); (b,y); (b,z)} • relazione r1 D1 × D2 t. c.: r1 = {(a,x); (a,z); (b,y)}
RELAZIONE MATEMATICA - II • Una relazione matematica è un insieme di n-uple ordinate: (d1, …, dn) tali che d1D1, …, dn Dn • Una relazione è un insieme; quindi: - non c'è ordinamento fra le n-uple (ordinamento verticale) - le n-uple sono distinte - ciascuna n-upla è ordinata: l’ i-esimo valore proviene dall’ i-esimo dominio (ordinamento orizzontale)
a x a y a z b x b y b z a x Relazione r1 a z prodotto cartesiano D1 × D2 b y RELAZIONI E TABELLE - I Le relazioni possono essere rappresentate graficamente, in maniera utilmente espressiva, sotto forma di tabelle Esempio (precedente): D1={a,b} D2={x,y,z}
x x y a a a 3 3 3 x y x a a a 5 5 5 x y x c b b 5 3 3 y y x a b b 3 5 5 x y y c c c 3 3 3 y x y c c c 5 5 5 ESEMPIO D1={x,y} D2={a,b,c} D3={3,5} Relazione prodotto cartesiano D1 × D2 × D3
y c 3 y c 5 x a 3 x a 5 x c 5 y a 3 x x a a 3 3 y x a a 3 5 x x c c 5 5 y y c a 3 3 y x c c 3 5 y y c c 5 5 NON C’E ORDINAMENTO VERTICALE Rappresentano la stessa relazione
y c 3 y c 5 x a 3 x a 5 y c 5 y c 5 x x a a 3 3 x x a a 5 3 x x c c 5 5 y y a c 5 3 y x c c 5 3 y y c c 5 5 LE RIGHE SONO DISTINTE Relazione non valida Relazione non valida Relazione valida
3 x a a 3 x 5 x a a 5 x 5 x c c 5 x x a 3 3 y a a 3 y x a 5 3 y c c 3 y x c 5 5 y c c 5 y y a 3 y c 3 y c 5 C’E’ ORDINAMENTO ORIZZONTALE Rappresentano relazioni diverse
Casa Fuori RetiCasa RetiFuori Juve Lazio 3 1 Lazio Milan 2 0 Juve Roma 0 2 Roma Milan 0 1 ATTRIBUTI - I A ciascun dominio si associa un nome (attributo), che ne descrive il "ruolo"
Fuori Casa RetiFuori RetiCasa Juve Lazio 1 3 Lazio Milan 0 2 Juve Roma 2 0 Casa Fuori RetiCasa RetiFuori Roma Milan 1 0 Juve Lazio 3 1 Lazio Milan 2 0 Juve Roma 0 2 Roma Milan 0 1 ATTRIBUTI - II L’ordinamento degli attibuti e’ irrilevante Stile americano Stile europeo
FORMALISMO - I • Corrispondenza Attributi - Domini dom: XD funzione che associa a ogni attributo AX un dominio D • Una ennupla su un insieme di attributi X è una funzione che associa a ciascun attributo AX un elemento di dom(A): t[A] denota il valore della ennupla tsull'attributoA Una relazione su X e’ un insieme di ennuple
Casa Fuori RetiCasa RetiFuori Juve Lazio 3 1 Lazio Milan 2 0 Juve Roma 0 2 Roma Milan 0 1 FORMALISMO - II Relazione Notazione per le ennuple: • L‘ennupla rappresentata dalla prima riga t[Fuori] = Lazio t[RetiCasa] = 3 • Notazione estesa ad insieme di attributi t[Fuori, RetiCasa]
RELAZIONI E DATABASE • Di solito non è sufficiente una sola relazione per organizzare tutti i dati • Un database è costituito (in generale) da più relazioni • Le ennuple contengono valori comuni per stabilire corrispondenze
FORMALISMO - III • Schema di relazione:un simbolo R, detto nome della relazione, e un insieme di attributi A1, ..., An: R(A1,..., An) • Schema di base di dati: insieme di schemi di relazione con nomi diversi: R = {R1(X1), ..., Rk(Xk)} • Istanza direlazione su uno schema R(X): insieme r di ennuple su X • Istanza di base di dati su uno schema R= {R1(X1), ..., Rn(Xn) insieme di relazioni r = {r1,..., rn} (con ri relazione su Ri)
ESEMPIO • Schema di Base di dati: R= {STUDENTI (Matricola, Cognome, Nome, Data di nascita), ESAMI(Studente, Voto, Corso), CORSI(Codice, Titolo, Docente)
CARATTERISTICA FONDAMENTALE Il modello relazionale è basato su valori Ovvero: i riferimenti fra dati in relazioni diverse sono rappresentati per mezzo di valori dei domini che compaiono nelle ennuple
RAPPRESENTAZIONE GRAFICA - I PERSONE(CodFiscale,Nome,Telefono) o più accuratamente PERSONE(CodFiscale:string(16),Nome:string(30), Telefono: optional integer) L’attributo sottolineato è la chiave primaria
RAPPRESENTAZIONE GRAFICA - II • Una (istanza della) relazione Persone, conforme a tale schema, è ad es. la seguente: • E’ d’uso visualizzare una relazione come una tabella bidimensionale, con le colonne identificate dagli attributi e le righe contenenti i valori dei campi, nell’ordine indicato dall’intestazione delle colonne. • La proprietà di essere chiave è riferita allo schema piuttosto che ad una particolare tabella: una chiave è tale (identifica le righe) in una qualunque istanza di un determinato schema.
TIPI Due relazioni hanno lo stesso tipo se hanno uguali il numero degli attributi, gli attributi e il tipo degli attributi con lo stesso nome. stesso tipo Impiegati(Matricola :string, Cognome :string, AnnoNascita :integer, Provincia :string) Studenti( Cognome :string, Matricola :string, Provincia :string, AnnoNascita :integer) tipo diverso Docenti( Cognome :string, Matricola :integer, Provincia :string, AnnoNascita :integer) Docenti ha tipo diverso perché Matricola è di tipo intero e non stringa.
CHIAVI ESTERNE Le associazioni tra i dati sono rappresentate attraverso i valori di opportuni campi, chiamati chiavi esterne, che assumono come valori quelli della chiave primaria di un’altra relazione. In altre parole una chiave esterna è un attributo (od un insieme di attributi) di una relazione R che assume i valori della chiave primaria di un’altra relazione S. Serve a rappresentare un’associazione tra R ed S
ESEMPIO - I • Consideriamo l’associazione SEGUE tra STUDENTI e CDS (Corso di Studi). STUDENTI(Nome:string, Matricola: string, Provincia: string, AnnoNascita:int, SiglaCDS*: string) CDS(SiglaCDS: string, NomeCDS: string, Tipo: string) • Il fatto che un corso di studi è associato ad uno studente si modella prevedendo nello schema della relazione STUDENTI un campo che assume come valori la chiave primaria di CDS, cioè SiglaCDS. • SiglaCdS* è chiave esterna nella relazione STUDENTI, e serve a rappresentare un’associazione univoca da STUDENTI a CdS
ESEMPIO - III • Il dominio di SiglaCDS* nella relazione STUDENTI coincide col dominio di SiglaCDS nella relazione CDS • Se in una istanza di STUDENTI l’attributo SiglaCDS assume il valore “XYZ”, deve esistere, nella istanza di CDS una ennupla con SiglaCDS = “XYZ”. Il motivo è ovvio; se una studente è iscritto a “XYZ”, deve esistere il Corso di Studi “XYZ” • Tale proprietà si chiama Vincolo di integrità referenziale, e deve essere sempre soddisfatto da una chiave esterna:
DA MODELLO A OGGETTI A MODELLO RELAZIONALE - I • Data una descrizione di una base di dati con i meccanismi di astrazione del modello a oggetti, la sua trasformazione con il modello relazionale è alquanto laboriosa perché bisogna trattare • la descrizione delle associazioni • la descrizione delle gerarchie di classi • le eventuali proprietà strutturate e multivalore e passare ad una loro descrizione con attributi atomici. • Inoltre, essendo il modello relazionale meno espressivo del modello a oggetti, in generale si può procedere in più modi nella trasformazione e la scelta fra possibili alternative va fatta cercando di ottimizzare lo spazio di memoria occupata dalla base di dati e le prestazioni delle applicazioni.
DA MODELLO A OGGETTI A MODELLO RELAZIONALE - II Nella conversione di uno schema espresso con il modello a oggetti gli obiettivi da perseguire sono: 1. rappresentare le stesse informazioni; 2. minimizzare la ridondanza; 3. agevolare il recupero dei dati in relazione. In generale nella conversione occorre duplicare delle informazioni e non si possono sempre rappresentare direttamente tutti i vincoli imposti dai meccanismi del modello a oggetti. Per garantire la coerenza dei dati duplicati, e il rispetto dei vincoli non esprimibili nel modello relazionale, occorre quindi definire opportunamente le operazioni che modificano la base di dati.
DA MODELLO A OGGETTI A MODELLO RELAZIONALE - III • La trasformazione di uno schema a oggetti in uno schema relazionale avviene eseguendo i seguenti passi: • rappresentazione delle classi • rappresentazione delle associazioni uno a uno e uno a molti; • rappresentazione delle associazioni molti a molti o non binarie; • rappresentazione delle gerarchie di inclusione; • rappresentazione degli attributi multivalore; • appiattimento gli attributi composti
1. Rappresentazione delle classi Una classe C è rappresentata da una relazione R i cui attributi sono quelli di C si traduce in Studenti(Matricola, Nome, AnnoImmatric)
2. Rappresentazione delle associazioni uno a uno e uno a molti Come abbiamo già visto nell’esempio degli studenti e dei corsi di studi, le associazioni uno a molti si rappresentano aggiungendo agli attributi della relazione rispetto a cui l’associazione è univoca una chiave esterna che riferisce l’altra relazione. ESEMPIO: la relazione tra corsi di studi e studenti, essendo univoca rispetto ai corsi di studi, si rappresenta aggiungendo agli studenti una chiave esterna SiglaCDS. Quando l’associazione è uno ad uno la chiave esterna si aggiunge ad una qualunque delle due relazioni, preferendo quella rispetto a cui l’associazione è totale. Se l’associazione ha degli attributi, questi vanno aggiunti alla relazione a cui si aggiunge la chiave esterna.
ESEMPIO - I Studenti(Matricola, Nome, AnnoImmatric, Codice*) CorsidiLa(Codice, Nome, Tipo) la chiave esterna Codice* rappresenta l’associazione è_iscritto N.B. È un grave errore fare il contrario. Lo schema: Studenti(Matricola, Nome, AnnoImmatric) CorsidiLa(Codice, Nome, Tipo, Matricola*) rappresenta Corsi di Laurea ai quali può essere iscritto un solo studente!
ESEMPIO - II Se l’associazione è 1 a 1, cioè univoca in entrambi i versi, allora sono corrette entrambe le soluzioni. Dipartimenti(Nome, Facoltà, Cod*) Docenti(Cod, Settore) o Dipartimenti(Nome, Facoltà) Docenti(Cod, Settore, Nome*) • La prima soluzione è migliore, ma entrambe sono corrette
3. Rappresentazione delle associazioni molti a molti o non binarie Un’associazione molti a molti tra due classi si rappresenta aggiungendo allo schema una nuova relazione che contiene due chiavi esterne che riferiscono le due relazioni coinvolte. precisamente: se A è un’associazione multivalore da R ad S e da S ad R, A è rappresentata con uno schema di relazione in cui gli attributi sono le chiavi primarie pkR di R e pkS di S. A (pkR*, pkS*) Se l’associazione ha degli attributi, questi attributi vengono aggiunti alla nuova relazione, e non vanno a far parte della chiave della nuova relazione.
ESEMPIO - I CorsidiLa(Codice,Nome,Facoltà,Tipo) Docenti(CodDoc, Settore) Insegna(Codice*, CodDoc*) Una ennupla di Insegna rappresenta una coppia (Corso_di_Lurea, Docente) di oggetti in associazione. Il docente identificato dal CodDoc 1592 insegna ai corsi di laurea identificati dai codici Inf, SBC e Mat , il docente identificato dal CodDoc 3014 insegna al corso di laurea identificato dai codici Inf, ecc...
ESEMPIO - II CorsidiLa(Codice,Nome,Facoltà,Tipo) Docenti(CodDoc, Settore) Insegna(Codice*, CodDoc*, NumIns)
4. Rappresentazione delle gerarchie fra classi • Sia data una classe A con due sottoclassi B e C, tali che i tipi associati alle tre classi abbiano, rispettivamente, attributi (XA), (XA XB) e (XA XC), e sia KA la chiave primaria di A. • Nel modello relazionale vi sono almeno tre modi diversi di rappresentare questa situazione: • Relazione unica • Partizionamento verticale • Partizionamento
4. Rappresentazione delle gerarchie fra classi Relazione unica Si definisce un’unica relazione con attributi (XA XB XC D) che raccoglie tutti gli elementi delle tre classi; gli attributi XB e XC possono assumere il valore nullo, e l’attributo D serve a indicare la classe a cui appartiene l’elemento. ESEMPIO: Consideriamo la classe Persone con attributi CF, Nome e Tel e due sottoclassi: Studenti, con attributi Matricola e Facoltà, e Lavoratori, con attributi Attività e Reddito Secondo la relazione unica definiremo un’unica relazione Persone con tutti gli attributi Persone(CF, Nome, Tel, Matricola, Facoltà, Attività e Reddito)
ESEMPIO • Un solo schema di relazione, che contiene tutti gli attributi Con questa soluzione viene ignorata la gerarchia: si perdono le sottoclassi
4. Rappresentazione delle gerarchie fra classi Partizionamento verticale Si definiscono tre relazioni RA(XA), RB(KA*, XB), RC(KA*, XC), dove RA contiene tutti gli elementi della classe A, anche se stanno in qualche sottoclasse, mentre RB ed RC contengono solo quegli attributi, degli elementi di B e di C, che non sono in XA (attributi propri delle sottoclassi), ed una chiave esterna KA* che permette di ritrovare in RA il valore degli altri attributi. ESEMPIO si definiscono le relazioni Persone, con attributi CodFisc, Nome e Tel, Studenti con attributi CodFisc, Matricola e Facoltà e la relazione Lavoratoricon attributi CodFisc, Attività e Reddito. La relazione Persone contiene il codice fiscale il nome ed il telefono di tutte le persone, mentre le altre due relazioni contengono gli attributi propri delle sottoclassi, nonché il codice fiscale, che permette di risalire al nome; Persone(CodFisc, Nome, Telefono) Lavoratori(CodFisc*, Attività, Reddito) Studenti(CodFisc*, Matricola, Facoltà)
ESEMPIO Persone(CodFisc, Nome, Telefono) Lavoratori(CodFisc*, Attività, Reddito) Studenti(CodFisc*, Matricola, Facoltà)
4. Rappresentazione delle gerarchie fra classi Partizionamento orizzontale Si definiscono tre relazioni RA(XA), RB(XA,XB), RC(XA, XC), dove RA contiene solo gli elementi della classe A che non stanno in nessuna delle sottoclassi, mentre RB ed RC contengono tutti gli elementi di B e di C NOTA: se le sottoclassi costituiscono una copertura, la relazione RA(XA) non viene definita perché sarebbe sempre vuota. ESEMPIO: trattandosi di sottoclassi che non soddisfano il vincolo di copertura si definiscono le relazioni Persone con attributi CodFisc, Nome, Telefono, Studenti con attributi CodFisc, Nome, Telefono, Matricola e Facoltà e la relazione Lavoratori con attributi CodFisc, Nome, Telefono, Attività e Reddito. La relazione Persone contiene le informazioni delle persone che non sono né studenti né lavoratori, la relazione Studenti contiene le informazioni degli studenti e la relazione Lavoratori contiene le informazioni dei lavoratori. Persone(CodFisc, Nome, Telefono) Lavoratori(CodFisc*, Attività, Reddito) Studenti(CodFisc*, Matricola, Facoltà)