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.