Modello Relazionale Architettura a tre livelli di un DBMS Modello logico dei dati utilizzato nell’ambito delle basi di dati, introdotto da Codd nel 1970. Livello fisico (interno) : organizzazione dei dati nelle memorie permanenti strutture dati ausiliarie per accedere ai dati modello dei dati insieme di strutture dati e regole logico strutture disponibili su un DBMS Modello relazionale : relazione Livello logico (interno) : struttura dei dati e relazioni fra essi nessun riferimento alla organizzazione fisica PERCORSO PARTENZA Milano Milano Roma ARRIVO Modena Roma Napoli ORAPARTENZA 1310 1550 0400 Livello esterno (delle viste) : struttura vista da un utente/applicazione schema rappresentazione di uno specifico dominio istanza Indipendenza dei dati indipendenza fisica indipendenza logica informazioni effettivamente memorizzate Altri modelli logici Modello Gerarchico (strutture ad albero) Modello Reticolare (strutture a grafi) 1 2 Modello Relazionale: Formalizzazione Modello Relazionale: Caratteristiche Il concetto di relazione Dominio : insieme di valori ½ ¾ , una ennupla (tu è definita come ½ ¾ Tupla : Dati domini ½ ¾ pla) ordinata su ½ ¾ consente una descrizione astratta dei dati indipendenza dei dati consente una formalizzazione semplice e precisa Teoria relazionale dei dati è riconducibile al concetto semplice di tabella facilmente comprensibile dall’utente finale Prodotto Cartesiano : Il prodotto cartesiano di domini , è , indicato con ½ ¾ ½ ¾ l’insieme di tutte le tuple su ½ ¾ . , ½ ¾ Il valore di è il Grado della relazione Relazione : Una relazione su domini ½ ¾ è un sottoinsieme di ½ ¾ : linguaggio di interrogazione (SQL) dichiarativo Il numero di tuple è la Cardinalità della relazione 3 4 Relazioni con attributi Modello Relazionale : Esempi ½ La relazione è un insieme, quindi ¾ ½ ¾ ½¾: Relazione su Rappresentazione tabellare : non è definito alcun ordinamento tra le tuple Ciascuna tupla è, al proprio interno, ordinata. Attributo : Nome dato ad un dominio in una relazione Un esempio concreto : Orario di partenza dei treni indipendenza dall’ordinamento dei domini significato ai valori del dominio Un esempio concreto : Orario di partenza dei treni Stringa Stringa Intero Stringa Stringa Intero le tuple sono distinte l’una dall’altra differenza con la tabella (multiset) Milano Modena 1310 Milano Roma 1550 Roma Napoli 0400 5 PARTENZA Milano Milano Roma ARRIVO Modena Roma Napoli ORAPARTENZA 1310 1550 0400 6 Schema ed Istanza Esempio Schema di relazione : : nome della relazione ½ ¾ : insieme di nomi di attributi Schema di base di dati : DB UNIVERSITÀ = STUDENTE(MATR,NOME,CITTÀ,ACORSO) CORSO(CODCOR,NOME,CODDOC) Istanza di relazione : di uno schema ½ ¾ è una relazione su ½ ¾ . Schema di base di dati relazionale : R ½½ ¾¾ DOCENTE(CODDOC,CF,CITTÀ) Istanza di base di dati : STUDENTE MATR M1 M2 M3 M4 M6 Istanza di base di dati relazionale : Dato R ½½ ¾¾ , una istanza su R è un insieme di relazioni r ½ ¾ con relazione su l’insieme è denotato anche con l’insieme è denotato con l’insieme è denotato con denota , , oppure , denota il valore di su denota la sottotupla di ottenuta considerando i valori degli attributi in 7 CITTÀ SA PA BO MO MI ACORSO 1 2 1 2 1 CODCOR C1 C2 C3 C4 NOME Fisica 1 Analisi Matematica 1 Fisica 2 Analisi Matematica 2 CODDOC D1 D2 D1 D2 CODDOC D1 D2 D3 D4 CF CF1 CF2 CF3 CF4 CORSO Notazione : Sia uno schema e tupla su Siano e NOME Marco Quaranta Giacomo Tedesco Maria Mei Ugo Rossi Agata Verdi DOCENTE CITTÀ MO BO MO FI 8 Chiavi Chiavi candidate, primaria, alternative Informalmente, per chiave di una relazione si intende un sottoinsieme dei suoi attributi che identifica univocamente ogni tupla della relazione stessa. Dato , è detto chiave di se e solo se per ogni relazione su valgono le proprietà: 1. (Univocità) ½ ¾ ½ ¾ ½ ¾ 2. (Minimalità) non verifica 1. Dato ed una chiave di , tale che è detto superchiave di . Per ogni , X è una superchiave. Quindi, ogni ha almeno una chiave. può avere più chiavi dette candidate Tra le chiavi candidate una a scelta è detta primaria Le rimanenti chiavi vengono dette alternative Notazione chiave primaria : ½ ¾ ¾ chiave alternativa : AK: ½ Esempio : DOCENTE (CODDOC, CF, CITTÀ) AK: CF 9 10 Valori nulli Vincoli di Integrità Informazione incompleta : tupla il cui valore di uno o più attributi non è disponibile. Ad esempio, in DOCENTE(CODDOC,CF,NOME,CITTÀ) la CITTÀ del docente è sconosciuta I vincoli di integrità stabiliscono condizioni di correttezza delle informazioni nella base di dati. Vincolo intrarelazionale : coinvolge singole relazioni della base di dati il CF non è previsto per docenti di determinati paesi al docente non è ancora stato assegnato un CODICE ... Ogni dominio di relazione viene esteso con un particolare valore, detto valore nullo e denotato con null, che rappresenta assenza di informazione. Nei sistemi relazionali è possibile specificare se un attributo può o meno Vincolo di chiave Una chiave è un vincolo di integrità: essa stabilisce l’univocità dei valori assunti dagli attributi di . vincolo di tupla coinvolge una singola tupla di una relazione Vincolo interrelazionale : coinvolge più relazioni della base di dati Vincolo di Integrità Referenziale assumere il valore null. Logica a tre valori in SQL 11 12 Vincolo di Integrità Referenziale Vincolo di Entity Integrity In presenza di valori nulli, non sarebbe quindi possibile controllare l’univocità dei valori assunti dagli attributi di una chiave. Per questo motivo viene imposto il seguente vincolo. Tale vincolo stabilisce che gli attributi che costituiscono la chiave primaria di una relazione non possono assumere valore nullo. I riferimenti tra le tuple delle relazioni vengono stabiliti tramite i valori assunti dagli attributi nelle tuple. L’integrità referenziale assicura che quando in una tupla si utilizza il valore di un attributo per riferirsi ad un’altra tupla, quest’ultima sia una tupla esistente. CORSO Formalmente, un’istanza di uno schema di relazione , soddisfa il R con chiave primaria ½ ¾ vincolo di Entity integrity se e solo se null 13 CODCOR C1 C2 C3 C4 C5 NOME Fisica 1 Analisi Matematica 1 Fisica 2 Analisi Matematica 2 Meccanica Razionale CODDOC D1 D2 D3 D4 CF CF1 CF2 CF3 CF4 CODDOC D1 D2 D1 D2 null DOCENTE CITTÀ MO BO MO FI 14 Vincolo di Integrità Referenziale Dichiarazione vincolo di integrità referenziale in R: Foreign Key o Chiave Esterna : insieme di attributi ½ ¾ di uno schema ½ R Chiave della Relazione riferita : schema di relazione ¾ R, non necessariamente distinto da ½, con una chiave ½ ¾ , con . Un’istanza r ½ ¾ su R soddisfa il vincolo se e solo se i valori su di ciascuna tupla di ½ sono valori su di una ¾, o sono valori nulli: ½ ½ ¾ ¾ ½ ¾ ½ null Istanza Legale di Base di Dati Dato uno schema di basi di dati R ½½ ¾¾ , un’istanza r ½ ¾ su R tale che ciascuna relazione soddisfa il vincolo di entity integrity r soddisfa tutti i vincoli di integrià referenziale imposti su R verrà detta istanza legale della base di dati R. Notazione : ½ FK: ½ REFERENCES ¾½ Esempio : CORSO (CODCOR,NOME,CODDOC) FK: CODDOC REFERENCES DOCENTE 15 16 Progettazione di una base di dati Il linguaggio SQL Il linguaggio SQL (Structured Query Language) è il linguaggio standard per la definizione e manipolazione delle basi di dati relazionali. Istanza : Progettazione Concettuale S CHEMA C ONCETTUALE Corso(CC,CNome,CD) Docente(CD,Cognome,Città) Corso CC CNome C1 Fisica1 C2 Analisi1 C3 Fisica2 C4 Analisi2 Basi di dati relazionali Schema : Requisiti della base di dati CD D1 D2 D1 D3 Docente CD Cognome D1 Rossi D2 Pastore D3 Carboni Progettazione Logica Città MO BO FI S CHEMA L OGICO Progettazione Fisica linguaggio di manipolazione dei dati - DML interrogazione e aggiornamento dell’istanza S CHEMA F ISICO linguaggio di definizione dei dati - DDL definizione schema, autorizzazioni per l’accesso, . . . 17 Prodotti della progettazione 18 Modello Relazionale: Cronologia 1970 “A Relational Model of Data for Large Shared Data Banks”, di E.F. Codd 1974 prima versione del linguaggio SQL 1975-79 sviluppo del prototipo System R 1980 versione commerciale di SystemR, e Oracle 1982 IBM Database2 (DB2) 1986-89 standardizzazione ISO-ANSI SQL-89 1992 ISO-ANSI SQL2 1999 ISO-ANSI SQL3 19