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つの意味を1列に並べた構造をどう作るかということです。