2016-10-05 161 views
0

我在網上做了一段時間的研究,但找不到相同的情況。我需要的是:關於數據庫表格設計

我有20個組,每個組都有自己的文檔模板。例如,在第一組中,模板有26個內容:A,B,C,D,E ..... Z。但並不是所有這26個內容都會顯示。

例如,文檔1將顯示10個內容,文檔將顯示15個內容。在第二組中,模板有30個內容:aa1,bb2,cc3,... yy30。每個文檔將根據傳遞的參數顯示特定內容,與第一組相同。

我將創建一個帶參數的方法,並根據傳遞的參數生成文檔。

我應該如何在sql server中設計數據庫表? 1)使用A,B,C,D .... Z作爲列,值將是真(顯示)還是假(不顯示)?但是每個組都有不同的模板。例如,第二組將有列aa,bb,cc .....所以我必須爲20個組創建20個表格?這不是一個好策略?這些記錄是會喜歡:

   A  B  C 
doc1  true true false 
doc2  true true false 

2)使用A,B,C,d ... Z爲行,該值將是true(顯示)或false(不顯示)?然後他們會有很多冗餘記錄。例如,組1的文檔1將具有:

doc1 A true 
doc1 B true 
doc1 C false 
... 
doc2 
doc2 
... 
doc 

請幫助提供建議。謝謝!

+0

你想要什麼樣的標準化水平? – nicomp

+0

沒關係。我們不關心標準化水平 – user3656901

回答

0

我瞭解你的情況是下:

  • 你有20組
  • 每個組都有設定的內容
  • 每個組中有多個文檔模板
  • 每個文檔模板有多個內容根據需要。

考慮到你不關心標準化;您需要創建單個表格,如下所示:

模板表(組,文檔,內容)以及僅針對組中文檔顯示的內容(即在您的示例中爲true)添加行。

Group Document Content 
----- -------- ------- 
G1  Doc1  A 
G1  Doc1  B 
G1  Doc2  A 
G1  Doc2  B 
... 
G2  Doc1  AA 
G2  Doc1  BB 
G2  Doc2  BB 
G2  Doc2  EE 
... 
+0

這種方法的缺點是,如果有一個新的組,那麼我們將不得不插入許多行記錄到表中。對? – user3656901

+0

在這種情況下,我們不需要主鍵? – user3656901

+0

@ user3656901,要實現更改,我認爲與創建,修改或刪除表或列相比,可以更靈活地添加,編輯和刪除行。一般來說,我更喜歡數據庫設計,其中DML可以幫助實現更改直到除非必須使用DDL。 – Rupesh