数据库是存储和组织数据的系统,它提供了数据的结构化管理和高效访问机制。在数据库技术中,有多种数据模型,包括层次模型、关系模型和网络模型。其中,E-R(实体-关系)模型是一种概念数据模型,独立于具体的计算机系统。层次模型和网络模型是早期的数据库模型,而关系模型,如SQL(结构化查询语言)所基于的,是最广泛使用的一种。面向对象的模型则是结合了对象编程的概念,如类和继承,来表示数据。
数据库的运算主要包括选择、投影、联结和除法等。选择运算从关系中选取满足特定条件的元组,投影运算则用于取出关系中的部分列并去除重复的元组。在创建SQL基本表时,可以通过外键子句来实现参照完整性规则,确保数据的一致性。
规范化是数据库设计中的一个重要概念,它通过消除数据冗余和插入、删除异常,提高数据库的性能和数据一致性。常见的规范化程度包括1NF(第一范式)、2NF(第二范式)、3NF(第三范式)和BCNF(Boyce-Codd范式)。E-R模型在转换为关系模型时,每个实体类型通常转换为一个关系模式,M:N联系类型转换为一个关系模式,而1:1和1:N联系类型处理方式可能因设计而异,有时也会生成新的关系模式。
系统死锁是指多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,属于事务故障。分布式数据库相比分散式DB,具有数据分布性和逻辑整体性,同时也强调数据透明性,即用户无需关心数据在物理上的位置,只关注逻辑上的数据访问。
在面向对象数据模型中,类可以看作是E-R模型中的实体类型或实体集,每个类的实例都是该类的一个对象。在数据库设计的逻辑设计阶段,E-R模型会被转换为关系数据模型。数据库镜像是一种高可用性解决方案,用于提高数据库的容错能力,常用于数据库恢复。
在数据库系统中,常用的完整性约束包括实体完整性、参照完整性和用户定义完整性。聚合函数如`COUNT(列名)`用于统计指定列的非空记录数。若属性Y对于属性X的每个值都是唯一的,我们称Y函数依赖于X,记为Y → X。数据抽象的概括层次表示一般到特殊的联系,聚集层次则表示整体与部分的联系。并发操作如果不加控制,可能会导致数据不一致和死锁等问题。数据分片需遵循无损连接性、重构性和凝聚性条件。继承性在面向对象数据库中可发生在类与类或对象与对象之间。文件管理系统相比数据库系统的数据共享性和独立性较差。视图是基于基本表的逻辑视图,对视图的操作最终会转换为对基本表的操作。
名词解释:
1. 外模式/模式映象:外模式是用户看到的数据视图,模式映象描述了外模式与模式之间的映射关系。
2. 超键:在关系中,能唯一标识一行的属性集合称为超键。
3. 事务:事务是数据库系统中的一组操作,作为一个逻辑工作单元,要么全部成功,要么全部回滚。
4. BCNF(Boyce-Codd范式):在关系数据库中,若每个非平凡的多值依赖都包含候选键,则称该关系模式处于BCNF。
简答题:
1. 数据独立性关注数据与应用程序的分离,数据联系则关注数据间的关联和相互作用。
2. 数据库恢复是为了恢复数据库到某个已知的正确状态,基本原则包括检查点、前滚和回滚。通过日志记录和备份,当系统发生故障时,可以实施恢复。
3. 规范化的基本规则是消除部分函数依赖和传递函数依赖,确保数据的一致性和减少更新异常。
4. 优化关系代数表达式可以提高查询效率,避免不必要的计算和数据访问。
程序设计题:
1. 找所有女科长的姓名和家庭地址:π 姓名, 家庭地址 (σ 性别='女' ∧ 职务='科长' (职工 ⨝ 职工号=职工号))
2. 查找“办公室”的科长姓名和家庭地址:π 姓名, 家庭地址 (σ 部门名称='办公室' ∧ 职务='科长' (职工 ⨝ 职工号=部门编号 ⨝ 部门编号=部门编号))
3. 查找“财务科”中健康状况为“良好”的职工姓名和家庭地址:π 姓名, 家庭地址 (σ 部门名称='财务科' ∧ 健康状况='良好' (职工 ⨝ 职工号=保健卡编号 ⨝ 健康状况=健康状况))
4. 删除职工关系表中职工号为“3016”的记录:DELETE FROM 职工 WHERE 职工号='3016'
5. 将职工号为“3061”的职工健康状况改为“一般”:UPDATE 职工 SET 健康状况='一般' WHERE 职工号='3061'
6. 建立健康状况为“差”的职工视图:CREATE VIEW 健康差职工 AS SELECT * FROM 职工 WHERE 健康状况='差'
以上内容涵盖了数据库的基础概念、模型、完整性约束、规范化、事务、并发控制、分布式数据库、面向对象模型、数据库设计和SQL操作等多个方面,这些都是数据库领域的重要知识点。