目录
数据库体系结构
集中式数据库体系结构
三级模式
-
外部模式(External Schema):
- 外部模式也称为用户模式,它定义了用户如何看待和访问数据的方式。
- 每个外部模式对应着一个或多个用户的视图,这些视图描述了用户所需的数据以及他们对数据的操作。
- 外部模式隐藏了数据库内部的细节,用户只需关心与其相关的数据。
-
概念模式(Conceptual Schema):
- 概念模式是数据库的全局逻辑结构的描述,它描述了数据库中存储的所有数据以及这些数据之间的关系。
- 概念模式定义了数据库中的实体(Entity)以及实体之间的联系(Relationship)。
- 概念模式独立于任何特定用户或应用程序,并且对数据库的整体视图提供了一致的抽象。
-
内部模式(Internal Schema):
- 内部模式是数据库的物理存储结构的描述,它定义了数据在存储介质上的实际存储方式。
- 内部模式包括数据的存储方式、索引、数据分区等细节信息,以及如何在物理层面上组织和管理数据。
- 内部模式通常是数据库管理系统(DBMS)的内部实现细节,用户一般不直接操作或访问内部模式。
两级映像
-
逻辑独立性(Logical Independence):数据的逻辑结构发生变化后,用户程序也可以不修改。但是为了保证应用程序能够正确执行,需要修改外模式和概念模式之间的映像。
-
物理独立性(Physical Independence):当数据的物理结构发生改变时,应用程序不用改变。但是为了保证应用程序能够正确执行,需要修改概念模式和内模式之间的映像。
分布式数据库体系结构
特点
- 数据独立性:除了数据的逻辑独立性和物理独立性外,还有数据分布独立性(分布透明性)。
- 集中与自治共享结合的控制结构:各局部的DBMS可以独立地管理局部数据库,具有自治功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。
- 适当增加数据冗余度:在不同的场地存储同一数据的多个副本,可以提高系统的可靠性和可用性,同时也能提高系统性能。
- 全局的一致性、可串行性和可恢复性
透明性
- 分片透明:用户不必关心数据分不分片,怎么分片
- 位置透明:用户不必关系数据存放在何处
- 复制透明:用户不必关心各个结点数据的复制与同步更新
- 逻辑透明:用户不必关系局部DBMS支持哪种数据模式、使用哪种语言
数据库设计
数据库设计过程
-
需求分析阶段:
- 任务:与利益相关者(如客户、用户、管理人员)一起收集和分析系统的需求和业务规则。
- 产物:数据流图、数据字典、需求说明书等。
-
概念设计阶段:
- 任务:基于需求分析结果,设计数据库的概念模型,确定实体、属性和它们之间的关系。
- 产物:E-R模型。
-
逻辑设计阶段:
- 任务:将概念模型转换为规范化的关系模式,确定关系模式之间的关系,以及实施数据完整性和一致性的约束。
- 产物:关系模式(表结构)。
-
物理设计阶段:
- 任务:确定数据库的物理存储结构,包括索引、分区、存储过程等。
- 产物:物理存储模式、索引设计文档、分区方案。
概念结构设计
- 抽象数据
- 设计局部ER模型
- 合并局部ER模型消除冲突
- 重构优化消除冗余
- 集成的方法:
- 多个局部E-R图一次集成。
- 逐步集成,用累加的方式一次集成两个局部E-R图。
- 集成产生的冲突及解决办法:
- 属性冲突:包括属性域冲突和属性取值冲突
- 命名冲突:包括同名异义和异名同义
- 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同
逻辑结构设计
- 转化为数据模型
- 关系规范化
- 模式优化
- 设计用户子模式
- E-R图向关系模式的转换:
- 实体向关系模式的转换
- 联系向关系模式的转换
- 关系模式的规范化
- 确定完整性约束(确保数据的正确性)
- 用户视图的确定(提高数据的安全性和独立性)
- 根据数据流图确定处理过程使用的视图
- 根据用户类别确定不同用户使用的视图
- 应用程序设计
关系代数
-
投影(Projection): 投影操作用于从关系中选择指定属性的数据,去除其他属性。投影操作可以通过关系中的列(属性)来进行。在关系代数中,投影操作通常用符号 (\pi)(Pi)表示。
例如,假设有一个关系 R 包含属性 A、B 和 C,我们可以使用投影操作选择只包含属性 A 和 B 的数据子集,这样就得到了一个新的关系,表示为 (\pi_{A, B}(R))。
-
选择(Selection): 选择操作用于从关系中选择满足指定条件的元组(行),并去除不满足条件的元组。选择操作可以通过关系中的行来进行。在关系代数中,选择操作通常用符号 (\sigma)(Sigma)表示。
规范化理论
阿姆斯特朗公理体系
- 自反律:如果Y是X的一个子集,那么X→Y总是成立。
- 增广律:如果X→Y,那么对于任何属性集Z,XZ→YZ也成立。
- 传递律:如果X→Y且Y→Z,那么X→Z也成立。
数据库设计过程中的规范化理论主要包括以下几个层次:
- 第一范式(1NF):确保每个表格的原子性,表中的每个字段都是不可分割的最小数据单位。
- 第二范式(2NF):在第一范式的基础上,消除非主属性对主键的部分函数依赖。
- 第三范式(3NF):在第二范式的基础上,消除非主属性对主键的传递函数依赖。
- 博茨-科德范式(BCNF):更严格的第三范式,要求表中的每一个决定因素都必须是候选键。
- 第四范式(4NF):在BCNF的基础上,消除表中的多值依赖。
- 第五范式(5NF):确保数据的完全规范化,消除表内的所有连接依赖。
模式分解
是否保持函数依赖的判断:分解后的关系模式,属性间保留的函数依赖合并后与合并前一致,则保留函数依赖。
是否无损的判断:满足交集推导出差集的函数依赖则满足无损。
并发控制
三级封锁协议:
- 一级封锁协议:事务T在修改数据项X之前必须先对其加上X锁(排他锁)。这保证了任何时刻只有一个事务可以修改数据项,防止了丢失修改。
- 二级封锁协议:在一级封锁协议的基础上,要求事务T在读取数据项X之前必须先对其加上S锁(共享锁)。事务结束时释放所有锁。这除了防止丢失修改,还防止了脏读。
- 三级封锁协议:在二级封锁协议的基础上,要求事务T只能在结束时才能释放其所有的S锁和X锁。这除了防止丢失修改和脏读,还防止了不可重复读。
两段锁协议:
- 加锁阶段:事务可以获取任意数量的锁,但不能释放任何锁。
- 解锁阶段:事务可以释放锁,但不能再获取新的锁。