Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Comentários sobre o problema de design de banco de dados de muitas tabelas


Você pode criar outra tabela CommentableEntity (embora chamá-lo de algo melhor). Cada uma das linhas em suas tabelas (Articles , Recipes etc.) teria uma referência a uma linha exclusiva nesta tabela. A tabela de entidades pode ter um type campo para indicar o tipo de entidade (para auxiliar a junção reversa).

Você pode então ter um Comment tabela que faz referência a CommentableEntity , de forma genérica.

Então, por exemplo, você terminará com as seguintes tabelas:
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...

Você pode adicionar o registro CommentableEntity toda vez que adicionar um Artigo/Receita, etc. Todo o seu código de tratamento de comentários precisa saber o CommentableEntity_id - não importa que tipo de coisa seja.