2008-09-28 81 views

回答

13

取決於兩個因素:
1)的標籤量/標籤記錄
2)無論你有:-)

正常化宗教觀點,除非處理非常大量數據,我建議有一個'標籤'表格將varchar值映射到整數標識符,然後將第二個表格將標記記錄映射到它們的標記ID。我建議先實施,然後檢查它是否不符合您的性能需求。在這種情況下,使用標記行的id和標記的實際文本來保存單個表,但在此我建議您使用char列,因爲如果優化程序執行全表掃描,它將會終止您的查詢一個帶有varchar列的大表。

+0

同意,那麼你可以輕鬆地重命名標籤。 – 2008-09-28 04:40:27

+2

使用NVARCHAR或NCHAR列支持unicode,否則您只想在標籤中支持ASCII章程。 – Horcrux7 2008-09-28 13:53:15

3

不,在單個字段中放置多個數據通常是一個壞主意。相反,使用一個單獨的標籤表(可能只有一個TagID和TagName),然後,對於每條記錄,指示與其關聯的TagID。如果一條記錄與多個標籤相關聯,則只會有重複的記錄,唯一的區別是TagID。

這裏的好處是,您可以通過標記,記錄和分開維護標記表(即,如果標記名稱更改?)輕鬆查詢。

+3

您也不希望重複記錄,在這種情況下,您需要一個將TagIds與TagIds匹配到RecordIds的TagRecord表。 – 2009-03-15 22:58:49

3

使用標籤表允許的最小的主鍵。如果少於255個標籤使用一個字節(tinyint)或者一個字(smallint)。鍵越小,主表中外鍵的索引越小,速度越快。

相關問題