sql >> Base de Datos >  >> RDS >> Mysql

Base de datos SQL con número variable de columnas

Modelo de base de datos

Básicamente necesitas un many-to-many relación entre Autores y Publicaciones, ya que un autor puede escribir muchas publicaciones, y una publicación puede ser escrita por más de un autor.

Esto requiere que tengas 3 mesas.

  • Autor:información general sobre cada autor (sin id_publicaciones)
  • Publicación:información general sobre cada publicación (sin author_id)
  • AutorPublicación - columnas author_id y publication_id que son referencias a tablas Author y Publication .

De esta forma no estás vinculando a un autor específico a una publicación, pero puedes tener más de ellos, y lo mismo al revés.

Notas adicionales

Si desea distinguir el rol de los autores en una publicación en particular, también puede agregar alguna columna como id_role eso sería una referencia a una tabla de diccionario que indica todos los roles posibles para un autor. De esta manera, podría diferenciar entre autores principales, coautores, etc. De esta manera, también podría almacenar información sobre las personas que manejan la traducción del libro, pero tal vez debería cambiar el nombre de Author a algo menos específico.

Orden de aparición

Puede garantizar un orden adecuado de sus autores agregando una columna en AuthorPublication que incrementaría por separado para cada Publication . De esta forma, podrá conservar el orden según lo necesite.