DBMS – Il Modello Relazionale PDF
Document Details
Uploaded by AffordableGroup7338
Università San Raffaele
Prof. M. Zaninelli
Tags
Summary
These lecture notes provide an introduction to the Relational Model in database management systems. Examples, illustrations, and diagrams help explain the concepts. The document covers topics like relations, attributes, domains, and the relational database model as a representation of data.
Full Transcript
Prof. M. Zaninelli DBMS – Il Modello Relazionale La gestione dell’informazione digitale DBMS – Il Modello Relazionale 1 di 52 Prof. M....
Prof. M. Zaninelli DBMS – Il Modello Relazionale La gestione dell’informazione digitale DBMS – Il Modello Relazionale 1 di 52 Prof. M. Zaninelli Cos’è una Base di Dati Relazionale? DBMS – Il Modello Relazionale 2 di 52 Prof. M. Zaninelli Modello Relazionale (fine anni ’60) Si basa sul concetto matematico di Relazione e sul concetto intuitivo di Tabella e permette di costruire un modello dei dati Esistono diversi approcci alla modellazione dei dati: modello gerarchico, modello reticolare, modello a oggetti, noi studieremo il modello relazionale DBMS – Il Modello Relazionale 3 di 52 Prof. M. Zaninelli Base di dati come insieme di tabelle I dati che formano una base di dati relazionale sono contenuti in un insieme di tabelle Ti. Ogni tabella è una relazione, in senso matematico Cosa vuol dire? DBMS – Il Modello Relazionale 4 di 52 Prof. M. Zaninelli Relazione Siano Dnomi = { Anna, Piero, Elena } Dvoti = { suff, discr, buono, ottimo } Prodotto cartesiano Tutti i nomi combinati con tutti i voti Dnomi x Dvoti = { (Anna, suff), (Anna, discr), (Anna, buono),(Anna, ottimo), (Piero, suff), (Piero, discr), …, …, (Elena, ottimo) } 3 x 4 = 12 elementi DBMS – Il Modello Relazionale 5 di 52 Prof. M. Zaninelli Relazione Il prodotto cartesiano, associando tutti con tutti, non porta molta informazione. In generale ci interessa solo un sottoinsieme delle possibili associazioni, ovvero una relazione. Es. { (Anna, buono), (Piero, discr), (Elena, suff) } Una relazione può essere rappresentata come una tabella Anna buono Piero discr Elena suff DBMS – Il Modello Relazionale 6 di 52 Prof. M. Zaninelli Caso generale Di , i [1, n] dominio di una data caratteristica (dominio = insieme di tutti i valori possibili per tale caratteristica) Prodotto cartesiano D1 x D2 x … x Dn = { (v1, v2, …, vn): v1 D 1 , v2 D 2 , …, vn D n } Gli elementi del prodotto cartesiano sono anche detti ennuple o tuple DBMS – Il Modello Relazionale 7 di 52 Prof. M. Zaninelli … continua Relazione R D 1 x D 2 x … x Dn È un sottoinsieme del prodotto cartesiano n è la cardinalità della relazione DBMS – Il Modello Relazionale 8 di 52 Prof. M. Zaninelli … continua Cognome = { Rossi, Bianchi, Verdi } Nascita = { 1980, 1977, 1975 } Corsolaurea = { economia, medicina } Cognome x Nascita x Corsolaurea = { (Rossi,1980, economia), (Rossi,1980,medicina), (Rossi,1977, economia), (Rossi,1977, medicina), (Rossi,1975, economia), (Rossi,1975, medicina), (Bianchi, 1980, economia), (Bianchi, 1980, medicina), (Bianchi, 1977, economia), (Bianchi, 1977, medicina), (Bianchi, 1975, economia), (Bianchi, 1975, medicina), …} DBMS – Il Modello Relazionale 9 di 52 Prof. M. Zaninelli … continua La relazione contiene i legami tra i valori e ci dice chi è nato in quale anno, ed a quale facoltà è iscritto Cognome Nascita Corsolaurea Rossi 1980 economia Bianchi 1980 medicina Verdi 1975 medicina Potrebbero sorgere dei problemi nella relazione precedente? DBMS – Il Modello Relazionale 10 di 52 Prof. M. Zaninelli Struttura di una tabella attributi n1 n2 nn vi1 vi2 vin record ri Una tabella è un insieme di oggetti detti record Ogni record corrisponde ad una riga della tabella I record di una tabella hanno la stessa struttura DBMS – Il Modello Relazionale 11 di 52 Prof. M. Zaninelli Attributi e valori Ogni colonna della tabella corrisponde ad un attributo Ogni attributo assume valori su di un dominio (es. numeri interi, sequenza di caratteri, l’insieme {lun, mar, merc, giov, ven}, …) I dati contenuti in una colonna sono omogenei DBMS – Il Modello Relazionale 12 di 52 Prof. M. Zaninelli Relazioni fra tabelle Supponiamo ora di avere due tabelle T1 T2 Nome Nascita Città Provincia Anna settembre Pinerolo TO Lisa agosto Trino VC Luca dicembre Bra CN Elena aprile Novi AL Possiamo fare il prodotto cartesiano T1 x T2 delle due tabelle? Sì! DBMS – Il Modello Relazionale 13 di 52 Prof. M. Zaninelli Attenzione … In questo caso ogni record è costituito da più colonne T1 Nome Nascita Anna settembre Lisa agosto Luca dicembre Elena aprile Nel fare il prodotto cartesiano i record non vanno spezzati!! T1 x T2 = { (r1, r2) : r1 T1 e r2 T2} (Anna,settembre) (Pinerolo,TO) DBMS – Il Modello Relazionale 14 di 52 Prof. M. Zaninelli Risultato … T1 x T2 = { ( ( Anna, settembre ) , ( Pinerolo,TO ) ), ( ( Anna, settembre ) , ( Trino,VC ) ), ( ( Anna, settembre ) , ( Bra,CN ) ), ( ( Anna, settembre ) , ( Novi,AL ) ), …} In pratica si compone ogni record di T1 con ogni record di T2 DBMS – Il Modello Relazionale 15 di 52 Prof. M. Zaninelli Risultato in forma tabellare Risultato in forma tabellare Nome Nascita Città Provincia Anna settembre Pinerolo TO Anna settembre Trino VC Anna settembre Bra CN Anna settembre Novi AL Lisa agosto Trino VC Lisa agosto Pinerolo TO Lisa agosto Bra CN Lisa agosto Novi AL Luca dicembre Bra CN Luca dicembre Pinerolo TO Luca dicembre Trino VC Luca dicembre Novi AL Elena aprile Novi AL Elena aprile Pinerolo TO Elena aprile Trino VC Elena aprile Bra CN DBMS – Il Modello Relazionale 16 di 52 Prof. M. Zaninelli Il numero di record della tabella risultato è il prodotto del num. di record di T1 per il num. di record di T2 mentre il numero di colonne della tabella risultato è il num. delle colonne di T1 più il numero di colonne di T2 DBMS – Il Modello Relazionale 17 di 52 Prof. M. Zaninelli Relazioni tra tabelle Anche il prodotto cartesiano fra tabelle non porta molta informazione Ci fa vedere però come sia possibile definire delle relazioni fra le tabelle e quindi come i dati contenuti in una tabella possano essere combinati con i dati contenuti nelle altre Più avanti vedremo come sia possibile combinare tali dati per ottenere informazioni significative DBMS – Il Modello Relazionale 18 di 52 Prof. M. Zaninelli Perchè relazionale? I dati sono contenuti in tabelle Le tabelle sono delle relazioni in senso matematico È possibile definire nuove relazioni che combinano i dati contenuti in più tabelle Esiste un supporto matematico formale che consente di realizzare sistemi per l’elaborazione dei dati rappresentati secondo il modello relazionale DBMS – Il Modello Relazionale 19 di 52 Prof. M. Zaninelli Osservazione I dati sono correlati STUDENTI Nome Matricola Corso CORSI Materia Corso ? DOCENTI Docente Materia Libro DBMS – Il Modello Relazionale 20 di 52 Prof. M. Zaninelli Osservazione I dati devono essere coerenti Nome Codfiscale Anna Rossi ANNRSS00001 … Anna Rossi ANNRSS99901 Non dovrebbe essere possibile associare due codici fiscali diversi alla stessa persona DBMS – Il Modello Relazionale 21 di 52 Prof. M. Zaninelli Osservazione I dati devono essere consistenti Nome Cognome altre info … Anna Rossi ….. Nome Cognome Corso Anna ? Rossi economia Se la studentessa Anna Rossi abbandona l’Università e viene quindi cancellata dall’elenco degli iscritti, non devono rimanere riferimenti ad Anna Rossi nelle altre tabelle della base dati DBMS – Il Modello Relazionale 22 di 52 Prof. M. Zaninelli Osservazione Il modello permette di specificare informazione incompleta Per rappresentare la mancanza di alcuni valori il concetto di relazione viene esteso permettendo l’introduzione del valore nullo (NULL) DBMS – Il Modello Relazionale 23 di 52 Prof. M. Zaninelli Vincoli Molti di questi controlli e/o aggiornamenti possono essere eseguiti in modo automatico dal sistema, a patto che i progettisti della base di dati esprimano delle regole (dette vincoli) che indicano quali controlli il sistema deve effettuare DBMS – Il Modello Relazionale 24 di 52 Prof. M. Zaninelli Vincoli I vincoli sono delle proprietà che devono essere soddisfatte dalle tuple e possono coinvolgere una o più relazioni 1. Vincoli di dominio 2. Vincoli di chiave 3. Vincoli di integrità referenziale DBMS – Il Modello Relazionale 25 di 52 Prof. M. Zaninelli Vincoli di dominio I vincoli di dominio riguardano gli attributi: i valori che i record assumono in corrispondenza dei vari attributi sono definiti nei loro domini Per il sistema “lunedì” e “Marta” sono due sequenze di caratteri, quindi, se non ci fossero vincoli, potrebbero appartenere alla stessa colonna di una tabella Sul voto di un esame si può imporre un vincolo: deve essere compreso tra 18 e 30, e solo con il 30 ci può essere la lode DBMS – Il Modello Relazionale 26 di 52 Prof. M. Zaninelli Vincoli di chiave Come abbiamo già visto nel modello E-R, è importante poter identificare gli elementi, in questo caso i record, in modo univoco L’identificazione viene fatta in base al contenuto dei record medesimi, innanzi tutto definendo un insieme di attributi che combinati insieme assumono valori diversi per ogni record (vincolo di chiave) Un tale insieme è detto Chiave Primaria DBMS – Il Modello Relazionale 27 di 52 Prof. M. Zaninelli Esempio Nome Cognome Codfis Residenza Stato_civile Andrea Rossi 11111 …. Celibe Andrea Bianchi 22222 …. Sposato Andrea Rossi 33333 …. Sposato Luigi Bianchi 44444 …. Celibe Giorgia Verdi 55555 …. Nubile Elena Valli 66666 …. Nubile Giorgia Verdi 77777 …. Nubile Ada Rossi 88888 …. Sposata Chiave Primaria = { Codfis } DBMS – Il Modello Relazionale 28 di 52 Prof. M. Zaninelli Esempio Una chiave primaria può essere costituita da più attributi PRESTITI Titolo Autore Data_prestito Cod_utente Poesie Rossi 10/7/00 111 Storia Verdi 10/7/00 222 Poesie Rossi 8/8/01 111 … … … … In questo caso la chiave primaria è costituita dalla coppia { Titolo, Dataprestito } Oss. vale solo se nella biblioteca c’è una sola copia per ogni libro, altrimenti potrebbero esserci record uguali DBMS – Il Modello Relazionale 29 di 52 Prof. M. Zaninelli Vincoli di integrità referenziale Usano in concetto di chiave esterna Una chiave esterna è un attributo o un insieme di attributi di una relazione, i cui valori devono corrispondere ai valori di una chiave primaria di un’altra relazione Si dice che una chiave esterna fa riferimento alla sua chiave primaria Le chiavi esterne sono un meccanismo che consente di mantenere l’integrità dei dati DBMS – Il Modello Relazionale 30 di 52 Prof. M. Zaninelli Esempio PRESTITI Titolo Autore Dataprestito Codutente Poesie Rossi 10/7/00 111 Storia Verdi 10/7/00 222 Poesie Rossi 8/8/01 111 … … … … UTENTI Codice Nome Indirizzo Telefono 111 Rossi via Matera 21 011-3333 222 Verdi via Matera 21 011-3333 333 Rossi via Pavesi 6 011-5555 … … … … DBMS – Il Modello Relazionale 31 di 52 Prof. M. Zaninelli Esempio LIBRI Codice Titolo Autore PRESTITI Codlibro Codutente Data UTENTI Utente Nome Indirizzo Telefono DBMS – Il Modello Relazionale 32 di 52 Prof. M. Zaninelli Cosa significa? 1. Non si possono dare in prestito libri che non compaiono nel catalogo della biblioteca 2. Non si possono prestare libri a utenti privi di tessera o con un codice di tessera non valido 3. Se si elimina un libro dal catalogo, si eliminano anche le informazioni ad esso correlate in modo automatico 4. Se si modificano i codici dei libri secondo un nuovo criterio di assegnazione, la tabella dei prestiti verrà aggiornata automaticamente Mantenimento della coerenza dei dati contenuti nella base di dati DBMS – Il Modello Relazionale 33 di 52 Prof. M. Zaninelli Come si realizza una Base di Dati partendo da un modello Entità Relazioni? DBMS – Il Modello Relazionale 34 di 52 Prof. M. Zaninelli Traduzione da E-R a Relazionale Costruito lo schema concettuale (modello E-R) occorre tradurlo in uno schema logico ad esso equivalente, allo scopo di rappresentare la realtà di interesse in termini di una descrizione ancora indipendente dai dettagli fisici ma vicina al modello dei dati usato dal DBMS scelto DBMS – Il Modello Relazionale 35 di 52 Prof. M. Zaninelli Entità Ad ogni entità corrisponde una relazione con lo stesso nome e gli stessi attributi. L’identificatore dell’entità è la chiave della relazione Nome Cognome PERSONE Codfiscale Indirizzo PERSONE (Nome, Cognome, Codfiscale, Indirizzo) DBMS – Il Modello Relazionale 36 di 52 Prof. M. Zaninelli Attributi composti Gli attributi composti possono essere tradotti come una relazione a parte oppure essere appiattiti nella relazione corrispondente all’entità in questione Via Indirizzo Numero civico CAP INDIRIZZO (Via, Numero civico, CAP, Id) PERSONE (…, Via, Numero civico, CAP) DBMS – Il Modello Relazionale 37 di 52 Prof. M. Zaninelli Associazioni molti a molti La traduzione avviene per passi 1. Per ogni entità si costruisce la relazione corrispondente (con gli stessi attributi) 2. Anche l’associazione viene tradotta in una relazione in cui i. gli attributi dell’associazione diventano attributi della relazione ii. si devono anche introdurre gli identificatori delle entità coinvolte per mantenere il legame (Id e Codice nella relazione PARTECIPAZIONE dell’esempio che segue) DBMS – Il Modello Relazionale 38 di 52 Prof. M. Zaninelli Associazioni molti a molti Prima si traducono le entità Titolo (0,N) (0,N) IMPIEGATI PARTECIPAZIONE PROGETTI Cognome Codice Id Datainizio Qualifica IMPIEGATI (Cognome, Qualifica, Id) PROGETTI (Titolo, Codice) DBMS – Il Modello Relazionale 39 di 52 Prof. M. Zaninelli Associazioni molti a molti Poi si crea una relazione per l’associazione Titolo (0,N) (0,N) IMPIEGATI PARTECIPAZIONE PROGETTI Cognome Codice Id Datainizio Qualifica PARTECIPAZIONE (Datainizio, Id, Codice) DBMS – Il Modello Relazionale 40 di 52 Prof. M. Zaninelli Associazioni molti a molti Devono inoltre essere aggiunti opportuni vincoli di integrità referenziale fra gli attributi della relazione che traduce l’associazione e gli attributi delle entità con cui si vuole mantenere il legame Nell’esempio precedente occorre introdurre due vincoli: uno fra “Id” di IMPIEGATI e “Id” di PARTECIPAZIONE e uno fra “Codice” di PROGETTI e “Codice” di PARTECIPAZIONE DBMS – Il Modello Relazionale 41 di 52 Prof. M. Zaninelli Associazioni uno a molti In questo caso ci sono due possibilità Si procede come nel caso precedente delle associazioni molti a molti Si osserva che alcune relazioni condividono la stessa chiave primaria (quelle per cui la cardinalità dell’associazione è 1:1). Queste relazioni possono essere essere riunite in una sola, aggiungendo però degli attributi per mantenere il legame con le altre entità DBMS – Il Modello Relazionale 42 di 52 Prof. M. Zaninelli Associazioni uno a molti (1) (1,1) (0,N) GIOCATORE CONTRATTO SQUADRA Ruolo Città Cognome Nome Nascita Ingaggio GIOCATORE (…) SQUADRA (…) CONTRATTO (Cognome, Nascita, Nome, Ingaggio) Stessa traduzione del caso di associazioni molti a molti DBMS – Il Modello Relazionale 43 di 52 Prof. M. Zaninelli Associazioni uno a molti (2) (1,1) (0,N) GIOCATORE CONTRATTO SQUADRA Città Cognome Ruolo Nome Nascita Ingaggio GIOCATORE (Cognome, Nascita, Ruolo, Ingaggio, Nome) La relazione GIOCATORE contiene anche le informazioni sull’associazione CONTRATTO; Nome serve per mantenere il legame con SQUADRA SQUADRA (Nome,Città) DBMS – Il Modello Relazionale 44 di 52 Prof. M. Zaninelli Associazioni uno a uno In questo caso ci sono più possibilità Si procede come nel caso precedente delle associazioni uno a molti, con un numero maggiore di possibilità di scelta della relazione cui associare l’associazione Nel caso di associazioni con partecipazione opzionale (ovvero cardinalità minima uguale a zero) si costruisce una nuova relazione per l’associazione DBMS – Il Modello Relazionale 45 di 52 Prof. M. Zaninelli Associazioni uno a uno (1) (1,1) (1,1) IMPIEGATO LAVORA UFFICIO MetriQuadri Matricola Qualifica DataInizio Numero IMPIEGATO (Matricola, Qualifica, DataInizio, Numero) La relazione IMPIEGATO contiene anche le informazioni sull’associazione LAVORA; UFFICIO (Numero, MetriQuadri) Numero serve per mantenere il legame con UFFICIO DBMS – Il Modello Relazionale 46 di 52 Prof. M. Zaninelli Associazioni uno a uno (2) (1,1) (1,1) IMPIEGATO LAVORA UFFICIO Numero MetriQuadri Matricola Qualifica DataInizio UFFICIO (Numero, MetriQuadri, Matricola, DataInizio) La relazione UFFICIO contiene anche le informazioni sull’associazione LAVORA; IMPIEGATO (Matricola, Qualifica) Matricola mantiene il legame con IMPIEGATO DBMS – Il Modello Relazionale 47 di 52 Prof. M. Zaninelli Associazioni uno a uno (opzionali) (0,1) (0,1) IMPIEGATO LAVORA UFFICIO Numero MetriQuadri Matricola Qualifica DataInizio UFFICIO (Numero, MetriQuadri) IMPIEGATO (Matricola, Qualifica) LAVORA (Matricola, Numero, DataInizio) Stessa traduzione del caso di associazioni molti a molti DBMS – Il Modello Relazionale 48 di 52 Prof. M. Zaninelli Esercizio: Esercizio tratto da: Basi di Dati di Atzeni, Ceri, Paraboschi, Torlone, casa editrice McGraw-Hill DBMS – Il Modello Relazionale 49 di 52 Prof. M. Zaninelli Modello Relazionale: EMPLOYEE (Code_Employee, Surname, Salary, Age, Department_Name, Branch_City, StartDate) DEPARTMENT (Department_Name, Branch_City) PHONE (Department_Name, Number) BRANCH (Branch_City, Street, Number, PostCode) PROJECT (Project_Name, Budget, ReleaseDate) PARTICIPATION (Code_Employee, Project_Name, Startdate) DBMS – Il Modello Relazionale 50 di 52 Prof. M. Zaninelli Libro di testo Per maggiori informazioni su questa parte potete consultare il libro Basi di Dati di Atzeni, Ceri, Paraboschi, Torlone, casa editrice McGraw- Hill Cap 2, Il modello relazionale Cap 5, Metodologie e modelli per il progetto (pag 165-184) Cap. 7, La progettazione logica (pag. 245-252) DBMS – Il Modello Relazionale 51 di 52 Prof. M. Zaninelli Termini della Licenza This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Original Work by: G. Mecca - [email protected] - Basi di Dati DBMS – Il Modello Relazionale 52 di 52