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