1
3
我不确定是否有更好的方法来配置您的表。我认为你拥有它们的方式是恰当的,并且我会实施它。 因为你的关系表 可以 表示单向关系,我建议这样对待它们。换句话说,对于每个关系,我将添加两行。如果Alice与Bob合作,表格应如下:
原因是,在许多类似ActiveRecord(Rails)的系统中,多对多表对象不够智能,无法同时查询Person_ID和其他_Person_ID。通过保留两行,ActiveRecord类对象将正常工作。 您应该做的是在代码级别加强数据的完整性。每次在两个用户之间建立关系时,都应该插入两个记录。当关系被破坏时,两个记录都应该被删除。不应允许用户与其建立关系。 |
2
2
我看不到使用简单的关系概念。您必须添加“业务”代码来强制您的人际关系。
|
3
2
没有更好的主意。关系数据库不能强制执行您的请求,因此您必须编写一个特殊的查询来检索数据,并编写一个触发器来强制执行约束。 为了获得@person的相关人员,我会选择:
|
4
2
你会发现这篇文章很有用: http://discuss.joelonsoftware.com/default.asp?design.4.361252.31 正如@user所发布的那样,您通常最好为每个双向关系创建两个记录(在示例中为alice to bob和bob to alice)。它使查询变得多 更简单,更准确地反映了关系。如果你确实有真正的单向关系,这是唯一的飞行方式。 |
Hayreddin Tüzel · 预约系统数据库建模[关闭] 6 年前 |
alabaster · 逻辑数据模型-如何表示可选FK? 7 年前 |
Laurent · 具有领域的Nosql数据库结构 7 年前 |
romss182 · ActiveRecord:地点和路线有哪些关联? 7 年前 |
Niklas B · 云数据存储避免在非常简单的表上爆炸索引 8 年前 |
sçuçu · SQL JOIN查询中的重复条目 8 年前 |