我目前正在尝试了解 SQL 中插入/删除/修改异常的细微差别。
目前,我试图理解的示例如下:
ENROLLMENT
StudentID(PK) StudentName ClassID ClassName
111 Joe E1 English1
222 Bob E1 English1
333 Mary H1 History1
这个例子要我回答的问题是:
Which of the following causes an insertion anomaly?
答案是
Inserting a Student without a Class
和
Inserting a Class without a Student
我真的不明白为什么这些答案中的一个比另一个更正确,为什么,或者如何。在我看来,两者都可以接受。提前致谢。
最佳答案
您需要考虑如何自然地将数据添加到系统(即现实世界中发生的一系列事件)。
在这种情况下,您将在注册之前创建一组类(class),然后在学生出现注册时创建并分配学生。
您不太可能创建一组学生,然后为每个学生创建和分配类(class)。
一个类(class)可能只能容纳 30 名学生。您如何处理任何想注册该类(class)的额外学生?
如果您注册 100 名学生,然后决定创建类(class),您会创建哪些科目?
为什么学生决定去注册? [大概是因为提供的类(class)。]
您可以根据自己的时间表创建尽可能多的类(class)。实际注册的学生人数可能意味着类(class)被取消,但它必须首先存在。
综上所述,“插入没有类(class)的学生”更容易导致插入异常。
关于sql - 插入异常的特异性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53619296/