2009-12-02 144 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