Progettazione logica
Non esistono DBMS capaci di operare direttamente su schemi concettuali (ovvero, per noi, diagrammi ER). Perciò, è necessario tradurre gli schemi concettuali in schemi logici, comprensibli da parte di un DBMS.
Noi, in particolare, realizzeremo schemi logici basati sul modello relazionale.
Per tradurre uno schema concettuale in uno schema logico relazionale, occorre, in quest’ordine:
- eliminare le gerarchie
- eliminare le identificazioni esterne
- eliminare gli attributi composti
- eliminare gli attributi ripetuti
- tradurre entità e associazioni in schemi di relazioni
Eliminazione delle gerarchie
Per tradurre un diagramma ER in un modello logico relazionale, bisogna anzitutto eliminare le eventuali gerarchie di generalizzazione presenti nel diagramma.
Esistono due metodi di eliminazione principali:
- collasso verso l’alto
- collasso verso il basso
Collasso verso l’alto
Il collasso verso l’alto riunisce tutte le entità figlie nell’entità padre:

selettore è un attributo che specifica se una istanza di E appartiene a una delle sottoentità. Tale attibuto non deve necessariamente chiamarsi ‘selettore’.
Gli attributi obbligatori per le entità figlie divengono opzionali per il padre: si avrà una certa percentuale di valori nulli.
Dopo aver effettuato un collasso verso l’alto, è bene riconsiderare le eventuali cardinalità delle associazioni delle ex-entità figlie, ora associate all’entità padre.
Collasso verso il basso
Il collasso verso il basso elimina l’entità padre trasferendone gli attributi a tutte le entità figlie:

Un’associazione del padre è replicata tante volte quante sono le entità figlie.
Nota bene: se la gerarchia di generalizzazione è parziale, essa non può essere eliminata mediante un collasso verso il basso: dove mettere le istanze dell’entità padre che non appartengono a nessuna delle entità figlie?
Dopo aver effettuato un collasso verso il basso, è bene riconsiderare le eventuali cardinalità delle associazioni dell’ex-entità padre, ora associate alle entità figlie.
Eliminazione delle identificazioni esterne
Una componente di identificazione esterna di una entità E2 da una entità E1 attraverso una associazione R comporta il trasporto della chiave primaria di E1 su E2:

- La chiave trasportata è detta chiave esterna
- In questo modo l’associazione è rappresentata attraverso la chiave
Nota bene: In presenza di più identificazioni in cascata, è necessario iniziare la propagazione dall’entità che non ha identificazioni esterne
Nota bene: Si consiglia di non rimuovere l’associazione dal proprio diagramma ER, nonostante l’immagine qui sopra sembri suggerire il contrario.
Eliminazione degli attributi composti
Il modello relazionale non può contenere attributi composti, ma solamente attributi semplici.
Due possibili soluzioni:
- eliminare l’attributo composto e considerare i suoi componenti come attributi semplici

- eliminare i componenti e considerare l’attributo come semplice

Eliminazione degli attributi ripetuti
Il modello relazionale impone che, se un’entità E ha un attributo A ripetuto, si crei una nuova entità che contenga l’attributo e sia collegata a E:

Traduzione di entità e associazioni in schemi di relazione
Per ottenere uno schema relazionale, una volta completati i passaggi sopra elencati, non resta che tradurre le entità e le associazioni in schemi di relazioni.
Metodo di traduzione standard
Nel metodo di traduzione standard:
- Ogni entità è tradotta con una relazione con gli stessi attributi. La chiave è l’identificatore dell’entità stessa
- Ogni associazione è tradotta con una relazione con gli stessi attributi, cui si aggiungono gli identificatori di tutte le entità che essa collega. La chiave è composta dalle chiavi delle entità collegate

Gli attributi che costituiscono la chiave primaria di uno schema di relazione sono sottolineati.
La traduzione standard è sempre possibile ed è l’unica possibilità per le associazioni molti a molti.
Altri metodi di traduzione: associazione 1 a N
Se l’associazione è di tipo 1 a N (uno a molti), è possibile semplificare la traduzione, rispetto al metodo della traduzione standard. Anziché ottenere tre schemi di relazione, se ne possono ottenere due soltanto, così:
- si traduce ciascuna entità in uno schema di relazione
- all’entità con cardinalità massima pari a 1, si aggungono gli eventuali attributi presenti sull’associazione
- sempre all’entità con cardinalità massima pari a 1, si aggiunge un identificatore esterno verso l’altra entità (ovvero, quella con cardinalità massima pari a N)
Notare che l’associazione, diversamente dalla traduzione standard, in quest’altro caso ‘sparisce’ dal progetto logico: essa non è stata trasformata in uno schema di relazione.

Diventa:
