2011-09-17 36 views
0

我有表Person。一个人可以有同一张桌子上的许多兄弟姐妹。我很难理解如何做这个设计,因为如果我做递归关系,我只能添加一个兄弟。带递归的数据库设计

表:PersonId,姓氏,名字。

请帮忙!

回答

3

因为兄弟姐妹关系是多对多的,所以您需要第二张名为SIBLING的表,其中有两列,即关系中每个兄弟姐妹的人名。

PERSON 
+----------+--------------+--------------+ 
| PersonId | Last Name | First Name | 
+----------+--------------+--------------+ 
| 1  | Abc   | Def   | 
| 2  | Ghi   | Def   | 
| 3  | Jkl   | Stu   | 
| 4  | Mno   | Def   | 
| 5  | Pqr   | vwx   | 
+----------+--------------+--------------+ 

SIBLING 
+-----+-----+ 
| Id1 | Id2 | 
+-----+-----+ 
| 1 | 2 | 
| 1 | 4 | 
| 2 | 4 | 
| 3 | 5 | 
+-----+-----+ 

这里SIBLING有时被称为“连接表”或“关联表”。它的PK是整个表(一个复合PK),每一列都是一个FK到PERSON.PersonId。

+0

好的。我知道了。那关系呢?这是两个关系吗?来自同一把钥匙?第二张桌子是否会在两列中拼出PK? – user194076

+0

回答更新显示SIBLING表。 –