RDBMSで次の再帰的な関係を表現しようとしています。
基本的な例として、次のフィールドがあります。
1 - computer science
2 - computer engineering
3 - electrical engineering
4 - mathematics
そして、似たような分野を相互に関連付けたいと思います。2番目のテーブルを使用して、フィールドを相互に関連付けることができます。最適には、次のように想像できます。
+----------+----------+
| field1 | field2 |
+----------+----------+
| 4 | 1 | (math -> comp sci)
| 4 | 2 | (math -> comp eng)
| 4 | 3 | (math -> elect eng)
| 2 | 1 | (comp eng -> comp sci)
| 2 | 3 | (comp eng -> elect eng)
+----------+----------+
ただし、キーが(field1、field2)の場合、2つの潜在的な問題が発生する可能性があります。
- 順序付けされていなくても、タプルが複製される可能性があります
- どのフィールドがどの列にあるかが重要でない場合は、クエリが不必要に複雑になる可能性があります(sgeddesが指摘しているように、両方の列をクエリし、重複を除外します)
例えば:
+----------+----------+
| field1 | field2 |
+----------+----------+
| 1 | 4 | (comp sci -> math)
| 4 | 3 | (math -> elect eng)
| 4 | 2 | (math -> comp eng)
| 3 | 4 | (elect eng -> math)
| 2 | 1 | (comp eng -> comp sci)
| 3 | 2 | (elect eng -> comp eng)
| 1 | 2 | (comp sci -> comp eng)
+----------+----------+
非階層的な再帰的関係にどのようにアプローチする必要がありますか?
2番目の表のように、先に進んで各タプルを意図的に複製する必要がありますか?それとも私が見落としている別の方法はありますか?