2009-09-18 89 views
0

我想爲下述問題提供最佳解決方案。 我正在使用SQL Server 2005和asp.net 2.0。設計一個數據庫

我有一個主表,其中存儲了不同項目的所有測試腳本。 從主表中的測試腳本我需要創建一個模塊並將所需的測試腳本添加到模塊。

UI設計爲: 創建新模塊。 從主表中選擇所需的測試用例。 將測試用例添加到模塊。

用戶可以使用主表中的不同測試用例組合來創建任意數量的模塊。

對於前 - 主表有100個測試用例。我創建了2個模塊。 Module1有40個從主表中選擇的測試用例。 Module2從主表中選擇了20個測試用例。

如何在這種情況下設計數據庫?

回答

4

Rules of Data Normalization

摘要:

  1. 1NF消除重複的組 - 請設置相關屬性的 爲每一個單獨的表,併爲每個 表的主鍵。
  2. 2NF消除冗餘數據 - 如果 屬性僅依賴於 多值密鑰的一部分,請將其移除到 單獨的表中。
  3. 3NF消除列不依賴 嶼 - 如果屬性不 有助於 鍵的描述,它們刪除到一個單獨的 表。 .......
1

爲了得到喜歡的東西是第三範式,基本上你至少需要3個表。

您有測試用例表(這是您的主表,它包含所有測試用例)。然後你有一個模塊表,它爲用戶創建的每個模塊創建一個條目。然後你有一個test_modules表,並且有一個外鍵返回到modules表和testcase表。

當您創建一個新模塊時,您將要插入一個新行到模塊表中。對於爲該模塊選擇的每個測試用例,您將在test_modules表中插入一行。每行將有一個FK到模塊表(這樣你就知道它屬於哪個模塊)和一個FK到測試用例表(所以你知道它是什麼測試用例)。

testcase Table (Master Table) { 
    id 
    test_case_name 
} 

modules table { 
    id (PK) 
    module_name (varchar) 
    creater (varchar) 
} 

test_modules table { 
    id (PK) 
    testcase_id (FK to testcase.id) 
    module_id (FK to modules.id) 
} 

因此,要獲得測試用例爲特定的模塊,你可以做一個查詢,如下所示:

select * 
from modules m, testcase t, test_modules tmod 
where m.id=tmod.module_id and tmod.testcase_id = t.id 

這是一個非常過於簡單化和低效的查詢,但它的工作,讓你開始。

+0

謝謝! 這看起來不錯。 – Sachin 2009-09-18 07:23:22

0

「我有一個主表」

「我如何設計一個數據庫?」

以前的兩個答案給了你有關表格設計的細節。當您設計表格來存儲與模塊和腳本相關的數據時,這些細節將非常有用。但是,您需要了解其他幾個基礎知識。

您的主表的設計是數據庫設計的一部分。如果該主表的設計對您正在進行的項目非常不利,那麼根據具體情況重新設計主表可能是最佳方案。

標準化不是發現優秀設計的唯一方法。特別是,引用2NF和3NF的規則將有助於避免在您設計的表格上插入,更新和刪除時出現異常情況。但是noprmalization不會幫助你使選擇更容易。

學習如何遵循規範化規則需要幾個星期。學習何時忽視這些規則需要花費更長的時間,以及如何在設計時設計好設計。

+0

謝謝。這似乎是一個很好的提示.. – Sachin 2009-09-20 13:24:30