2011-08-05 85 views
0

我想創建一個參考表。隨着時間的推移,行數和列數可能會增長(並變得多餘)。列名也可能隨時間而改變。假設列'Position'中的值是'IT Engineer',在行(n)中。對於列結構中進一步向下的特定行(n),讓我們在'Behind Sheds'列中說,是我需要檢索的值。如果列數是固定的,那麼這是沒有問題的,但現在使用T-SQL動態添加列,這很容易實現,甚至可以重命名這些列。我的問題是,爲上述示例添加動態列是否是一種好的做法,還是有更好的選擇,以及如何?SQl參考表 - 動態列

謝謝。

回答

1

可能會更好地使用類似字段的附加表格:person_id(主鍵的外鍵),person_param(例如「位置」),person_value(例如「IT工程師」)?

+0

+1我同意。一般來說,如果您即時修改模式,那麼您就錯了。 –

+0

我認爲Subdigger有正確的想法;而是有多行,其中列[Position]和[Where]是唯一的,而[value]列是具有所需值的列。使它更容易。謝謝 –

0

我相信你的問題是實施EAV模型的權利。的

基本上代替具有20個列,則有3:

  • 實體
  • 屬性(也稱爲列名)
  • 值(實際上可能是多個值不同的類型,以及你只是填充正確的一個)

這樣,對於數據庫中的10個實體,每個實體有20列,可以在EAV表中填充200行數據。它具有較少的性能,查詢比較困難,但它確實提供了靈活性,因此您甚至可以讓每個實體具有不同的屬性集。