ERD 中不共享任何外键的数据库表之间的关系

relationship between database tables not sharing any foreign key(s) in ERD

考虑以下数据库的示例 tables:

user ( id [PK], user_name, ... )

comment ( id [PK], u_id [FK], ... )

reportedCommentInfo ( id [PK], c_id [FK], reporting_u_id [FK], date, ... )

admin ( id [PK], user_name, ... )

根据此数据库架构,任何用户都可以 post 发表评论,并且可以根据包含辱骂或垃圾邮件的内容举报其他用户的评论 material。管理员可以查看用户报告的所有评论的列表,并可以删除不符合设定标准的评论。

在这种情况下,管理员实际上无权访问任何报告的评论,即他们的 ID 不存在于管理员 table 中,但管理员可以访问和管理报告的评论。因此,在创建 ERD 时,它们将成为 reportedCommentInfo 和 admin table?

之间的关系

即基本上我的问题是,在创建 ERD/data 模型时,我们可以在两个没有任何主键/外键关系的 table 之间创建关系吗?

或两个table只有在它们之间有主键/外键关系时才能相关。

p.s:非常欢迎任何改进数据库模式或 ERD 结构的建议。

如果任何管理员都可以查看任何评论,则无需在他们之间建立关系模型。不要混淆数据建模和系统建模。数据模型只需要对您要记录的事实建模。如果您想跟踪哪些管理员查看了哪些评论,那么您当然可以在它们之间引入一种关系。但是,您不需要关系就可以让管理员用户访问所有评论。相反,您的应用程序代码可以检查登录用户是否是管理员用户,并根据他们的状态显示不同的按钮或内容。

你问是否"two tables can only be related if they have primary key / foreign key relationship among them"。在关系和实体关系的角度来看,我们不关联 tables,我们使用 tables 来关联值集。有些集合代表现实世界的事物(如用户),而另一些则代表标签(如名称)或测量值(如日期)。可以通过为此目的创建 suitable table 来关联任何两组或更多组值。外键约束用于指示一列(一组值)是另一列(一组值)的子集,而不是关联行。有关此主题的更多信息,我推荐 Lex de Haan 和 Toon Koppelaars 合着的 数据库专业人员应用数学 等书。

您似乎对实体关系 models/diagrams 和关系建模有一些根本性的误解。

实体 types/tables 有方框图标,关系 types/tables 有菱形图标。关系中实体的参与是 lines/FKs。您的图表 已经 报告的评论和管理员之间存在 table 关系:reviews。如果您希望行满足 different application relationship/association 那么您要么必须通过查询根据 given/base 关系来表达它,要么必须添加一个新的given/base 关系 & table.

-- REPORTEDCOMMENTID identifies reporting of comment COMMENTID ...
select * from ReportedCommentInfo

--admin ADMINID has name NAME and ...
select * from Admin   

--   REPORTEDCOMMENTID identifies reporting of comment COMMENTID ...
-- AND admin ADMINID has name NAME and ...
select * from ReportedCommentInfo join Admin    

您不需要lines/FKs查询。他们只是 given/base 参与。 (错误陈述 ER 建模调用 participations/FKs "relationships"。)

PS 有 table 和工作。表记录业务的状态。一项工作涉及阅读 and/or 更新一些相关的 table。 ER 图仅显示 tables。您似乎将 ER 图与数据流图混淆了,数据流图是关于人们如何使用 table 来完成工作的。您在架构中拥有的数据的 ER 模型 (schema/diagram) 将具有用户、管理员和评论实体、关于用户和评论的帖子关系以及关于用户和评论的报告关系,这可以被视为报告关联实体。至于变化,包括您的模式,您需要选择一种特定的设计方法并遵循它。另外,您没有给出使用您提供的 ER 图的理由。