Database Progettazione Logica Giorgio Porcu www.thegiorgio.it
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)
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)
Tabella, Campi, Record ed è identificata da un Nome 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 Milano BNCLRA96A61B333C Bianchi Laura Firenze
Tabella come Relazione 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 tra Campi Persona Tabella CodiceFiscale Cognome Nome Città RSSMRO97D11C441R Rossi Mario Roma RSSMRO98Y17C332L Milano BNCLRA96A61B333C Bianchi Laura Firenze
Schema Logico Relazionale (1) 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.
Schema Logico Relazionale (2) 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
Schema Logico Relazionale (3) Può essere espresso in modo equivalente in forma grafica come insieme di Tabelle correlate da PK e FK: Anche in questo caso per ogni Campo delle Tabelle può essere indicato il Tipo di dato Tabella1 Tabella2 CampoPK Campo1 Campo2 CampoFK CampoPK Campo1 Campo2 CampoFK PK FK PK FK
Chiave Esterna 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.
Chiave Esterna: Esempio Nell’esempio seguente: 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.
Chiave Esterna: Significato 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 CodFiscale Nome Cognome BNCMRO72F24Z111S Mario Bianchi RSSNNA68B47E321I Anna Rossi VRDCRL41E12C707U Carlo Verdi Numero Settore CodFiscale 13 D BNCMRO72F24Z111S 54 A RSSNNA68B47E321I
Passaggio Concettuale Logico 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
Passaggio Concettuale Logico 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
Concettuale Logico (Tabella) CodFiscale Nome Cognome Cittadino(CodFiscale, Nome, Cognome) Cittadino Cittadino CodFiscale Nome Cognome LZTKWM61B14Y761R Kawimo Lezeete Record Campo
Concettuale Logico (1:1) Consideriamo la relazione 1:1 Posto-Spettatore: nel modello relazionale diviene una relazione tra due tabelle: Posto(Numero, Settore) Spettatore(CodFiscale, Nome, Cognome) da collegare col concetto di chiave esterna CodFiscale Nome Cognome Numero Settore Occupare Posto 1 1 Spettatore da collegare!
Concettuale Logico (1:1) Per esprimere la relazione 1:1 copio a scelta una delle chiavi primarie da una tabella nell’altra come chiave esterna: Posto(Numero, Settore, CodFiscale) Spettatore(CodFiscale, Nome, Cognome) oppure: Posto(Numero, Settore) Spettatore(CodFiscale, Nome, Cognome, Numero) Chiavi esterne copia copia
Concettuale Logico (1:1) 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: Posto(Numero, Settore, CodFiscale, Nome, Cognome) oppure: Spettatore(CodFiscale, Nome, Cognome, Numero, Settore) Nome Numero Settore Cognome CodFiscale Posto 1 Occupare 1 Spettatore
Concettuale Logico (1:N) Consideriamo la relazione 1:N Residenza-Cittadino: Nello schema relazionale diviene una relazione tra due tabelle: Residenza(IDresidenza, Indirizzo, Civico, Città) Cittadino(CodFiscale, Nome, Cognome) da collegare col concetto di chiave esterna Nome Cognome IDResidenza Indirizzo Civico CodFiscale Città Risiede 1 N Cittadino Residenza da collegare!
Concettuale Logico (1:N) Per esprimere la relazione 1:N copio la chiave primaria dalla tabella di parte 1 nella tabella di parte N come chiave esterna: Residenza(IDresidenza, Indirizzo, Civico, Città) Cittadino(CodFiscale, Nome, Cognome, IDResidenza) parte 1 copia su parte N FK copia CodFiscale IDResidenza IDResidenza Risiede 1 N Cittadino Residenza
Esercizio 1 Trasforma in Modello relazionale la seguente relazione Persona-Automobile: CodFiscale Nome Cognome Matricola Marca Modello 1 Possiede N Persona Automobile AnnoImm
Esercizio 1 > Soluzione Persona(CodFiscale, Nome, Cognome) Automobile(Matricola, CodFiscale, Marca, Modello) FK CodFiscale Nome Cognome Matricola Marca Modello 1 Possiede N Persona Automobile copia CodFiscale
Concettuale Logico (N:N) Consideriamo la relazione N:N Studente-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à) Corso(IDCorso, Denominazione, Docente) Matricola Nome Cognome Denominazione Docente Città IDCorso Frequenta Studente N N Corso da collegare!
Concettuale Logico (N:N) 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) Corso(IDCorso, Denominazione, Docente) Nuova Tabella intermedia PK, FK PK, FK Studente StudenteCorso Corso