PDA

View Full Version : [SQL] Passaggio da Schema E-R a schema relazionale


Razos
16-12-2011, 20:24
Salve a tutti .
Come da titolo vorrei se possibile una spiegazione su questo passaggio .
Ho guardato siti universitari e non , ma c'è una cosa che non mi torna.
Nel passaggio allo schema relazionale si traformano in parole le entità con i loro identificatori ed i loro attributi. del tipo
Dipendente(ID,nome, cognome,stipendio)

Dipendentemente dalla cardinalità di ogni relazione (uno-a-molti , molti-a-molti , etc) può capitare che l'identificatore di un'entità diventi anche l'identificatore di un'altra , e fino a qui ci siamo.
Ma quando ci troviamo di fronte ad una situazione del genere :
Entita1 -- relazione -- Entita2 -- relazione -- Entità3
senza contare la cardinalità delle relazioni , l'Entita2 si troverà in condizioni diverse di trascrizione nel modello relazionale se relazionata con l'Entita1 oppure l'Entita3 .
A questo punto quando si arriva alla trasformazione nel modello relazionale , l'Entita2 andrà scritta sdoppiata (cioè scritta due volte) oppure una volta sola , mettendo tutti insieme gli (eventuali) indentificatori delle altre due entità (Entita1 & Entita3) ?

starfred
17-12-2011, 10:18
Ciao, tu devi semplicemente creare le tabelle con le chiavi.
Quindi un esempio di decomposizione può essere:

Entita1 (Chiave1,altro)
Entita2(Chiave2, altro)
Entita3(Chiave3,altro)
relazione(Chiave1,Chiave2,Chiave3)

Ovviamente nessuno mi vieta di mettere Chiave1 in Entità2 per esempio:

Entita1 (Chiave1,altro)
Entita2(Chiave2, Chiave1, altro)
Entita3(Chiave3,altro)
relazione(Chiave2,Chiave3)

La cosa da tener presente è che, in questo esempio, bastano solo 2 chiavi per identificare una tupla in una Entità.

Ovviamente quando parlo di "Chiave" posso intendere anche più campi.
Spero di non averti confuso di più le idee. Se sei alle prime armi ti consiglio di seguire il primo schema di decomposizione.
Ciao.

Razos
21-12-2011, 20:36
No , non sono alle prime armi , comunque ho risolto grazie ad una guida fatta molto bene su Visual Basic Simple..
Il tuo schema però non è molto chiaro : il passaggio da schema E-R a schema relazionale non è sempre lo stesso e dipende dalla cardinalità delle relazioni (molti a molti - uno a molti - etc) , mentre tu mi hai consigliato di tradurre qualunque schema E-R nell'esempio da te proposto.
Quindi per esempio una relazione molti a molti prevede che venga definita una tabella anche per la relazione , mentre una relazione 1-1 prevede (biunivocamente) che una delle tue entità acquisisca l'identificatore dell'altra.

starfred
21-12-2011, 21:06
Il mio era un esempio in generale. In ogni caso anche nelle relazioni 1.1 non è obbligatorio effettuare l'accorpamento, il database funziona lo stesso in modo corretto, tuttavia un buon progettista deve conoscere tali regole di accorpamento che nella maggior parte dei casi vanno effettuate.