考虑我们有一个人A。F是他的父亲,M是他的母亲,B是他的兄弟,S是他的儿子。每个人都可能有许多关系。因此,我们需要创建以下新的关系表:
人们
关系类型
关系
在这种情况下,第一行表示
问题是:如何使结构包含这两个含义在一行中?
人们
+----+------+
| id | name |
+----+------+
| 1 | A |
| 2 | F |
| 3 | M |
| 4 | B |
| 5 | S |
+----+------+
关系类型
+----+---------+
| id | value |
+----+---------+
| 1 | Father |
| 2 | Mother |
| 3 | Brother |
| 4 | Son |
| 5 | Wife |
| 6 | Husband |
+----+---------+
关系
+----+----------+------------+------+
| id | PersonID | RelativeID | Type |
+----+----------+------------+------+
| 1 | 1 | 2 | 1 |
| 2 | 1 | 3 | 2 |
| 3 | 1 | 4 | 3 |
| 4 | 1 | 5 | 4 |
| 5 | 2 | 1 | 4 |
| 6 | 2 | 3 | 5 |
| 7 | 3 | 1 | 4 |
| ...... |
+----+----------+------------+------+
在这种情况下,第一行表示
2是1的父亲
(对于ID),第五行表示1是2的儿子
。在现实世界中,这两行是等价的,但如果我不插入其中一行,则无法使用现有行获取缺失行的含义。问题是:如何使结构包含这两个含义在一行中?
relationship(id, personA, personB, AtoB_type,BtoA_type)
可以有所帮助吗? - amow