数据库实验:数据完整性与完整性约束

需积分: 18 1 下载量 162 浏览量 更新于2024-08-06 收藏 161KB DOCX 举报
"实验五 数据完整性实验111 - 数据库 学生" 在这个实验中,我们将探讨数据库的完整性,这是数据库管理系统(DBMS)设计中的一个重要方面,它确保了数据的准确性和一致性。完整性分为三类:实体完整性、参照完整性和用户定义的完整性。 1. 实体完整性: 实体完整性规定了主键的概念,主键是表中唯一标识每一行的字段。在实验中,我们看到如何在列级和表级定义主键。例如,在`student`表中,`sno`被定义为列级主键(`snochar(9)primarykey`),这意味着每个学生的学号必须是唯一的,不能为NULL。而在`sc`表中,主键是在表级定义的,由`sno`和`cno`两个字段共同构成(`primarykey(sno,cno)`)。如果尝试插入重复的(sno, cno)组合,系统将拒绝该操作,因为这违反了主键约束。 2. 参照完整性: 参照完整性涉及到表之间的关系,通常通过外键实现。外键是一个字段,它的值必须是另一个表的主键值。在实验中,假设`student`表中的`sno`是`sc`表的外键,表示学生选课的关系。例如,`ALTER TABLE sc ADD CONSTRAINT fk_sno FOREIGN KEY (sno) REFERENCES student(sno)`,这样定义后,任何在`sc`表中添加的`sno`值都必须已经存在于`student`表的`sno`列中,否则会违反参照完整性,导致操作失败。 3. 用户定义的完整性: 除了上述两种完整性外,用户还可以自定义其他完整性约束,如使用`CHECK`短语来限制字段值的范围。例如,`ssex`字段可能只允许'男'或'女',可以定义一个检查约束如`CHECK (ssex IN ('男', '女'))`。如果尝试插入其他值,系统将拒绝此操作。 实验报告中,你需要详细记录每一步操作,包括使用的SQL语句,执行后的结果以及当违反完整性约束时系统的响应。例如,试图插入一个已存在的主键值或者一个不存在的外键值时,系统通常会返回错误信息,如“违反主键约束”或“违反外键约束”。 实验过程中,了解和应用违约处理规则也很重要。例如,你可以设置当违反完整性时,系统采取拒绝操作(NOACTION)还是级联更改其他相关数据(CASCADE)。例如,如果你选择CASCADE,删除一个学生记录时,所有与之相关的选课记录也将被删除。 实验五的重点是理解和实践这些完整性概念,并观察当违反这些规则时,DBMS如何维护数据的正确性。通过这个实验,你将能更好地理解和应用数据库完整性,解决实际问题,这对于数据库设计和管理至关重要。