Conversione del Modello ER in Modello Relazionale

di Andrea Aulicino

Il Modello Relazionale che rappresenta il mini-modo di interesse può essere ricavato direttamente dal Modello ER, attraverso una sequenza di operazioni di conversioni. Ecco i passi fondamentali da seguire.

1. Creare una relazione per ciascuna entità del Modello ER, utilizzando per i campi gli stessi attributi semplici dell'entità di provenienza. La chiave primaria della relazione sarà scelta tra le chiavi candidate dell'entità.

conv1.gif

2. Inserire nelle relazioni gli attributi composti delle entità, considerando però solo gli attributi semplici componenti. Ad esempio, se nel Modello ER avevamo un attributo composto "indirizzo" dell'entità "studente" costituito a sua volta da "via", "numero", "città", ecc. allora nella relazione dovremo considerare tali sotto-attributi come tanti campi indipendenti.

conv2.gif

3. Per ogni attributo multivalore A bisogna creare una nuova relazione R che include A e, come chiave esterna, la chiave primaria della entità a cui A era inizialmente connesso. La chiave primaria della nuova relazione R sarà la combinazione della chiave esterna e di A.

conv3.gif

4. Per ogni entità debole bisogna creare una relazione R ereditandone gli attributi. Bisogna inoltre includere, come chiave esterna, la chiave primaria dell'entità "proprietaria". La chiave primaria di R sarà l'insieme della chiave esterna più la chiave parziale.

conv4.gif

5. Le associazione con cardinalità 1:1 tra due entità A e B possono essere convertite seguendo due approcci. Per prima cosa bisogna individuare il grado di partecipazione delle 2 entità all'associazione. Se tutte (o quasi) le istanze delle due entità sono coinvolte dall'associazione (partecipazione totale) allora conviene fondere A e B in un'unica relazione.

Esempio: ogni studente ha una sola carriera e ogni carriera appartiene ad un solo studente. Vi è quindi partecipazione totale per entrambe le entità all'associazione che pertanto conviene fondere.

conv5.gif

Al contrario, se solo l'entità A è in partecipazione totale con B, allora devono essere create 2 relazioni A e B ed in A si inserisce la chiave primaria di B come chiave esterna ed eventuali attributi dell'associazione.

Esempio: supponendo che solo alcuni dipendenti hanno a disposizione un'auto aziendale:

conv6.gif

6. Per ogni associazione 1:N tra le entità A e B si considera la relazione B (sul lato N) e si include in essa, come chiave esterna, la chiave primaria di A oltre ad eventuali attributi dell'associazione.

Come esempio vediamo il Modello Relazionale della rubrica telefonica.

conv7.gif

7. Ogni associazione di tipo M:N tra le entità A e B va sostituita con una nuova relazione R. In essa andranno incluse le chiavi esterne delle entità A e B la cui combinazione formerà la chiave primaria di R. R eredita dall'associazione anche i suoi eventuali attributi.

Come esempio applichiamo questa conversione al caso dei film e delle persone visto nelle lezioni precedenti.

conv8.gif

Così com'è stata definita la relazione cast non sarà possibile fare in modo che una stessa persona partecipi due volte per lo stesso film in ruoli diversi. Per far sì che questo possa avvenire la chiave primaria della relazione cast, oltre agli attributi nome film, nome persona e cognome persona, dovrà comprendere anche l'attributo ruolo.

4 commenti

1 Alessandro Alessandro giovedì 23 aprile 2009, ore 17:20
ottimo per chi conosce gia lo schema ER... sintetizzata la trasduzione dello schema ER nelle relative tabelle del DB senza perdersi in concetti.
è possibile estrarre il forumalrio delle 3 relazioni 1-1 1-N N-N
2 Giorgio Giorgio domenica 27 marzo 2011, ore 12:31
scusa ma se ho due specializzazioni per una entità (padre con 2 figlie intendo) come faccio per le chiavi primarie e secondarie? grazie ciao!
3 Gianni Tomasicchio Gianni Tomasicchio domenica 27 marzo 2011, ore 13:32
Ci sono 3 modi per realizzare il concetto di specializzazione o ereditarietà nel modello relazionale.

1) Ciascuna entità figlia diventa una tabella indipendente con tutti gli attributi che la caratterizzano, sia quelli comuni alle altre entità figlie, sia quelli particolari. Anche l'entità padre, se non è astratta, diventa una tabella. Ogni istanza di ciascuna entità è completamente memorizzata in una sola tabella. In pratica questa soluzione non trasferisce la relazione di specializzazione nel modello relazionale.

2) Si crea una tabella per l'entità padre, che contiene tutti gli attributi comuni alle entità figlie. Ciascuna entità figlia poi avrà una sua tabella che conterrà solo gli attributi particolari di quella entità. Quindi le istanze delle entità figlie sono memorizzate in parte nella tabella padre (gli attributi condivisi) e in parte nella propria tabella (gli attributi particolari)

3) Si crea un unica tabella con tutti gli attributi di tutte le entità figlie. Tutte le entità sono quindi memorizzate in un unica tabella. Si aggiunge un ulteriore attributo per permettere di distinguere le varie tipologie di entità.
4 Giorgio Giorgio domenica 27 marzo 2011, ore 14:55
grazie! sei stato chiarissimo!
Effettua l'accesso o registrati per inserire un commento