Progettazione E-R: esercizio

di il
2 risposte

Progettazione E-R: esercizio

Ciao a tutti ragazzi, sono nuovo del forum . Spero che possiate aiutarmi.
Ho un'esercitazione lasciata dal nostro professore, che non riesco a implementare.
L'esercizio è il seguente:
Il premio Strega è un prestigioso premio letterario che viene assegnato ogni anno a un libro di narrativa in prosa di autore italiano, pubblicato tra il 1 maggio dell'anno precedente e il 30 aprile dell'anno in corso. Il premio viene assegnato da un giuria di oltre 400 persone dette “Amici della Domenica”. Per ciascuna edizione si memorizzano l’anno (che la identifica), l’eventuale premio in denaro previsto e il vincitore. Ogni anno partecipano alla gara diversi libri dei quali si registrano il titolo, gli autori (con relativi dati anagrafici e una breve biografia), la data di pubblicazione, la casa editrice (ragioneSociale e sedeLegale) e il genere. Ogni libro, per poter partecipare alla gara, deve essere presentato da due “Amici della Domenica”. Le presentazioni di libri, per le quali si memorizza anche un breve giudizio, devono pervenire entro un termine fissato di anno in anno tra il 1 e il 15 di maggio. Per ogni edizione del premio bisognerà dunque memorizzare anche tale termine. Ogni “amico” può presentare al massimo un libro per ogni edizione. A un’edizione non possono partecipare più libri della stessa casa editrice. I libri presentati vengono poi sottoposti a una votazione e i 5 libri che ottengono il maggior numero di voti passano alla fase finale che consiste in una seconda votazione nella quale gli “Amici” scelgono il vincitore tra i 5 libri finalisti. Le due votazioni si svolgono in date diverse e per ciascuna è necessario registrare il luogo in cui si svolge (città e indirizzo), l’elenco di partecipanti e il numero totale di voti ottenuti da ciascun libro. Nel caso che nella seconda votazione risulti una parità di voti per il 1° posto, il premio è assegnato ex aequo.
Non capisco come dovrei implementare alcune cose, però andiamo passo per passo. Come potrei implementare questa frase:
Ogni libro, per poter partecipare alla gara, deve essere presentato da due “Amici della Domenica”.
Avevo pensato a qualcosa del genere:
Immagine.png
Immagine.png

Però entrambe mi sembrano scorrette. Mi potreste dare qualche chiarimento? Magari dicendomi come avreste proceduto voi?
Grazie in anticipo e di nuovo ciao a tutti .

2 Risposte

  • Re: Progettazione E-R: esercizio

    Ogni libro, per poter partecipare alla gara, deve essere presentato da due “Amici della Domenica”.
    Ogni “amico” può presentare al massimo un libro per ogni edizione.
    A voler interpretare queste due frasi io penserei a una tabella Presentazioni con i seguenti campi:
    IDPresentazione (chiave primaria)
    AnnoStrega
    IDLibro
    IDAmico
    con un indice multicampo univoco sulla coppia AnnoStrega-IDAmico.
    L'esercizio proposto presenta alcuni lati oscuri perchè non sai se il database ha uno scopo finalizzato solo ed esclusivamente al testo in senso stretto, quindi chiuso in un database PremioStrega e basta, oppure può/deve lasciare spazio a tabelle che devono essere intese con i loro campi classici. Faccio un esempio: la tabella PremiStrega potrebbe avere questi campi:
    AnnoStrega (possiamo sfruttare questo come chiave primaria)
    DataTerminePresentazione
    Premio

    Libri
    IDLibro (contatore, chiave primaria)
    AnnoStrega
    Titolo
    DataPubblicazione
    IDEditore
    Genere

    Relazione PremiStrega.AnnoStrega uno-a-molti con Libri.AnnoStrega

    Quest'ultimo campo ha un senso soltanto all'interno del contesto "esercizio proposto", ma, in linea generale, non mi sembra che sia un campo strettamente legato al concetto di Libro.

    La tabella Presentazioni appare doverosa perchè per ogni Libro occorrono "molti" Amici, ma il campo AnnoStrega non si capisce se va legato uno-a-molti con Presentazioni (a causa della richiesta univocità AnnoStrega-IDAmico) oppure con Libri (come mi viene più spontaneo di fare).

    A me non è chiaro se i vincoli:
    - Non più di uno stesso Editore al AnnoStrega
    - Un Amico non può presentare più di un libro
    sono da considerarsi vincoli da imporre con Indice Multicampo Univoco in qualche tabella, oppure va valutato con qualche query che segnala eventuali difetti.

    Non sono d'accordo a mettere il campo Vincitore in PremiStrega perchè può capitare l'evento ex-aequo. Vincitore/i deve essere il frutto di una query.
  • Re: Progettazione E-R: esercizio

    Io l'ho pensata così:
    http://www.divshare.com/download/25183601-59
    Ho preferito dividere la tabella Libri da LibriStrega in modo che la prima avesse i suoi campi tipici indipendentemente dal PremioStrega. Quindi le ho relazionate uno-a-uno.
    Riguardo Amico1 e Amico2 si poteva pensare a una relazione uno-a-molti, anche perchè nel tempo potrebbero cambiare le regole, ma trattandosi di un esercizio, ho preferito semplificare così (io uso Access e, quando relazioni 2 volte con la stessa tabella, appaiono 2 tabelle...non so con altre applicazioni cosa succede...).
    Il campo Biografia mi sembra giusto che compaia nella tabella Autorità perchè può essere modificato/aggiornato con il passare degli anni.
    Il campo Sessione serve a discriminare se si tratta della 1a o 2a votazione.
    Non ho stabilito univocità per IDEditore per ogni AnnoStrega, ma una opportuna query può provvedere a segnalare eventuali anomalie.
    Idem dicasi per Amico1 e Amico2 che non possono presentare più di un libro per AnnoStrega.
    Ribadisco che opportune query possono stabilire statistiche e calcoli per sapere chi è vincitore/i.
Devi accedere o registrarti per scrivere nel forum
2 risposte