数据库系统概论:参照完整性和关系模型

需积分: 35 4 下载量 84 浏览量 更新于2024-08-15 收藏 5.59MB PPT 举报
"ORACLE中的参照完整性续-数据库系统概论 第四版 王珊等的课件答案等 完全版收藏版" 在Oracle数据库中,参照完整性是确保数据一致性和完整性的关键机制之一。它规定了在一个表中的外键字段必须引用另一个表中存在的主键值,从而保持两个表之间的关联。在提供的描述中,创建了一个名为EMP的表,该表具有一个外键约束FK_DEPTNO,这个约束引用了DEPT表的主键(Deptno)。 首先,我们来看创建EMP表的SQL语句: ```sql CREATE TABLE EMP (Empno NUMBER(4), Ename VARCHAR(10), Job VARCHAR2(9), Mgr NUMBER(4), Sal NUMBER(7,2), Deptno NUMBER(2), CONSTRAINT FK_DEPTNO FOREIGN KEY (Deptno) REFERENCES DEPT(Deptno)); ``` 在这个例子中,`Empno`、`Ename`、`Job`、`Mgr`、`Sal` 和 `Deptno` 是EMP表的列,`Empno`很可能是主键。`Deptno`是外键,它引用了名为DEPT的表的`Deptno`列。`CONSTRAINT FK_DEPTNO`定义了一个名为FK_DEPTNO的外键约束,它确保`EMP`表中的`Deptno`值必须存在于`DEPT`表的`Deptno`列中。 参照完整性的实现有以下几个方面: 1. **插入规则**:当尝试在EMP表中插入一条记录时,如果`Deptno`的值不在DEPT表的`Deptno`列中,那么插入操作将被拒绝,除非启用了级联插入或默认值处理。 2. **更新规则**:如果试图更新EMP表中已存在的记录,改变`Deptno`的值,那么新值必须在DEPT表的`Deptno`列中存在。否则,更新操作会被阻止。 3. **删除规则**:当试图从DEPT表中删除一个`Deptno`值,如果该值在EMP表中有引用,那么删除操作会根据外键约束的设置来处理。默认情况下,Oracle不允许这样的删除,除非设置了级联删除,这会同时删除所有引用该值的记录。 此外,`VARCHAR2`是Oracle中的一个数据类型,类似于其他数据库系统的`VARCHAR`,但更精确,用来存储可变长度的字符串。`NUMBER(p,s)`用于存储数值,其中`p`是总位数,`s`是小数位数。 在《数据库系统概论》课程中,除了参照完整性,还涵盖了多个主题,如: - **关系数据库**:介绍了关系模型的基本概念,如关系、元组、属性和域,以及关系操作如选择、投影、并、差、笛卡尔积等。 - **SQL**:标准的关系数据库查询语言,用于创建、查询、更新和删除数据库中的数据,以及定义数据库结构。 - **关系数据理论**:包括关系代数、关系演算、规范化理论,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF。 - **数据库设计**:涵盖概念设计、逻辑设计和物理设计,以及E-R模型、关系设计和数据库的反范式化。 - **数据库恢复技术**:讨论事务、故障类型和恢复策略,如日志记录和检查点。 - **并发控制**:处理多用户同时访问数据库时可能出现的问题,如死锁和活锁,以及解决这些问题的算法,如两阶段锁定协议。 - **数据库安全性**:涉及用户权限、角色、审计和访问控制,以保护数据库免受未授权访问。 - **数据库完整性**:除了参照完整性,还包括实体完整性、用户定义的完整性,以及如何通过约束来维护这些完整性。 整个课程的学习方法包括听课、阅读教材、个人研究报告和集体项目,旨在培养对数据库理论和实践的全面理解。个人研究报告需要深入研究一个数据库相关的技术,从问题背景、历史、核心原理到未来发展进行探讨。集体项目则涉及到实际的数据库应用开发,利用编程语言与数据库系统进行交互。