Mysql
 sql >> Database >  >> RDS >> Mysql

Database SQL con numero variabile di colonne

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 e publication_id che sono riferimenti alle tabelle Author e Publication .

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.