我试图在 RDBMS 中表示以下递归关系:
作为一个基本示例,我们有以下字段:
1 - computer science
2 - computer engineering
3 - electrical engineering
4 - mathematics
我想将相似的领域相互联系起来。我可以使用第二个表将字段相互关联。理想情况下,我可以想象它看起来像这样:
+----------+----------+
| 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),我可以看到两个潜在问题:
- 元组可以重复,尽管是无序的
- 如果哪个字段在哪个列中不重要,它可能会使查询不必要地复杂化(正如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)
+----------+----------+
我应该如何处理非层次递归关系?
我是否应该继续故意复制每个元组,就像在第二个表中一样?还是我忽略了另一种方法?