2010-11-13 124 views
1

我想知道如何規範化表是這樣的:規範化表

field1|field2|field3 
text1 |txt2 | 1,2,5 
other1|other2| 1,8,7 

FIELD1會重複很多次,場2是唯一的(不重複),現場3 - 用戶ID。 像最喜歡的東西。

+0

我不清楚你的意圖。也許是一個更真實的例子? – Randy 2010-11-13 14:54:58

回答

3

爲此表提供一個主鍵,並使用field3 +此鍵創建一個新鍵。

表(你是變形後原始表)

field1 | field2 | fID 
... | ... | 1 
... | ... | 2 

收藏表:

fID | field3 
1 | 1 
1 | 2 
1 | 5 
2 | 1 
... | ... 

選擇數據

您可以使用JOIN或只是一個在哪裏得到結果。比方說,

SELECT field3 FROM Favorites WHERE fID = 1 

得到

1,2,5 

所以,如果我沒看錯你的問題是關係到主細節/親子模式。

資源

3

首先,如果字段2是唯一的,那麼它應該被聲明作爲主鍵(或者,至少是一個獨特的指數)。其次,在field3中有多個值的事實告訴你,field3應該成爲一個單獨的表,它使用某個唯一值(我們剛纔確定是field2)將其鏈接回第一個表(相關)。

所以,你的數據庫創建腳本應該是這樣的:

CREATE TABLE MainTable (field2 VARCHAR NOT NULL PRIMARY KEY, field1 VARCHAR) 

CREATE TABLE OtherTable (field2 VARCHAR REFERENCES MainTable, field3 INTEGER) 

你也可以考慮增加一個獨立的主鍵值第二個值或使場2和場3一起主鍵。