Mysql
 sql >> Base de données >  >> RDS >> Mysql

Base de données SQL avec un nombre variable de colonnes

Modèle de base de données

Vous avez essentiellement besoin d'un many-to-many relation entre les auteurs et les publications, puisqu'un auteur peut écrire plusieurs publications et qu'une publication peut être écrite par plusieurs auteurs.

Cela nécessite que vous ayez 3 tables.

  • Auteur - informations générales sur chaque auteur (sans publications_id)
  • Publication - informations générales sur chaque publication (sans author_id)
  • AuteurPublication - colonnes author_id et publication_id qui sont des références aux tables Author et Publication .

De cette façon, vous ne liez pas un auteur spécifique à une publication, mais vous pouvez en avoir plusieurs, et la même chose dans l'autre sens.

Remarques supplémentaires

Si vous souhaitez distinguer le rôle des auteurs dans une publication particulière, vous pouvez également ajouter une colonne comme id_role ce serait une référence à une table de dictionnaire indiquant tous les rôles possibles pour un auteur. De cette façon, vous pourriez différer entre les principaux auteurs, co-auteurs, etc. De cette façon, vous pourriez également stocker des informations sur les personnes qui s'occupent de la traduction du livre, mais peut-être devriez-vous alors changer le nom de Author à quelque chose de moins spécifique.

Ordre d'apparition

Vous pouvez assurer un bon classement de vos auteurs en ajoutant une colonne dans AuthorPublication que vous incrémenterez séparément pour chaque Publication . De cette façon, vous pourrez conserver la commande selon vos besoins.