Esercizio E-R progettazione concettuale

fk16
Ragazzi devo progettare il seguente modello:
Si vuole rappresentare la base di dati per la “gestione delle gare di Coppa del Mondo di Sci” secondo le seguenti specifiche:
Gli atleti sono individuati da un numero di tessera di FIS (Federazione Italiana Sci) e hanno come attributi principali: cognome, nome, luogo e data di nascita, nazionalità e sesso. Le gare hanno un luogo, una data, un nome della pista, un tipo (SlalomFemminile, SlalomMaschile, GiganteFemminile,….LiberaMaschile). In una certa data, non si possono svolgere due gare dello stesso tipo; in un certo luogo, non si possono svolgere due gare dello stesso tipo.
Gli atleti sono raggruppati in squadre nazionali, rispettivamente maschili e femminili, e ogni squadra ha un allenatore, che è individuato con numero di tessera FIS e ha come attributi principali: cognome, nome, luogo e data di nascita e nazionalità. Un allenatore allena un’unica squadra.
Ogni gara ha un tracciatore, che è un allenatore; per le gare in due manche il tracciatore è diverso per ogni manche.
Per ogni partecipazione di un atleta ad una gara si registra la posizione di arrivo ed il tempo finale; per le gare in due manche si registra anche il tempo di prima manche.

Si disegni il modello E-R con tutti i suoi attributi, le chiavi, e le cardinalità per ciascuna relazione introdotta. Del modello E-R si attui la ristrutturazione giustificando le scelte applicate e per ultimo si traduca il modello ristrutturato in un modello relazione dove devono essere specificati i vincoli interrelazionali e intrarelazionali.

Le parole chiavi da me trovate sono:
-Atleti
-Gare
-Allenatore
-Squadre
Il modello che ho progettato sin ora è il seguente:

Non capisco come implementare le seguenti frasi:
1)In una certa data, non si possono svolgere due gare dello stesso tipo; in un certo luogo, non si possono svolgere due gare dello stesso tipo.
2)per le gare in due manche il tracciatore è diverso per ogni manche. Vuol dire che devo fare una generalizzazione di gare?
Grazie a tutti per le risposte!

Risposte
Luc@s
Gare - Possesso - Allenatore?

fk16
Nel senso che ogni gara ha un tracciatore, che è un allenatore. E' sbagliato?

Luc@s
Mi sfuggiva questo nesso, per quello chiedevo :)

fk16
:smt023 mentre per le domande che ho fatto io, puoi darmi un aiutino? Un suggerimento? In questo caso per esempio devo generalizzare gare in prima e seconda manche?

Luc@s
Io di solito penso al sostantivo e alle sue proprietà.
Esempio la gara in prima o seconda? Allora ha un tipo e quindi la tab ha un type_id per esempio :)

fk16
Ho capito. In genere allora quando è che devo pensare ad una specializzazione? Inoltre come implemento l'altra frase, come faccio a dire che in un certo luogo non si possono fare più di due gare? DEvo usare le cardinalità?

Luc@s
Io userei una chiave primaria con luogo + gara così il db ti impedisce di suo di avere un luogo con più gare.
In teoria non specializzi ma fai questo ragionamento: ho degli oggetti che hanno proprietà e fanno azioni (le chiavi primarie) .
Le rende più specifiche possibili eliminando quello che è comune e lo metto in una tabella "comune".
Non so se mi spiego però

fk16
Quindi per dire che non si possono svolgere gare in stesse date e nello stesso luogo metto come chiave primaria luogo+data+gara. Fin qui ci sono.
Non capisco però la seguente frase :?
"Luc@s":
In teoria non specializzi ma fai questo ragionamento: ho degli oggetti che hanno proprietà e fanno azioni (le chiavi primarie) .
Le rende più specifiche possibili eliminando quello che è comune e lo metto in una tabella "comune".
Non so se mi spiego però

Luc@s
Mi spiego meglio.
Di solito uso questa logica.

1. Definisci le entità con cui lavori basandoti
sull'osservazione del problema che ti è stato dato.
2. Elenchi tutte le proprietà delle entità in questione
3. Togli quelle che non ti interessano
4. "Battezza" le relazioni
5. Definisci le cardinalità ( 0..n, 1..n, n...n)
6. Fai un bel disegno. (carta o UML)

Poi passi alla parte implementativa:

7. Trasformi le proprietà in attributi
8. Trasformi le relazioni in chiavi.

Meglio? :)

fk16
ok ok ora ci sono :). Per i prossimi esercizi procederò nel seguente modo, ti ringrazio dell'aiuto.

Luc@s
Nulla :)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.