过滤数据库的数据库设计

时间:2009-12-02 10:32:54

标签: sql-server sql-server-2005 database-design

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

  1. 工作
  2. 国家
  3. 管理器
  4. ProcessCode
  5. ProcessType (其余列被截断)。
  6. InstructionID(指令表的FK)
  7. 添加/修改指令时,他可以在上述每个参数中选择多个选项。存储过程将以可能的所有组合存储数据,以便于检索,因为在搜索(检索)期间,每个列中只选择一个选项。

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

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

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

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

2 个答案:

答案 0 :(得分:2)

如果您尝试根据参数组合检索数据,则可以将参数设置为默认值为NULL,例如。

CREATE PROC spProcName
    @FieldName INT = NULL

唯一要做的是设置语句的WHERE部分以查看参数值并比较它们以查看它们是否为空或者为空。

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

使用此方法查询表并使用默认参数值null以类似方式使用标准更新查询,但设置如下值:

FieldName = ISNULL(@FieldName, FieldName)

允许您仅更新给定参数。

希望这是你所追求的,如果需要,我可以提供一个完整的例子。

答案 1 :(得分:0)

你所拥有的是多对多的关系,所以我建议你使用:

instruction_model_01