2017-03-04 68 views
1

我正在設計一門基礎課程數據庫,並將'學期'作爲一個實體。在這裏,我有兩個屬性「季節」(秋季,春季,夏季)和「年」(2015年,2016年,2017年)。關於1NF違規的澄清 - DBMS

如果我將這些屬性替換爲一個名爲「Semester_Id」的鍵值爲FALL16,SPRING16,FALL17等,我違反了第一範式嗎?

回答

1

一般而言,您希望值爲2016Fall,2016Spring和2016Summer,因此他們會按正確的分組順序 - 假定年份爲學年。

沒有必要替換現有的屬性。學年和學期/季節的組合使他們成爲完美的組合鍵。不要害怕在有意義的地方使用組合鍵。

實際上,您可能會考慮將學期推到自己的查找表中,並將學期屬性設置爲FK。使季節成爲自己的實體會給你潛在的有用的擴展。查找表中的數據可能如下所示:

ID Name Starts 
0 Fall Last week of August 
1 Spring First week after the first Saturday of January 
2 Summer First week of May 

可能有許多關於您可能想要維護的季節或學期的信息。

2

如果我們將Semester_id視爲複合屬性,那麼它將兩個域合併到一個列中,從而違反了1NF。但是,如果它僅用作標識符而沒有解釋,則它表示在標準化關係中有效的單個域。