PDA

View Full Version : [DB][URGENTE] Questo schema E-R logico è corretto secondo voi?


D4rkAng3l
09-02-2007, 17:12
Mi stò preparando per l'esame di DB che avrò tra qualche giorno, questa è la prima parte di un testo dato tempo fà:

Costruire lo schema E-R logico che rappresenti il databse dnegli anni delle diverse edizioni del Festival di Sanremo. Si vuole tenere memoria, oltre che delle canzioni e dei cantanti che hanno partecipato ad ogni edizione, anche della classifica di ognmi cantante all'interno di una certa edizione (primo classificato, secondo, terzo, etcetc).
Si tenga conto delle seguenti specifiche:

1)Le entità da considerare sono: le edizioni del festiva, i cantanti (per comodità non consideriamo i gruppi), le canzoni
2)Un cantante duò partecipare a più di un'edizione del festival e viceversa
3)Una canzone viene presentata in una sola edizione del festival
4)Ogni edizione del festival ha un costo ed ogni cantante ha una sua città natale

Il mio schema E-R è questo:

http://www.siatec.net/andrea/uni/db1.jpg

Ora che scrivevo le specifiche quì sul forum mi sono accorto che forse manca una relazione nel mio schema di sopra perchè dice che si vuole tenere memoria anche delle canzoni che hanno partecipato ad ogni edizione del festival quindi mi sà che dovrei aggiungere una relazione tra l'entità: EDIZIONE FESTIVA e l'entità CANZONI in modo che associ ogni canzone ad una singola edizione del festival ed ogni edizione del festival ad n canzoni partecipanti.

mmm dite che come schema E-R è sensato o fà proprio schifo? (è il primo che faccio totalmente da solo e tra pochi giorni ho l'esame...sigh devo imparare anche anormalizzarli, a passare allo schema fisico e a fare delle query :cry:
secondo voi è preparabile in 4 giorni?)

Grazie
Andrea

cisc
09-02-2007, 19:57
mhm, io farei partecipa come entità e metterei una relazione a canzone cantata da questa entità, come hai fatto tu un cantante può si partecipare a diverse edizioni, ma sempre con la stessa canzone. Oppure potresti fare in modo che la relazione partecipa coinvolga l'entità canzone al posto di cantante, sostanzialmente invertire nel tuo schema canzone e cantante, e mettere che canzone come cardinalità 1:1. Inoltre, almeno il mio prof, ci bocciava direttamente se mettevamo chiavi alle relazioni..cmq suppongo che il tuo prof usi un formalismo leggermente diverso..

In 4 giorni è difficile..ma non impossibile..dacci dentro=)

D4rkAng3l
09-02-2007, 20:01
mmm grazie, ma sei proprio sicuro sicuro che la partecipazione a più edizioni sarebbe sempre con la stessa canzone? (le entità da usare sono solo quelle date nella specifica, per il formalismo delle relazioni lei ci ha spiegato di mettere così attributi e chiavi...)

Se mettessi come cardinalità 1,n alla relazione cantata da nel verso dall'entità canzone all'entità cantante non è che potrei avere che un cantante ha più canzoni...booo.... :cry:

cisc
09-02-2007, 20:09
mmm grazie, ma sei proprio sicuro sicuro che la partecipazione a più edizioni sarebbe sempre con la stessa canzone? (le entità da usare sono solo quelle date nella specifica, per il formalismo delle relazioni lei ci ha spiegato di mettere così attributi e chiavi...)

Se mettessi come cardinalità 1,n alla relazione cantata da nel verso dall'entità canzone all'entità cantante non è che potrei avere che un cantante ha più canzoni...booo.... :cry:

si, come hai fatto tu, un cantante è associato ad una ed una sola canzone, quindi può partecipare si a più edizioni, ma ha sempre una sola canzone associata. A sto punto ti consiglio di scambiare nel tuo schema canzone e cantante, e mettere la cardinalità da canzone ed edizione 1:1

D4rkAng3l
10-02-2007, 12:19
mmm vediamo se c'ho capito qualcosa, questo è il nuovo schema che ho fatto (spero funzioni...)

http://www.siatec.net/andrea/uni/db2.jpg

NOTE SULLE RELAZIONI:

1) PARTECIPAZIONE: Lega le entità EDIZIONE e CANTANTE: ogni cantante in lista partecipa ad almeno un'edizione del festival (ma volendo può partecipare a tutte le n edizioni che si tengono annualmente). Per ogni edizione del festival partecipa almeno un cantante (numero minimo non specificato nelle specifiche di progettazione) ma possono partecipare anche tutti gli n cantanti (numero massimo non specificato nelle specifiche di progettazione)

2) PRESENTATA: Lega le entitò EDIZIONE e CANZONE: ad ogni edizione viene presentata almeno una canzone ma possono essere presentate anche n canzono, ma una canzone non può essere presentata a più di un'edizione del festival.

3) CANTATA DA: Lega le entità CANZONE e CANTANTE: un cantante produce almeno una canzone ma può produrne anche n (una per ogni edizione). Per ogni canzone c'è almeno un cantante che la canta e al più un cantante che la canta perchè non vogliamo che più musicisti propongano uno stesso brano e perchè nelle specifiche di progettazione abbiamo escluso le band per semplicità.

mmm a me sembra che potrebbe andare così...parere? :eek: :cry:

Grazie
Andrea

cisc
10-02-2007, 12:52
mmm vediamo se c'ho capito qualcosa, questo è il nuovo schema che ho fatto (spero funzioni...)

http://www.siatec.net/andrea/uni/db2.jpg

NOTE SULLE RELAZIONI:

1) PARTECIPAZIONE: Lega le entità EDIZIONE e CANTANTE: ogni cantante in lista partecipa ad almeno un'edizione del festival (ma volendo può partecipare a tutte le n edizioni che si tengono annualmente). Per ogni edizione del festival partecipa almeno un cantante (numero minimo non specificato nelle specifiche di progettazione) ma possono partecipare anche tutti gli n cantanti (numero massimo non specificato nelle specifiche di progettazione)

2) PRESENTATA: Lega le entitò EDIZIONE e CANZONE: ad ogni edizione viene presentata almeno una canzone ma possono essere presentate anche n canzono, ma una canzone non può essere presentata a più di un'edizione del festival.

3) CANTATA DA: Lega le entità CANZONE e CANTANTE: un cantante produce almeno una canzone ma può produrne anche n (una per ogni edizione). Per ogni canzone c'è almeno un cantante che la canta e al più un cantante che la canta perchè non vogliamo che più musicisti propongano uno stesso brano e perchè nelle specifiche di progettazione abbiamo escluso le band per semplicità.

mmm a me sembra che potrebbe andare così...parere? :eek: :cry:

Grazie
Andrea

Le cardinalità di presentata andrebbero invertite (fai attenzione che le cardinalità tra UML ed E-R sono invertite), inoltre partecipazione va eliminata perchèaggiunge informazione ridondante, i cantanti che partecipano ad ogni edizione si possono ricavare guardando i cantanti delle canzoni partecipanti

D4rkAng3l
10-02-2007, 12:59
oki, vi ringrazio...mmm cmq se normalizzassi questo schema ER la relazione ridondante si toglierebbe giusto?

Cmq si è vero-...ho fatto qualche casino con gli attributi e quella cardinalità perchè l'ho scritto veloce veloce...concettualmente rispetto al precedente è corretto? (per quel problema che si presentava prima...qui viene evitato mi pare...giusto?)