MySQL与user表和admins表共享user_id

时间:2012-01-05 17:44:17

标签: mysql sql database-design primary-key

我正在为评论创建一个表格,其中一个字段为user_id。那么普通用户和管理员都可以发表评论,所以我不确定我会怎么做。


用户表的主键为user_id

管理员表格的主键为admin_id


那我该怎么做?

4 个答案:

答案 0 :(得分:2)

为什么不在一个表中拥有所有用户和管理员并且列为“isAdmin” - 如果用户的admin设置为1,则默认为0

您的评论表应该有两列,并且user_id或admin_id已更新,默认为0 - 但这不是一个好方法......

答案 1 :(得分:1)

如果你可以重新设计一个带有isAdmin标志的表(login?),我会这样做。


如果你不能,那么有一个进程导致admin表中的每个条目在user表中创建一个相关的条目。然后,admin表可以有一个user_id字段,将两者关联在一起。

这样每个管理员都有一个用户,所有评论都可以使用该user_id进行。


我强烈建议不要将两个 user_id和admin_id键入注释,其中一个保持为NULL。如果你在其他任何地方遇到类似的需求,它会使查询不整洁,阻碍你执行约束,并将你绑在他凌乱的双键方法上。

答案 2 :(得分:0)

您可以通过几种不同的方式实现这一目标。或者有一个commenter_id链接到user_id或admin_id与关联的user_type标志或者有两个commenter_id字段,一个用于用户,一个用于管理员和关键字,哪个字段有一个值来确定哪个表去哪个相关查询。我敢肯定还有其他更优雅的选择,但这两个选项是快速而肮脏的选择。

答案 3 :(得分:0)

然后你可以把表 - 评论作为

comment_id-int
user_id-fk from users table or admin table
user_type- enum('admin','user')
comment

//和其他必要的字段