我正在从 www.sqa.org.uk/e-learning
学习插入异常。以下数据写入其中,
当某些属性在没有其他属性的情况下无法插入到数据库中时,就会发生 插入异常。例如,这与删除异常相反——除非我们至少有一名学生注册了该课程,否则我们无法添加新课程。
StudentNum CourseNum Student Name Address Course S21 9201 Jones Edinburgh Accounts S21 9267 Jones Edinburgh Accounts S24 9267 Smith Glasgow physics S30 9201 Richards Manchester Computing S30 9322 Richards Manchester Maths
我被困在理解这个概念上。为什么我们需要学生注册该课程才能存在?
原文由 user379888 发布,翻译遵循 CC BY-SA 4.0 许可协议
这意味着模式未标准化,即现在您在表
Student
中拥有有关课程的信息。因此,为了插入课程详细信息,您还需要提供学生的详细信息。
您需要阅读 不同形式的规范化,但在此示例中,解决此异常的正确方法很可能是创建三个表,即 强实体类型
Student
,Course
,以及 关联实体类型链接表StudentCourse
(可能称为Registration
或Grade
),这将允许您存储学生和课程数据而不会重复,以及为许多学生分配许多课程。您可以阅读以下链接中的规范化示例,它会给您一个更好的主意:
http://www.sqa.org.uk/e-learning/MDBS01CD/page_26.htm#Example