Database design 关于1NF违规的澄清-DBMS

Database design 关于1NF违规的澄清-DBMS,database-design,normalization,Database Design,Normalization,我正在设计一个以“学期”为实体的基础课程数据库。在这里,我有两个属性“季节”(秋、春、夏)和“年”(2015、2016、2017) 如果我用值FALL16、SPRING16、FALL17等替换这些属性以形成一个名为“sement_Id”的键,我是否违反了第一个标准形式?如果我们将sement_Id视为一个复合属性,那么它通过将两个域合并为一列而违反了1NF。但是,如果它仅用作标识符而不进行解释,则它表示在规范化关系中有效的单个域。简单地说,您希望值为2016Fall、2016Spring和201

我正在设计一个以“学期”为实体的基础课程数据库。在这里,我有两个属性“季节”(秋、春、夏)和“年”(2015、2016、2017)


如果我用值FALL16、SPRING16、FALL17等替换这些属性以形成一个名为“sement_Id”的键,我是否违反了第一个标准形式?

如果我们将sement_Id视为一个复合属性,那么它通过将两个域合并为一列而违反了1NF。但是,如果它仅用作标识符而不进行解释,则它表示在规范化关系中有效的单个域。

简单地说,您希望值为2016Fall、2016Spring和2016Summer,以便它们按正确的分组顺序排列——假设年份是学年

不需要替换现有属性。年和学期/季节的组合就是一个完美的组合键。不要害怕在有意义的地方使用复合键

实际上,你可以考虑将学期推到自己的查找表中,使学期成为一个FK。让Season成为自己的实体将为您提供潜在的有用扩展。查找表中的数据可能如下所示:

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
可能会有很多关于你想要维护的季节或学期的信息