Mysql 我应该使用一张桌子还是多张桌子

Mysql 我应该使用一张桌子还是多张桌子,mysql,database-design,Mysql,Database Design,我有两个表页面(id,name)和帖子(id,msg) 在页面和帖子中都有id字段,该字段自动递增,从1开始 当用户喜欢post或page时,我想创建like表,详细信息应该存储在like表中 我的问题是我应该为post和页面使用不同的like表吗 1) page_like(page_id,user_id);// (page_id,user_id) composite PK 2) post_like(post_id,user_id);//(post_id,user_id) compos

我有两个表
页面(id,name)
帖子(id,msg)
页面
帖子中
都有
id
字段,该字段自动递增,从1开始

当用户喜欢
post
page
时,我想创建like表,详细信息应该存储在like表中

我的问题是我应该为
post
页面使用不同的like表吗

  1) page_like(page_id,user_id);// (page_id,user_id) composite PK
   2) post_like(post_id,user_id);//(post_id,user_id) composite PK
或者我应该使用

 like(element_id,element_type,liked_by) //(element_id,element_type,liked_by) composite PK
我应该使用哪种方法?为什么?
有更好的方法吗?

如果您有两个不同的键,可以分别为page和post自动递增,我肯定会使用两个单独的表。这对你们两个来说没有意义,一行有一篇文章,一页有两组不同的键。

在给出的选项中,你们肯定应该选择第一个。另一种方法是防止您声明外键,并且在应用程序代码中强制引用完整性是非常困难的


这就是说,还有第三个选项:“继承”来自一个普通“超级表”的
post
page
,然后直接喜欢超级表。这可能不适用于两个子类型,但如果您预期模型将来会增长,那么这将非常有用。我已经描述了基本思想。

第二种表格类型有什么问题