2009-03-04 19 views
2

當使用數據庫設計軟件時,值得將枚舉規範化爲單獨的表格嗎?是否值得將枚舉值歸一化到新表中?

例如如果我有一個類:

public class Alert 
{ 
    public int ID 
    public System.DayOfWeek AlertDay; 
    public string Message; 
} 

如果我相應的警報表僅僅是這樣的:

CREATE TABLE Alert 
(
    ID INT IDENTITY, 
    AlertDay INT, 
    Message VARCHAR(50) 
) 

或者我應該一週的日子歸到一個單獨的表並添加FK關係到我的警報表?

這種設計決定有沒有經驗法則?

回答

1

通常不會。一週中的日子不太可能發生變化,您不希望進行不必要的連接。另一方面,您確實希望確保「星期幾」的來源是一致的,不會發生變化(例如本地化,大寫,縮寫等)。

1

如果這是如此恆定作爲關於星期幾的信息,我只是在代碼中定義一個枚舉並將整數存儲在數據庫中。

0

數據是否會直接從數據庫訪問而不通過對象?如果是這樣,那麼我會推薦一個查找表,或者任何在星期幾編寫報表的人都必須編寫一個case語句來顯示星期幾的文本值,或者他們犯了轉換錯誤int使用系統函數的星期幾,並發現其服務器上的startOfWeek設置與硬編碼到對象中的設置不同。

0

或者,您可以存儲DateTime並讓應用程序確定一週中的哪一天。許多語言都有內置的方法來完成此操作。