PDA

View Full Version : [DB] Modello E-R domanda su relazione


TARAS88
21-06-2013, 12:20
Ragazzi una domanda, sono un neofita e sto studiando basi di dati. Vorrei chiedervi una cosa che non sono riuscito ancora a decifrare. Una relazione tra due entità deve possedere un numero di attributi minimo o non c'è alcun limite? Adesso mi spiego meglio, devo creare un database che gestisca dei concorsi. Devo tener traccia dei concorsi e delle prove scritte relative. I concorsi hanno questi attributi: codice univoco, nome, data pubblicazione e scadenza, requisiti ammissione, Link riferimento. Ogni concorso deve appartenere ad una categoria: B,C oppure D. Per le categorie B e D occorre tener traccia dell'area di interesse mentre per la categoria C solo delle posizioni economiche bandite e del numero di posti bandito. Le prove hanno questi attributi: data prova, ora inizio, durata, concorso di riferimento, sede e commissari. Per ogni prova bisogna tracciare gli elaborati prodotti dai candidati. Gli elaborati hanno questi attributi: codice identificativo univoco, numero risposte sbagliate e corrette, punteggio finale e il candidato a cui l'elaborato appartiene(caratterizzato da cod. fiscale, nome, cognome, data nascita, luogo nascita, titolo studio).
Ho pensato di strutturare il tutto in questa maniera:
le entità previste sono: concorsi, commissari, elaborati, categoria, candidati
ho creato una relazione ternaria "prova" che collega tra loro concorsi, commissari ed elaborati. Una relazione tra concorsi e categoria e una relazione tra elaborati e candidato. Adesso tramite la relazione prova ha un numero di attributi abbastanza rilevante, non saprei però se convertirla in una entità, inoltre non so se dovrei scindere o meno l'entità categoria in quanto dovrei fare una distinzione tra B e D indicando solo la loro area di interesse e la categoria C indicando posizione economica (identificata da codice identificativo e descrizione) e numero di posti bandito per ogni posizione economica. Suggerimenti?

The_ouroboros
21-06-2013, 17:31
Schema logico uml/scannerizzato da foglio?


Inviato con il mio Xperia P

TARAS88
21-06-2013, 17:49
Per ora sto svolgendo solo uno schema concettuale. E 'ho improntato lo schema e-r in questa maniera, che ne pensate:

http://img404.imageshack.us/img404/9527/2hyl.jpg (http://imageshack.us/photo/my-images/404/2hyl.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)

Il modello relazionale l'ho tradotto così:

CONCORSO(ID_conc, Nome, DataPubblicazione, DataScadenza, Requisiti, URL) ID_conc chiave primaria, auto_increment

CATEGORIA(ID_conc, Categoria, AreaInteresse, AreaEconomica, Descrizione, NumeroPosti) utilizza come chiave esterna la chiave ID_conc di concorsi

PROVA(ID_prova, ID_conc, Data, Ora, Durata, Sede) Chiave primaria: ID_prova

COMMISSIONE(ID_conc, ID_Prova, Nome, Cognome, DataNascita) Chiave esterna: ID_prova

ELABORATI(ID_Prova, ID_Elaborato, DomandeNorisposte, RisposteEsatte, Punteggio) Chiave primaria: ID_Elaborato

CANDIDATO(ID_Elaborato, CodiceFiscale, Nome, Cognome, DataNascita, LuogoNascita, TitoloStudio) Chiave esterna: ID_Elaborato

Le relazioni vanno tradotte anche se non hanno attributi?

zanardi84
21-06-2013, 21:36
Una relazione può essere anche priva di attributi e in quel caso la chiave è composta ed esterna prendendo quelle primarie delle entità che vi partecipano. Se iniziano a diventare troppi c'è da chiedersi se non sia il caso di considerarla come un'altra entità o se possono essere distribuiti su quelle che partecipano alla relazione.

Per chiarirti le idee potresti usare il libro Basi di Dati di Paraboschi - Torlone della McGraw Hill che presenta alcuni pattern di design interessanti.

TARAS88
22-06-2013, 11:17
Una relazione può essere anche priva di attributi e in quel caso la chiave è composta ed esterna prendendo quelle primarie delle entità che vi partecipano. Se iniziano a diventare troppi c'è da chiedersi se non sia il caso di considerarla come un'altra entità o se possono essere distribuiti su quelle che partecipano alla relazione.

Per chiarirti le idee potresti usare il libro Basi di Dati di Paraboschi - Torlone della McGraw Hill che presenta alcuni pattern di design interessanti.

Ti ringrazio. Un ulteriore domanda, quando ho dei vincoli come nel caso suddetto, posso o devo creare entità separate? Mi spiego meglio. Io ho una tabella con un elenco di concorsi, ogni singolo concorso appartiene ad una certa categoria, B,C o D. Ora, il problema mi dice che solo per i concorsi di categoria B e D mi interessa sapere l'area di interesse mentre solo per i concorsi di categoria C mi interessa sapere la relativa area economica e il numero di posti disponibili. Ora io creo solo un entità unendo tutti gli attributi(area interesse, area economica, numero posti disponibili) e inserisco valori nulli laddove quei valori non sono previsti oppure creo due entità separate? Inoltre quando implemento le relazioni in mysql queste vanno implementate tramite dei join vero?

zanardi84
23-06-2013, 17:32
Nel diagramma E-R potresti introdurre una gerarchia in cui crei un'entità padre che raccoglie TUTTI GLI ATTRIBUTI COMUNI, e nelle figlie quelli specifici di ogni entità. Tale gerarchia nel tuo mondo da descrivere sarà totale perchè copri tutti i casi ed esclusiva perchè un concorso è ben distinguibile da un altro e non ce ne sono che sono sia l'uno che l'altro, quindi niente sovrapposizioni.

All'atto della traduzione verso il modello relazionale potresti decidere di:

- Accorpare tutti gli attributi nell'entità padre sapendo che avrai campi NULL per quelli non previsti.
- Creare tante entità quante le figlie che hai ottenuto nel diagramma concettuale, sapendo che dovrai ripetere gli attributi comuni per ogni entità sprecando memoria e generando incoerenze nel caso in cui aggiornando un attributo comune non lo facessi per tutte le entità.
- Creare un'entità che descrive la tipologia di attributo (è un artifico in pratica) la cui chiave primaria è l'attributo stesso. La relazione che instauri con l'entità padre prevede le due chiavi.

Dai un occhio a queste videolezioni che seguono il libro che ti ho indicato

http://www.itiserale.it/videolezioni5.html

oppure sul tubo le lezioni di uno degli autori del libro.

andrea746
10-11-2013, 16:57
ciao, sicuramente avrai già anche passato l'esame, comunque se dovesse servire anche ad altri, prova a dare uno sguardo a questo collegamento che parla in modo semplice del modello E-R e anche delle relazioni del modello stesso

http://semplicementedatabase.altervista.org/joomla/modello-entita-relazione/relazioni

dai un occhio anche all'indice del libro, tratta ovviamente di altri costrutti del modello E-R (http://semplicementedatabase.altervista.org/joomla/indice)