UdA Database Progettazione Logica GIORGIO PORCU www.thegiorgio.it © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 1A Database Progettazione Logica Sommario Progettazione Logica Schema Logico Relazionale Tabella, Campi, Record Chiave Esterna Passaggio Concettuale Logico Concettuale Logico (Tabella) Concettuale Logico (1:1) Concettuale Logico (1:N) Concettuale Logico (N:N) © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 • • • • • • • • • 2 Database Progettazione Logica • Consiste nel trasformare il Diagramma E-R, realizzato nella fase di progettazione concettuale, in uno Schema Logico relazionale costituito da Tabelle correlate da Relazioni • Lo Schema Logico utilizza come concetti fondamentali: Tabella Relazione Chiave Primaria (PK, Primary Key) Chiave Esterna (FK, Foreign Key) 3 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Progettazione Logica Database Progettazione Logica Tabella, Campi, Record © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 • Tabella Struttura per memorizzare dati. E’ costituita da: Colonne o Campi Righe o Record ed è identificata da un Nome Persona CodiceFiscale Cognome Nome Città RSSMRO97D11C441R Rossi Mario Roma RSSMRO98Y17C332L Rossi Mario Milano BNCLRA96A61B333C Bianchi Laura Firenze 4 Database Progettazione Logica Tabella come Relazione © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Nel modello Relazionale, la Tabella è detta anche Relazione poiché correla i dati di vari Campi. Utilizzeremo per chiarezza e semplicità il nome Tabella di uso più comune. Relazione Persona tra Campi Tabella CodiceFiscale Cognome Nome Città RSSMRO97D11C441R Rossi Mario Roma RSSMRO98Y17C332L Rossi Mario Milano BNCLRA96A61B333C Bianchi Laura Firenze 5 Database Progettazione Logica Schema Logico Relazionale (1) © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 • Schema grafico che descrive la struttura del database in forma simile alla sua realizzazione pratica su computer. • E’ un elenco di Tabelle, costituite ciascuna una serie di Campi, tra cui: Almeno una Chiave Primaria (PK) Opzionalmente, una o più Chiavi Esterne (FK) • I campi Chiave Esterna consentono di mettere in Relazione logica le tabelle. 6 Database Progettazione Logica Schema Logico Relazionale (2) © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 • In forma elencativa è un elenco di Tabelle, espresse come di seguito: Tabella1(CampoPK, Campo1, Campo2, …, CampoFK) Tabella2(CampoPK, Campo1, Campo2, …, CampoFK) • Per ogni Campo delle Tabelle può essere indicato inoltre il Tipo di dato: CampoPK (PK): Numerico Campo1: Testo Campo2: Data … CampoFK (FK): Numerico 7 Database Progettazione Logica Schema Logico Relazionale (3) © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 • Può essere espresso in modo equivalente in forma grafica come insieme di Tabelle correlate da PK e FK: Tabella1 CampoPK Campo1 Campo2 CampoFK Tabella2 CampoPK PK Campo1 Campo2 CampoFK FK PK FK • Anche in questo caso per ogni Campo delle Tabelle può essere indicato il Tipo di dato 8 Database Progettazione Logica • Campo di una Tabella con valori comuni al campo Chiave Primaria di un’altra Tabella. Si dice anche Foreign Key (in breve: FK). • Se la Tabella A ha una FK con valori comuni alla PK di una Tabella B, le Tabelle A e B sono in relazione logica tra loro. • Il concetto di Chiave Esterna realizza su Schema Logico le Relazioni (Associazioni) espresse nel Diagramma E-R. 9 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Chiave Esterna Database Progettazione Logica Chiave Esterna: Esempio Posto(Numero, Settore, CodFiscale) Spettatore(CodFiscale, Nome, Cognome) il campo CodFiscale è FK della tabella Posto e ha valori comuni alla PK CodFiscale della tabella Spettatore cui è correlato. • Ciò significa che le tabelle Posto e Spettatore sono in relazione tra loro. 10 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 • Nell’esempio seguente: Database Progettazione Logica Chiave Esterna: Significato © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 • Nell’esempio precedente: Posto(Numero, Settore, CodFiscale) Spettatore(CodFiscale, Nome, Cognome) i valori del campo CodFiscale (FK) della tabella Posto devono essere comuni, ovvero già presenti nel campo correlato CodFiscale (PK) della tabella Spettatore. Spettatore Posto Numero Settore CodFiscale 13 D BNCMRO72F24Z111S 54 A RSSNNA68B47E321I CodFiscale Nome Cognome BNCMRO72F24Z111S Mario Bianchi RSSNNA68B47E321I Anna Rossi VRDCRL41E12C707U Carlo Verdi 11 Database Progettazione Logica • Le idee di base da applicare per passare dallo Schema concettuale a quello Logico sono: Ogni Entità diventa una Tabella e i suoi attributi ne diventano i campi (colonne) Le Relazioni tra Entità diventano Relazioni tra Tabelle. Si realizzano copiando la Chiave primaria di una di esse come attributo sull’altra, creando così una Chiave esterna Le Istanze di Entità diventano Record di Tabella 12 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Passaggio Concettuale Logico Database Progettazione Logica • Pur valendo in generale le considerazioni fatte prima, esistono regole di passaggio tra diagramma E-R e schema logico che variano a seconda della cardinalità della relazione: Singola Tabella Relazioni 1:1 Relazioni 1:N Relazioni N:N 13 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Passaggio Concettuale Logico Database Progettazione Logica Concettuale Logico (Tabella) Nome Cognome Cittadino(CodFiscale, Nome, Cognome) Cittadino Cittadino CodFiscale Record LZTKWM61B14Y761R Nome Kawimo Cognome Lezeete Campo 14 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 CodFiscale Database Progettazione Logica Concettuale Logico (1:1) Numero CodFiscale Nome Cognome Settore Posto 1 1 Occupare Spettatore nel modello relazionale diviene una relazione tra due tabelle: Posto(Numero, Settore) Spettatore(CodFiscale, Nome, Cognome) da collegare! da collegare col concetto di chiave esterna 15 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Consideriamo la relazione 1:1 Posto-Spettatore: Database Progettazione Logica Per esprimere la relazione 1:1 copio a scelta una delle chiavi primarie da una tabella nell’altra come chiave esterna: Chiavi esterne Posto(Numero, Settore, CodFiscale) copia Spettatore(CodFiscale, Nome, Cognome) oppure: Posto(Numero, Settore) copia Spettatore(CodFiscale, Nome, Cognome, Numero) 16 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Concettuale Logico (1:1) Database Progettazione Logica In alternativa una relazione 1:1 può diventare un’unica tabella con chiave primaria scelta tra quelle delle entità iniziali e come campi tutti i loro attributi: Numero Nome Settore Posto CodFiscale 1 Occupare 1 Cognome Spettatore Posto(Numero, Settore, CodFiscale, Nome, Cognome) oppure: Spettatore(CodFiscale, Nome, Cognome, Numero, Settore) 17 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Concettuale Logico (1:1) Database Progettazione Logica Concettuale Logico (1:N) IDResidenza Indirizzo Civico CodFiscale Città 1 Residenza N Risiede Nome Cognome Cittadino Nello schema relazionale diviene una relazione tra due tabelle: Residenza(IDresidenza, Indirizzo, Civico, Città) Cittadino(CodFiscale, Nome, Cognome) da collegare! da collegare col concetto di chiave esterna 18 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Consideriamo la relazione 1:N Residenza-Cittadino: Database Progettazione Logica Per esprimere la relazione 1:N copio la chiave primaria dalla tabella di parte 1 nella tabella di parte N come chiave esterna: parte 1 copia su Residenza(IDresidenza, Indirizzo, Civico, Città) parte N Cittadino(CodFiscale, Nome, Cognome, IDResidenza) FK CodFiscale copia IDResidenza 1 Residenza N Risiede IDResidenza Cittadino 19 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Concettuale Logico (1:N) Database Progettazione Logica • Trasforma in Modello relazionale la seguente relazione Persona-Automobile: CodFiscale Nome Cognome Matricola 1 Persona Marca Modello N Possiede Automobile AnnoImm 20 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Esercizio 1 Database Progettazione Logica Persona(CodFiscale, Nome, Cognome) Automobile(Matricola, CodFiscale, Marca, Modello) FK CodFiscale Nome Cognome Matricola 1 Persona Modello N Possiede copia Marca Automobile CodFiscale 21 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Esercizio 1 > Soluzione Database Progettazione Logica Concettuale Logico (N:N) Matricola Nome Cognome Studente Città Denominazione Docente IDCorso N N Frequenta Corso Non è sufficiente stavolta, come nel caso 1:N, trasformarla in una relazione tra due tabelle da collegare con chiave esterna: Studente(Matricola, Nome, Cognome, Città) da collegare! Corso(IDCorso, Denominazione, Docente) 22 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Consideriamo la relazione N:N Studente-Corso: Database Progettazione Logica Per esprimere la relazione N:N creo una nuova tabella intermedia dove copio le due chiavi primarie dalle tabelle iniziali che diventano sia chiavi primarie che chiavi esterne: Studente(Matricola, Nome, Cognome, Città) StudenteCorso(Matricola, IDCorso) PK, FK Nuova Tabella intermedia PK, FK Corso(IDCorso, Denominazione, Docente) Studente StudenteCorso Corso 23 © 2015 Giorgio Porcu - Aggiornamennto 11/04/2015 Concettuale Logico (N:N)