sql - 插入异常的特异性

标签 sql database insertion anomaly-detection

我目前正在尝试了解 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/

相关文章:

mysql - 获取数据子集到 qplot

sql - 在 PostgreSQL 中查找部分匹配条件的行

java - 如何使用java将对象插入到正确的位置?

C 插入排序陷入 while 循环

Python MySQLdb 问题(TypeError : %d format: a number is required, 不是 str)

mysql - 查找 SQL 中最常一起出现的记录

mysql - 添加到长而复杂的查询

php - 如何添加用 PHP 编写的颜色?

sql - 从查询中选择 Sybase 中的负值

mysql - SQL 条件分组依据