我面临着需要引用不同类型数据的情况。
直截了当它是一个通知系统,用户可以在其关注的网页上收到有关新评论的通知,或回复他们所关注的评论。
我有以下(简化)布局
表:评论
comment_id (int) PRIMARY # primary key
entry_id (int) NULL # id of the webpage (entry), null if reply to existing comment
comment_parentid NULL # parent id of comment if reply, null if root comment
表:粉丝
user_id (int) # the user following
entry_id (int) NULL # webpage the user follows, null if it this entry is only for following replys to a specific comment
comment_parentid NULL # comment the user follows replys to, null if the user if this following entry represents following of the complete post on the webpage (notification for all new comments)
如您所见,只有填充了一个有问题的字段(entry_id,comment_parentid)才有意义。
我在查找下表的主键时也遇到了问题。因为主键不能包含可空字段。
因此我认为我只创建一个名为“parent_id”或“followed_item_id”的字段,并设置一个额外的枚举标志它是什么样的父ID。
所以下表如下:
user_id (int) PRIMARY
followed_item_id (int) PRIMARY
followed_item_type ENUM('entry','comment') PRIMARY
应用相同的建模技术,注释表将如下所示:
comment_id (int) PRIMARY # primary key
comnent_parentid_type ENUM('entry','comment') # parent id type. entry or comment.
comment_parentid (int) # parent id representing comment or entry
但是我记得我曾经遇到过一个问题,我想做类似的事情,但有很好的反对意见。我只是记不起来,找不到帖子。
那么构建这种数据的好方法是什么?
我用两个UNION语句选择的Maby两个表?
答案 0 :(得分:0)
针对“组合”表的论点是,您不能拥有任何参照完整性,并且您必须自己管理任何级联删除。
似乎可以让两个表工作,例如follow_entries和follow_comments。
祝你好运。