【发布时间】:2016-12-17 13:33:29
【问题描述】:
考虑以下数据库表的示例:
用户(id [PK],用户名,...)
评论(id [PK], u_id [FK], ...)
reportedCommentInfo(id [PK]、c_id [FK]、reporting_u_id [FK]、日期、...)
管理员(id [PK],用户名,...)
根据此数据库架构,任何用户都可以发表评论,并可以根据包含辱骂或垃圾邮件的材料报告其他用户 cmets。管理员可以查看用户报告的所有 cmets 列表,并可以删除不符合设定标准的 cmets。
在这种情况下,管理员实际上无权访问任何报告的 cmets,即它们的 ID 不存在于 admin 表中,但管理员可以访问和管理报告的 cmets。那么在创建 ERD 时,它们会是报告评论信息和管理表之间的关系吗?
即基本上我的问题是,在创建 ERD/数据模型时,我们可以在两个没有任何主键/外键关系的表之间创建关系吗?
或者两个表只有在它们之间有主键/外键关系时才能关联。
p.s:我们非常欢迎任何有关改进数据库架构或 ERD 结构方面的建议。
【问题讨论】:
-
用户是在给定场景下只能发表评论的人,而管理员不能发表评论,他/她只能删除那些将被用户报告的评论。跨度>
-
在关系中,您是指参照完整性吗?您可以创建一个复合键来保持引用完整性,但看起来 id 是键控的,不是吗?
-
管理员应该是超级用户。这就是我要改善这种关系的方式。
-
Id 使管理员成为具有凭据的用户。如果您不希望他们成为用户,那么我会通过创建一个用户 ID 和 postid 唯一的复合键来使报告唯一。
-
是的@yardpenalty id(s) 这里是主键,我已经在我的问题中更新了它。我同意你的建议,管理员应该是超级用户。我的错。
标签: mysql database database-design foreign-keys erd