2013-10-15 115 views
0

我正在處理SQL Server 2008中的數據庫表,這是經典ASP應用程序的後端。我繼承了這個數據庫表,每個課程都包含「結果」。避免SQL Server中的大量數據庫列 - 數據庫重新設計

每一行代表一個「客觀」,然後「結果」在列中 - 列值指示目標是否符合該特定結果。

這裏是當前數據庫表列的一個例子:

ID | Objective | Outcome1 | Outcome2 | ... Outcome11 

最近,有人表示需要有一個新的組添加到每行描述符。簡稱「KSA」,代表「知識,技能和態度」。基本上,KSA將每個結果的描述「細分」爲細節。

在知識範圍內,有一組特定於第一個結果的標識符。第二個結果有一組不同的標識符,等等。 「技能」和「態度」每個人都有自己的標識符,這些標識符的結果也不同。

爲了幫助總結,每門課程都有一個未知數量的目標 - 通常是10-20。他們不知道的原因是他們被教職員輸入到應用程序中,數量取決於他們課程的特定要求。

對於每個目標(行),已有11個結果列已經存在。

新KSA方面將包含:

...... a variable number of identifiers for "Knowledge" that relates to outcome 1. 

and... a variable number of identifiers for "Knowledge" that relates to outcome 2. 

and so on...thru outcome 11 

and... a variable number of identifiers for "Skills" that relates to outcome 1... 

and... a variable number of identifiers for "Skills" that relates to outcome 2... 

and so on...thru outcome 11 

and... the same for "Attitudes" 

and so on...thru outcome 11 

我繼承其中一個單獨的列中的每個11次的結果所提供的表。 我們將保留這方面的內容,並增加KSA的更多細節。但是,通過增加KSA,我想知道添加數據結構的最佳方式。如果我要爲每個KSA提供一個單獨的專欄,我最終會得到大約140個新專欄,似乎應該有更好的方法來保存數據。此外,許多KSA列可能包含null。

此外,我曾想過將一列中的所有KSA數據作爲分隔字符串,但當用戶執行搜索時,似乎會出現性能問題,因爲不少操作會需要每次在字符串上執行。

這裏是在KSA中的數據的一個例子,在「綱要」的形式,這說明每一種結果是怎樣分解成更精細的細節與KSA描述:

Outcome: Calculations-The graduate will be able to perform calculations accurately. 
    Knowledge: 
    1. specific calculations 
    2. specific factors that influence calculations. 

    Skills: 
    1. employing consistently accurate mathematical ability in all calculations. 
    2. applying principles of calculations and specific factors to determine the appropriate use of therapy. 
    3. completing calculations needed to prepare specific results. 

    Attitudes: 
    1. stating the importance of accurate calculations. 
    2. recognizing the impact of calculation errors on response and risk 

什麼可能是最好的方式添加KSA元素?由於每種結果的數據被分成多個描述符,我曾想過使用單獨的表格,但不知道如何在邏輯上解決這個問題。

感謝您的任何幫助。

回答

2

我會將Outcome列更改爲引用「Outcomes」表的外鍵,其中引用記錄的一個字段爲您提供目前在主表中的字符串描述,其他字段爲字符串KSAs或其他K,S和A表格的引用,取決於KSA元素是否獨特於結果。

+0

我在另一項任務上工作了一個月,但現在我又回到了這一項。感謝您的建議。 「結果」表中的結果會成爲行(例如,結果1,結果2等)嗎? – buck1112

+0

是的:)我知道的消息應該是更長的時間,但沒有什麼其他的說。 –