插入异常

fud*_*din 6 sql database relational-algebra relation

我正在从这里学习插入异常.以下数据写在其中,

插入异常

如果在没有其他属性的情况下无法将某些属性插入数据库,则会发生插入异常.例如,这与删除异常相反 - 除非我们至少有一名学生注册该课程,否则我们无法添加新课程.

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
Run Code Online (Sandbox Code Playgroud)

我不理解这个概念.为什么我们需要一名学生注册该课程才能存在?

提前致谢

use*_*076 7

这意味着架构未规范化,即现在您拥​​有有关课程表的信息Student.

因此,为了插入课程详细信息,您还需要提供学生的详细信息.

不同形式的正常化需要了解,但在这个例子中,正确的道路来解决这一异常现象最有可能将创建三个表,即强大的实体类型 Student,Course以及关联实体类型链接表 StudentCourse(可能称为RegistrationGrade)这将允许您存储没有重复和异常的学生和课程数据,以及为许多学生分配许多课程.

您可以通过以下链接阅读规范化示例,它将为您提供更好的主意:

http://www.sqa.org.uk/e-learning/MDBS01CD/page_26.htm#Example


小智 5

该示例假定studentnum和coursenum形成实现完整性规则的复合主键,学生不能多次在同一课程中注册,即组合是不合理的.因此,尝试添加课程记录也需要学生.为了在保持完整性规则的同时避免这种情况,复合密钥在关联实体和课程中实现,学生在不同的实体中.