好的,这就是我需要建模......
我有两个可以分开存在的物体 - 让我们说男人和女人,既不需要了解另一个。但是一旦他们“结婚”,就可以只相互结婚。
换句话说,我正在尝试创建2个表,1个表对另一个表有一个FK,即NULLABLE。当我尝试通过dmbl将关系设置为1对1时,它不会让我 - 这是有道理的。
终极我想要
但是,当我把男人与女人联系起来......我希望能够做这样的事情
Man.WomanId = 1;
SubmitChanges();
Man.Woman.Name = "Jane"
这甚至可能吗?如果我做一对多 - 我怎么能这样做?在业务层?创建一个部分类并覆盖东西?
希望这是有道理的:P
答案 0 :(得分:1)
您必须制作多对多链接表。
根据您的型号,这可以是一个简单的表格:
(man, woman)
在两个字段上都有唯一约束,或者是一个更复杂的表
(id, man, woman, effective)
在man
和woman
上添加了部分唯一索引,附加条款为WHERE effective = 1
(这仅适用于SQL Server 2008
)
Effective = 1
意味着婚姻现在有效。任何人都可以拥有任意深度的关系历史,但可以同时与另外一个异性结婚者结婚。
后一张表可以跟踪离婚甚至再婚。
答案 1 :(得分:0)
你可以搞乱你的数据库结构吗?如果您可以像这样构建它,这似乎更容易做到:
Person
------
PersonId
Name
Gender
RelationShip
------------
MalePersonId - Unique
FemalePersonId - Unique