Modello di database
Fondamentalmente hai bisogno di un many-to-many
relazione tra Autori e Pubblicazioni, poiché un autore può scrivere molte pubblicazioni e una pubblicazione può essere scritta da più di un autore.
Ciò richiede che tu abbia 3 tavoli.
- Autore - informazioni generali su ogni autore (senza pubblicazione_id)
- Pubblicazione:informazioni generali su ogni pubblicazione (senza author_id)
- AuthorPublication - colonne
author_id
epublication_id
che sono riferimenti alle tabelleAuthor
ePublication
.
In questo modo non stai vincolando un autore specifico a una pubblicazione, ma puoi averne di più e la stessa cosa viceversa.
Note aggiuntive
Se desideri distinguere il ruolo degli autori in una pubblicazione particolare, puoi anche aggiungere alcune colonne come id_role
sarebbe un riferimento a una tabella del dizionario che indica tutti i ruoli possibili per un autore. In questo modo potresti differire tra gli autori principali, i coautori, ecc. In questo modo potresti anche memorizzare informazioni sulle persone che gestiscono la traduzione del libro, ma forse dovresti cambiare il nome di Author
a qualcosa di meno specifico.
Ordine di apparizione
Puoi garantire un corretto ordinamento dei tuoi autori aggiungendo una colonna in AuthorPublication
che incrementeresti separatamente per ogni Publication
. In questo modo saresti in grado di preservare l'ordine quando ne hai bisogno.