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

Comentarios sobre el problema de diseño de la base de datos de muchas tablas

Podrías crear otra tabla CommentableEntity (aunque llamarlo algo mejor). Cada una de las filas de sus tablas (Articles , Recipes etc.) tendría una referencia a una fila única en esta tabla. La tabla de entidades podría tener un type campo para indicar el tipo de entidad (para ayudar a la unión inversa).

A continuación, puede tener un Comment tabla que hace referencia a CommentableEntity , de forma genérica.

Entonces, por ejemplo, terminará con las siguientes tablas:

Articles
-----------------
Article_id
CommentableEntity_id (fk, unique)
Content
....

Recipes
-----------------
Recipe_id
CommentableEntity_id (fk, unique)
Content
....

CommentableEntity
-----------------
CommentableEntity_id (pk)
EntityType (e.g. 'Recipe', 'Article')

Comment
-------
Comment_id (pk)
CommentableEntity_id (fk)
User_id (fk)
DateAdded
Comment 
...etc...

Puede agregar el registro CommentableEntity cada vez que agrega un Artículo/Receta, etc. Todo lo que su código de manejo de comentarios debe saber es CommentableEntity_id; no importa qué tipo de cosa sea.