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)
Scarica

Slide: Database > Progettazione Logica