假设我们有 Person 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 |
| ...... |
+----+----------+------------+------+
在这种情况下,第 1 行表示2 is father of 1
(对于 ID),第 5 行表示1 is son of 2
。在现实世界中,这 2 行是等价的,但如果我不插入其中的一行,我无法获得缺失行,这意味着使用现有行。
问题是:如何制作在 1 行中包含这 2 个含义的结构?