Sql 如何将其标准化为1NF?
我试图将此表分解为1NF:Sql 如何将其标准化为1NF?,sql,sql-server,database-normalization,Sql,Sql Server,Database Normalization,我试图将此表分解为1NF: STUDENT AGE SUBJECT Nancy 15 Math Nancy 15 Bio Peter 14 Math Hal 17 Math 我首先有一个单独的学生和年龄表 STUDENT AGE Nancy 15 Peter 14 Hal 17 我知道我也应该为主题设置一个单独的表,但我如何才能实现这一点并使其与前一个表相关 由于
STUDENT AGE SUBJECT
Nancy 15 Math
Nancy 15 Bio
Peter 14 Math
Hal 17 Math
我首先有一个单独的学生
和年龄
表
STUDENT AGE
Nancy 15
Peter 14
Hal 17
我知道我也应该为
主题
设置一个单独的表,但我如何才能实现这一点并使其与前一个表相关 由于您已经在第二个表中维护了学生的元数据(如年龄),因此无需在第一个表中重复此信息。因此,第一个表可以简单地如下所示:
STUDENT SUBJECT
Nancy Math
Nancy Bio
Peter Math
Hal Math
实际上,您甚至可能不使用学生和科目名称作为主键,而是使用某种类型的通用ID。然而,上述建议至少让您走上了正确的道路。多亏了@philipxy,根据第一个范式,每个属性中的值都应该是简单值(非关系值)。您的表已经具有每个属性的简单值。年龄、学生、科目。因此,它已经是第一个标准形式 对于更高的范式,我建议您为表定义第一个键。它将确保实体完整性得到维护。另外,为主题创建单独的表格,因为它在功能上并不取决于studentId。这将避免更新主题时出现更新异常
- 学生:学生ID、学生姓名、年龄
- 主题:主题,主题名称
- 学生主题:学生ID,主体ID