Il livello di progettazione concettuale si conclude dopo aver
realizzato lo schema E-R. A questo punto inizia il livello di progettazione logico, dove verrà utilizzato il modello matematico relazionale. Prima di continuare si consiglia di rivedere le definizioni di relazione e di tabella.
Grazie alle seguenti regole di può ottenere lo schema logico (o
schema delle relazioni) a partire dallo schema E-R:
1. ogni entità dello schema E-R viene trasformata in una relazione
(o tabella);
2. ogni attributo (semplice o composto) di un'entità diventa un
attributo della tabella da essa derivata (eventuali attributi composti vanno scomposti in attributi atomici o elementari);
3. ogni attributo identificatore di un'entità diventa la "chiave
primaria" della tabella da essa derivata (viene indicata con una sottolineatura);
4. per ogni associazione binaria di tipo 1:1 è necessario
aggiungere, ad una delle due tabelle, un nuovo campo, detto "chiave esterna", collegato logicamente alla "chiave primaria" dell'altra tabella; anche gli eventuali attributi dell’associazione dovranno essere importati nella medesima tabella.
5. per ogni associazione binaria di tipo 1:N è necessario
aggiungere, alla tabella che partecipa con molteplicità N, un nuovo attributo, detto "chiave esterna", collegato logicamente alla "chiave primaria" dell'altra tabella (a molteplicità 1); anche gli eventuali attributi dell’associazione dovranno essere importati nella medesima tabella.
6. per ogni associazione binaria N:N tra due entità, è necessario
creare una nuova tabella (solitamente nominata come l’associazione) costituita dalle “chiavi primarie” delle due entità collegate; anche gli eventuali attributi dell’associazione dovranno essere importati nella medesima tabella. La chiave primaria della nuova tabella dovrà essere scelta tra le seguenti opzioni (in base al contesto): a. unione delle due chiavi importate b. unione delle due chiavi importate e di qualche attributo dell’associazione c. inserimento di un campo “contatore”
7. Per le gerarchia di entità è necessario collassare i figli sull’entità
padre, creando quindi un’unica tabella con: a. tutti gli attributi del padre (compresa la chiave primaria); b. tutti gli attributi dei figli c. un campo “Tipo” che servirà per distinguere (seconda un’apposita codifica) il tipo di “figlio” della gerarchia.
9. L’ attributo multiplo (es. Telefono (n) ) va convertito come se
fosse una associazione N:N tra l’entità di partenza e l’attributo stesso. In questo caso è sufficiente creare una nuova tabella contenente la chiave primaria dell’entità ed il nome dell’attributo (entrambi i campi costituiranno la chiave primaria di questa nuova tabella). ES: PERSONA (CF, Cognome, Nome, DataNascita) TELEFONI (CF, NUM_TELEFONO)
10. Le self-relation vengono trattate come le altre associazioni.
L’unico accorgimento è quello di utilizzare due diversi nomi per la chiave primaria e quella importata (che a livello formale corrispondono). ES. PERSONA (CF, Cognome, Nome) AMICO_DI (CF, CF2)
Nella tabella AMICO_DI il campo
CF2 punterà al Codice Fiscale di ogni amico della persona identificata da CF. Esercizio La nonna vuole creare un database che contenga i suoi libri di ricette (libro dei primi, dei secondi, dei dolci, dei gelati, ecc) Ogni ricetta ha un nome, un metodo di preparazione, a quante persone è riferita; Per ogni ricetta sono indicati gli ingredienti e la quantità necessaria. In sintesi potremmo disegnare il seguente schema E/R.
Schema delle relazioni (livello logico)
LIBRO (IDLIBRO, TITOLO)
RICETTA (IDRICETTA, TITOLO, QTA_PERSONE, PREPARAZIONE, IDLIBRO) INGREDIENTE (IDINGREDIENTE, DESCRIZIONE, UNITA) COMPOSIZIONE (IDINGREDIENTE, IDRICETTA, QUANTITA) (notare che le due chiavi esterne formano una chiave primaria composta) (solitamente le chiavi esterne vengono tratteggiate) Esempio grafico delle tabelle (relazioni) così identificate