2009-12-02 146 views
0

我是新来的复杂数据库设计。我目前正在进入一个项目,用户应该能够根据18列的组合来检索说明。所以,我的参数表有以下几列用于过滤数据库的数据库设计

  1. 工作
  2. 国家
  3. 经理
  4. ProcessCode
  5. ProcessType (列的其余部分被截断)。
  6. InstructionID(指令表的FK)

加入当/修改指令,他可以选择在每个上述参数的多个选项。存储过程将以所有可能的组合方式存储数据,以便于检索,因为在搜索(检索)期间,每个列中只会选择一个选项。

对于相同的组合,可以有多条指令,并且相同的指令可以应用于多个组合。

我以某种方式创建了用于添加指令的SP,但现在已经修改了。当我的网页将新组合传递给SP时,更新表格的最佳方法是什么?

我可以删除所有现有行并为新组合创建新行,但我想维护创建的日期并创建用户列。此外,还需要将这些历史记录保存在单独的历史记录表中。

对不起,问题的长度...并且,谢谢你的帮助。

回答

0

你有什么是许多一对多的关系,所以我会建议你使用:

instruction_model_01

+0

对不起,如果我不清楚......每个ParameterID只有一条指令......但是可以有两行,除了ParameterId和InstructionID ....之外的所有其他字段的相同组合。是一个多对一的关系参数和说明 – 2009-12-03 05:31:38

2

如果你想根据参数的组合来获取数据,那么你可以设置参数的默认值为NULL,例如

CREATE PROC spProcName 
    @FieldName INT = NULL 

唯一的其他东西做的是设置语句的WHERE部分看参数值并加以比较,看看他们或空或不是如

WHERE ((FieldName = @FieldName) OR (@FieldName IS NULL)) 

使用此使用的空默认参数值查询表,并使用标准的更新查询以类似的方式,但设置这样的值:

FieldName = ISNULL(@FieldName, FieldName) 

,它可以让您只更新给定的参数。

希望这是你以后的事情,如果需要,我可以举一个完整的例子。

+0

这是否回答你的问题,如果是这样请标记为答案 – anD666 2013-08-19 16:26:20