DBMS 中的数据异常
异常是指在对表执行操作期间发生的错误或不一致性。异常可能有多种原因,例如,当数据在数据库中被不必要地存储多次(即存在冗余数据)时发生,或者当所有数据都存储在一个表中时发生。规范化用于克服异常。异常的不同类型有插入异常、删除异常和更新异常。
输入
相同的输入用于所有三种异常。
学生
ID |
姓名 |
年龄 |
专业 |
专业代码 |
系主任姓名 |
---|---|---|---|---|---|
1 |
A |
17 |
土木工程 |
101 |
阿曼 |
2 |
B |
18 |
土木工程 |
101 |
阿曼 |
3 |
C |
19 |
土木工程 |
101 |
阿曼 |
4 |
D |
20 |
计算机科学 |
102 |
莫努 |
5 |
E |
21 |
计算机科学 |
102 |
莫努 |
6 |
F |
22 |
电气工程 |
103 |
拉凯什 |
借助此表,我们将展示不同异常的工作原理。
插入异常
当某些数据或属性无法在没有其他数据存在的情况下插入到数据库中时,称为插入异常。
例如,让我们以石油工程专业为例,现在除非我们插入一个石油工程专业的学生,否则无法将有关石油工程专业的数据存储到表中。实际上,专业的存不存在并不依赖于学生的存在,也就是说,我们必须能够存储专业的相关数据,无论该专业是否有学生,但这由于插入异常而无法实现。
代码
Insert into student values(7, ‘G’,16, ‘PETROLEUM’,104, ‘NAMAN’)#Values get inserted Select * from Student;#Data selected
输出
ID |
姓名 |
年龄 |
专业 |
专业代码 |
系主任姓名 |
---|---|---|---|---|---|
1 |
A |
17 |
土木工程 |
101 |
阿曼 |
2 |
B |
18 |
土木工程 |
101 |
阿曼 |
3 |
C |
19 |
土木工程 |
101 |
阿曼 |
4 |
D |
20 |
计算机科学 |
102 |
莫努 |
5 |
E |
21 |
计算机科学 |
102 |
莫努 |
6 |
F |
22 |
电气工程 |
103 |
拉凯什 |
7 |
G |
16 |
石油工程 |
104 |
纳曼 |
删除异常
如果我们从数据库中删除任何数据,并且任何其他所需的信息也随之被删除,则称为删除异常。
例如,假设电气工程专业的一名学生要离开,因此现在我们必须删除该学生的数据,但问题是,如果我们删除了学生数据,则专业数据也会随之删除,因为只有一个学生的数据包含了专业信息。
代码
Delete from STUDENT WHERE BRANCH= ‘ELECTRICAL’;#data get deleted Select * from STUDENT;#data selected
输出
ID |
姓名 |
年龄 |
专业 |
专业代码 |
系主任姓名 |
---|---|---|---|---|---|
1 |
A |
17 |
土木工程 |
101 |
阿曼 |
2 |
B |
18 |
土木工程 |
101 |
阿曼 |
3 |
C |
19 |
土木工程 |
101 |
阿曼 |
4 |
D |
20 |
计算机科学 |
102 |
莫努 |
5 |
E |
21 |
计算机科学 |
102 |
莫努 |
更新/修改异常
如果我们想要更新任何单个数据片段,则必须更新所有其他副本,这属于插入异常。
例如,假设我们需要更改土木工程专业的系主任姓名,根据要求,只需要更改单个数据,但我们必须在其他所有地方更改数据,以避免表格不一致。
算法
步骤 1 − 使用更新操作来更改表中的数据
步骤 2 − 提供要进行的更改
步骤 3 − 提供执行任务的条件
步骤 4 − 使用选择操作来检查输出
代码
Update STUDENT #Table selected to preform task Set HOD_NAME= ‘RAHUL’#changes to be made WHERE BRANCH= ‘CIVIL’;#condition given Select * from STUDENT;#Data selected
输出
ID |
姓名 |
年龄 |
专业 |
专业代码 |
系主任姓名 |
---|---|---|---|---|---|
1 |
A |
17 |
土木工程 |
101 |
阿曼 |
2 |
B |
18 |
土木工程 |
101 |
阿曼 |
3 |
C |
19 |
土木工程 |
101 |
阿曼 |
4 |
D |
20 |
计算机科学 |
102 |
莫努 |
5 |
E |
21 |
计算机科学 |
102 |
莫努 |
6 |
F |
22 |
电气工程 |
103 |
拉凯什 |
结论
在本文中,我们解释了数据异常,其中获取了一个表,然后根据该表解释了不同的异常。第一个异常是插入异常,其中在没有其他数据存在的情况下,插入操作受到限制。第二个异常是删除异常,其中任何数据的删除都会导致其他有用数据的删除。第三个是更新异常,其中更新单个数据片段需要更新所有副本。