Lezione 6 • Ricordiamo le fasi della progettazione di una Base di Dati Modello relazionale Modello logico • Un tipo di modello logico che deriva da concetti matematici. • Ha un proprio significato • Ha delle regole di derivazione facili Associazione 1 a 1 • L’associazione Uno a uno viene tradotta in una unica relazione che contiene tutti gli attributi della prima e della seconda • Diventa la chiave primaria una delle due chiavi della relazione. • Gli attributi dell’associazione diventano attributi della relazione Esempio Tabelle dei dati Relazione Persona Persona(CF,Nome,cognome,datan,targa,modello,casa,data) O Auto(CF,....,targa,....,data) (SE l’auto è facoltativa) O Persona(CF,....., Targa,data) Auto(Targa, …...) (auto facol) Persona(CF,.....,) Auto(Targa, …...,CF,data) (persona facol) Attributo Chiave Formato Dimensione CF Pk Alfanumerico 15 Opzioni Cognome Alfanumerico 30 Not Null Nome Alfanumerico 25 Not null DataN Data/ora 8 Luogo Alfanumerico 20 Targa Alfanumerico 9 Modello Alfanumerico 10 Casa Alfanumerico 10 Data Data/ora 8 Not null Not null Tipi di dato Cosa mettere nelle opzioni Tipo Descrizione Varchar(n) Parole di lunghezza fino a N Char(N) Parole di lunghezza N fissa Char carattere Bit Tipo booleano Integer o int Intero Integer (n) o int (n) Intero con massino N cifre Real Reale Decimal (P,D) Decimale con p parte intero d parte decimale Date Date (AA/mm/gg) Time Ora 10:34:25:42 Ora, minuti, secondi, millisecondi Definito dall’utente L’utente da il valore che può assumere il campo • • • – – – – • • • Se sono all’interno di un intervallo Se devono assumere valori particolari Se devono avere valori unici Se esistono vincoli particolari Esempio Associazione 1 a N • Default : un valore che il campo deve avere nel caso non venga inserito. Not null : quando il campo deve avere un valore Vincoli di integrità sui dati (vincoli interni) L’associazione Uno a N viene tradotta in due relazioni La prima relazione deriva dall’entità che sta nella associazione a 1 La seconda relazione deriva dall’entità che sta nella associazione ad N con l’aggiunta come attributo di un campo (chiave esterna) che rappresenta la chiave primaria dell’entità che sta ad 1 . Vanno aggiunti come cmapi tutti gli attributi dell’associazione La chiave esterna deve essere definita“non null” se nell’associazione l’entità a 1 è obbligatoria. Persona(CF,Nome,cognome,datan) Auto(Targa,modello,casa,data,CF) Tabelle dei dati Relazione Persona Relazione Auto Attributo Chiave Formato Dimensione CF Pk Alfanumerico 15 Cognome Alfanumerico 30 Not Null Nome Alfanumerico 25 Not null DataN Data/ora 8 • Chiave Formato Dimensione Opzioni Targa Pk Alfanumerico 9 Not null Modello Alfanumerico 10 Casa Alfanumerico 10 Data Data/ora 8 Not null Alfanumerico 9 Not null (?) FK • • • Attributo Cf Associazione N a N Opzioni L’associazione N a N viene tradotta in Tre relazioni La prima relazione deriva dalla prima La seconda relazione deriva dalla seconda La terza ha – come nome il nome dell’associazione – come attributi le chiavi primarie delle relazioni precedenti e tutti gli attributi dell’associazione – La chiave di solito è: • L’insieme delle chiavi delle altre associazioni • Alle volte serve aggiungere altri campi Tabelle dei dati Esempio Relazione Persona Relazione Auto Persona(CF,Nome,cognome,datan) Auto(Targa,modello,casa) Acquista(Targa,CF, data) Relazione Acquista Attributo Chiave Formato Dimensione CF Pk Alfanumerico 15 Cognome Alfanumerico 30 Not Null Nome Alfanumerico 25 Not null DataN Data/ora 8 Attributo Chiave Formato Dimensione Targa Pk Alfanumerico 9 Modello Alfanumerico 10 Casa Alfanumerico 10 Attributo Chiave Formato Dimensione Targa Pk/Fk Alfanumerico 9 CF Pk/FK Alfanumerico 10 Data/ora 10 Data Opzioni Opzioni Opzioni CASO N:N ASSOCIAZIONE RICORSIVA CASO 1:N Si risolve come una normale associazione 1:n solo che avremo una sola tabella avendo una sola entità Dipendenti(Matricola, nome,cognome,datanascita,supervisore) Esempio di associazione N:N:N PRODOTTI (Codice, Nome, Costo) COMPOSIZIONI (Composto, Componente, Quantità) Composto e componente sono codici di prodotti La teoria • La teoria si basa sul concetto di relazione tra insiemi. • Una relazione R su una sequenza di insiemi D1, D2, D3 … DN (non necessariamente distinti) è un sottoinsieme finito del prodotto cartesiano D1 x D2 x D3 … x DN che è possibile esprimere con: R ⊆ D1 x D2 x D3 … x DN • N (N ≥ 1) è detto grado della relazione. • Gli insiemi D sono detti domini della relazione e ciascuno di essi può essere un insieme composto da dati di tipo elementare (per esempio: carattere, booleano, numerico). • A ogni dominio è associato un attributo, che lo identifica univocamente all’interno della relazione Codice Nome Libretto Materia D ocente Nome N Insegna M Studente K Codice Descrizione Aula Docente(Codice,nome,materia) Studente(libretto,nome) Aula(Codice, descrizione) Insegna(Codice,libretto,aula) COMPONENTE COMPOSTO SUPERVISORE COLLABORATORE Consideriamo 2 insiemi • Modello={Panda,Idea,C2,C3} • Costruttore={Citroen,Fiat} Il prodotto cartesiano ModelloxCostruttore è l’insieme delle coppie (x,y) dove x appartiene al primo insieme e y al secondo. Otterremo quindi: Modello x Costruttore= {(Panda, citroen), (Panda, Fiat), (Idea, Citroen), (Idea, Fiat), (C2,Citroen), (C2, Fiat), (C3, Citroen) , (C3, Fiat) } Nomi colonne A B ………………… C cardinalità righe Grado • • • • • L’insieme dei valori che possono essere presenti in una colonna è detta dominio. Il numero delle colonne è detto grado. Il numero delle righe è detto cardinalità. La relazione Prodottoda è una relazione di grado2 e cardinalità 4. La relazione rappresenta un’entità ogni t-pla rappresenta un’istanza dell’entità , le colonne contengono i valori assunti dagli attributi. ESEMPIO La relazione può essere rappresentata mediante una tabella che ha tante righe quanti sono gli elementi della relazione e tante colonne quanti sono gli insiemi coinvolti. Prodottoda MODELLO COSTRUTTORE C2 Citroen C3 Citroen Panda Fiat Idea Fiat Oppure possiamo scrivere: Prodottoda(Modello,Costruttore) indicando la struttura della tabella. Nel modello relazionale un database è una collezione di tabelle.