我想代表在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)
+----------+----------+
我應該如何接近非分層遞歸關係?
我應該繼續並有意地複製每個元組,像第二個表中一樣?還是有另一種方法,我是超視?
我可能會困惑(仍然),但我認爲我需要多對多,而你的例子只允許文學有一個類似的領域。 *(我更新了我的問題中的例子)* – 2013-02-14 01:02:36
@DavidKaczynski - 我非常肯定,使用這種方法,您可以在這方面建立N-N關係,但是在類似組中有1-N關係。請參閱上面的編輯。 – sgeddes 2013-02-14 01:16:11
感謝您的澄清。請允許我問這個問題:如果我想獲得所有類似於閱讀的字段,該查詢將如何查看?例如,'從SimilarField中選擇SimilarId,FieldId,其中SimilarId = 3或FieldId = 3 ... ...但是,接下來如何將生成的[(SimilarId,FieldId)]元組轉換爲一組單獨的Ids以查詢原始Field表? – 2013-02-14 01:19:47