数据库原理及应用实验四数据完整性

详细说明

实验四:数据完整性

在数据库管理系统中,数据完整性是指数据的准确性和一致性,确保数据在存储和处理过程中的可靠性。数据完整性主要包括以下几种类型:

  1. 实体完整性:确保表中的每一行都是唯一的,即主键约束。主键不能重复,也不能为NULL。例如,在学生表中,学号作为主键必须唯一且不可为空。

  2. 参照完整性:确保外键值必须存在于父表中,即子表中的外键必须引用父表中的主键。这样可以避免引用不存在的数据。例如,在成绩表中,学生ID应当在学生表中存在。

  3. 域完整性:确保数据列中的每个数据值都在允许的范围内。数据列的域限制了数据的类型、长度和格式。例如,年龄列应该只允许正整数,并且在合理的范围内。

  4. 用户定义完整性:根据业务需求自定义的规则,比如数据必须符合特定的业务逻辑或条件。例如,员工的工资必须大于最低工资标准。

实验内容

  1. 创建表格并定义约束

    • 创建一个包含主键、外键约束的表。
    • 定义列的数据类型和域约束。
  2. 插入数据并测试完整性

    • 插入符合约束的数据,确保数据能被正确插入。
    • 尝试插入违反约束的数据,检查数据库是否正确拒绝这些数据。
  3. 更新和删除数据

    • 更新数据以测试更新操作是否保持数据完整性。
    • 删除数据并确保相关的外键约束被正确处理。
  4. 验证数据完整性

    • 通过查询数据验证所有的完整性约束都被正确实施。
    • 使用数据完整性测试工具或手动检查数据。

代码示例

sql
-- 创建学生表 CREATE TABLE Student ( student_id INT PRIMARY KEY, -- 主键约束 name VARCHAR(50) NOT NULL, age INT CHECK (age > 0) -- 域完整性 ); -- 创建成绩表 CREATE TABLE Grade ( grade_id INT PRIMARY KEY, -- 主键约束 student_id INT, score INT CHECK (score BETWEEN 0 AND 100), -- 域完整性 FOREIGN KEY (student_id) REFERENCES Student(student_id) -- 参照完整性 ); -- 插入符合约束的数据 INSERT INTO Student (student_id, name, age) VALUES (1, 'John Doe', 20); INSERT INTO Grade (grade_id, student_id, score) VALUES (1, 1, 85); -- 尝试插入违反约束的数据 -- 例如,插入一个没有在Student表中存在的student_id -- INSERT INTO Grade (grade_id, student_id, score) VALUES (2, 999, 90); -- 应该会报错

总结

在数据库实验中,数据完整性约束确保了数据的准确性和一致性。通过创建表、定义约束、插入和测试数据,可以验证这些约束是否正常工作。实验中应关注数据的完整性,确保在实际应用中能够正确处理和维护数据。