有沒有一種很好的方法來實現單表中的行之間的多對多關係?多對多的自引用表
實施例:表存儲字同義詞:
-- list of words
CREATE TABLE word (
id integer PRIMARY KEY,
word varchar(32) NOT NULL UNIQUE
);
INSERT INTO words (id, word) VALUES (1, 'revolve');
INSERT INTO words (id, word) VALUES (2, 'rotate');
-- M:M link between words
CREATE TABLE word_link (
word1 integer REFERENCES word(id) NOT NULL,
word2 integer REFERENCES word(id) NOT NULL,
PRIMARY KEY (word1, word2)
);
明顯的解決方案的結果可能不是-1NF表,包含重複數據:
INSERT INTO word_link(word1, word2) VALUES (1, 2);
INSERT INTO word_link(word1, word2) VALUES (2, 1);
雖然複製可以通過添加進行處理(WORD1 < word2)檢查,它使SELECTs變得更加複雜(聯合比較瑣碎的聯接)並且非常隨意。這個特殊情況可以從輔助表中獲益(例如'含義',所以單詞M:N與常用含義聯繫在一起,而不是相互聯繫,給出更清晰的模式),但我對一些通用解決方案感興趣。
那麼是否有更好的(並希望是普通的)方法來實現這種M:M關係?
ummm ...您的病例陳述對兩種病例都有相同的標準。我認爲你的意思是word2
2009-07-15 18:43:27