2

我有两个表,它们之间存在一对一的关系:

Person
 - Id
 - HouseFk

House
 - Id

Person 有一个 House 的外键。请注意,HouseFk 也可以为 NULL。在 UML 中表示这一点的正确方法是什么?我可以想出两种表示法的变化:

1比0..1:

      1     0..1    
Person----------House

0..1 对 1:

      0..1     1    
Person----------House

它是哪种方式,为什么?我真的很困惑,因为我听说一对多关系的键位置颠倒了,这意味着 B 指的是 A,从中可以一对一地推断出来(尽管在我的情况下,这是一对零或一的情况,A 指的是 B,因此 0..1 在 B 侧(第一个)?还是A面(第二)?

谢谢!

4

1 回答 1

5

你们关系的规则是什么?你需要先定义它。人“拥有”房子?人“住在”房子里?让我们暂时假设它是“拥有”的。然后你有几个选择:

选项 1:无选择性(强制性 1:1):

- Each Person must own exactly one House
- Each House must be owned by exactly one Person

这将表示

       1           1
Person ------------- House

选项 2a:可选一种方式:

 - Each Person may own at most one House
 - A Person need not own any Houses
 - Each House must be owned by exactly one Person

这将表示

       1        0..1
Person ------------- House

选项 2b:可选的另一种方式:

 - Each Person must own exactly one House
 - Each House may be owned by at most one Person
 - A House need not be owned by any Person

这将表示

       0..1        1
Person ------------- House

选项 3:双向可选:

 - Each Person may own at most one House
 - A Person need not own any Houses
 - Each House may be owned by at most one Person
 - A House need not be owned by any Person

这将表示

       0..1     0..1
Person ------------- House

编辑(*)

您的数据库模式不是上述的。它说:

 - Each Person may own at most one House
 - A Person need not own any Houses
 - Each House may be owned by many People
 - A House need not be owned by any Person

不知道这是否是你想要的......?[如果你不明白为什么大喊]。

hth。

*感谢 ypercube 在下面的评论中指出更正。

于 2012-04-17T21:12:23.450 回答