2016-10-05 91 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