数据库系统设计

目录

1. 数据库结构与模式

1.1 三级模式

1.2 三级抽象

1.3 两级独立性

2. 数据库设计

2.1 四个阶段

2.2 数据模型

3. 关系代数

4. 规范化理论(关系模式分解)

5. 反规范化

6. 事务管理

7. 备份和恢复

8. 分布式数据库

9. 数据仓库(离线数据库)和数据挖掘

10. 数据库完整性


1. 数据库结构与模式

1.1 三级模式

  • 外模式

外模式(子模式、用户模式 )用以描述用户看到或使用的那部分数据的逻辑结构,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据。外模式是数据库用户(包括程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。一个数据库可以有多个外模式。一个应用程序只能使用一个外模式。

  • 概念模式

概念模式(模式、逻辑模式 )用以描述整个数据库中数据库的逻辑结构,描述现实世界中的实体及其性质与联系,定义记录、数据项、数据的完整性约束条件及记录之间的联系,是数据项值的框架。概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个概念模式

  • 内模式

内模式(物理模式 )是整个数据库的最低层表示,不同于物理层,它假设外存是一个无限的线性地址空间。内模式定义的是存储记录的类型、存储域的表示以及存储记录的物理顺序,指引元、索引和存储路径等数据的存储组织。一个数据库只有一个内模式。

1.2 三级抽象

  • 用户级:对应于外模式,是最接近用户的一级数据库。

  • 概念级:对应于概念模式,介于用户级和物理级之间,是所有用户视图的最小并集,是数据库管理员可看到和使用的数据库,又称 DBA(DataBase Administrator,数据库管理员)视图。

  • 物理级:对应于内模式,是数据库的低层表示,它描述数据的实际存储组织,是最接近于物理存储的级,又称内部视图。

1.3 两级独立性

  • 物理独立性

用户的应用程序,与存储在磁盘上的数据库中的数据是相互独立的。当数据的物理存储改变时,应用程序不需要改变。

物理独立性存在于概念模式和内模式之间的映射转换,说明物理组织发生变化时应用程序的独立程度。

  • 逻辑独立性

用户的应用程序,与数据库中的逻辑结构是相互独立的。当数据的逻辑结构改变时,应用程序不需要改变。

逻辑独立性存在于外模式和概念模式之间的映射转换,说明概念模式发生变化时应用程序的独立程度。

2. 数据库设计

数据库设计是指,针对一个给定的应用环境,提供一个确定最优数据模型与处理模式的逻辑设计 ,以及一个确定数据库存储结构和存取方法的物理设计 ,建立起能反映现实世界信息和信息联系及满足用户数据要求和加工要求,以及能被某个DBMS所接受,同时能实现系统目标并有效存取数据的数据库。

2.1 四个阶段

  • 需求分析

通过调查研究, 了解用户的数据和处理需求, 并按一定格式整理形成需求说明书、数据字典和数据流程图。

  • 概念设计(E-R图)

在需求分析阶段产生的需求说明书的基础上, 按照特定的方法将它们抽象为一个不依赖于任何DBMS的数据模型, 即概念模型. (如E-R模型)。

  • 逻辑设计

将概念模型转化为某个特定的DBMS上的逻辑模型(如关系型数据库、对象型数据库),并对所设计的逻辑模型进行优化.(发生在概要设计阶段;设计表包括所有细节—表名、字段、主外键等)

  • 物理设计

对给定的逻辑模型选取一个最适合应用环境的物理结构, 以确定数据库在物理设备上的存储结构和存取方法。

2.2 数据模型

  • 概念数据模型(实体-联系模型)

概念数据模型是按照用户的观点来对数据和信息建模,主要用于数据库设计。概念模型主要用实体—联系方法(Entity-Relationship Approach)表示,所以也称 E-R 模型

1)E-R图三要素:实体、属性、实体之间的联系。 联系有三种类型:一对一联系(1:1)、一对多联系(1:n)、多对多联系(m:n)。

2)ER图集成

集成方法:

  • 多个局部E-R图一次集成。

  • 逐步集成,用累加的方式一次集成两个局部E-R。

合并各个局部E-R图的冲突:

  • 属性冲突:包括属性域冲突和属性取值冲突。属性冲突理论上只要换成相同的属性就可以了,但实际上需要各部门协商,解决起来并不简单。

  • 命名冲突:包括同名异义和异名同义。

  • 结构冲突:包括同一对象在不同应用中具体有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同。

3)E-R图转关系模式

转换规则

  • 一个实体转换成一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码

  • 一个1:1联系可以转换为一个独立关系模式,也可以与任意一端实体的关系模型合并。

  • 一个1:n联系可以转换为1个独立的关系模式,也可以与n端实体对应的关系模式合并。

  • 一个m:n联系必须转换为1个独立的关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,关系模式的码为各实体码的组合。

  • 基本数据模型(机构数据模型)

3. 关系代数

  • 基本运算:选择、投影、笛卡尔积、集合并、集合差

  • 连接、结合交、除运算

4. 规范化理论(关系模式分解)

关系模型满足的确定约束条件称为范式,根据满足约束条件的级别不同,范式由低到高分为 1NF(第一范式)、2NF(第二范式)、3NF(第三范式)、BCNF(BC 范式)、4NF(第四范式) 等。不同的级别范式性质不同。

把一个低一级的关系模型分解为高一级关系模型的过程,称为关系模型的规范化。关系模型分解必须遵守两个准则。

  • 第一范式

1NF 是最低的规范化要求。如果关系 R 中所有属性的值域都是简单域,其元素(即属性)不可再分,是属性项而不是属性组,那么关系模型 R 是第一范式的。

  • 第二范式

如果一个关系 R 属于 1NF,且所有的非主属性都完全依赖于主属性,则称之为第二范式。

  • 第三范式

如果一个关系 R 属于 2NF,且每个非主属性不传递依赖于主属性。

  • BC 范式

如果一个关系 R 属于 3NF,且每个主属性间没有函数依赖关系。

5. 反规范化

数据库中的数据规范化的优点是减少了数据冗余,节约了存储空间,相应逻辑和物理的 I/O 次数减少,同时加快了增、删、改的速度,但是对完全规范的数据库查询,通常需要更多的连接操作,从而影响查询速度。 因此,有时为了提高某些查询或应用的性能而破坏规范规则,即反规范化(非规范化处理)。

反规范化技术包括:

  • 增加冗余列

增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作。

  • 增加派生列

增加派生列指增加的列可以通过表中其他数据计算生成。它的作用是在查询时减少计算量,从而加快查询速度。

  • 重新组表

重新组表指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。

  • 分割表

有时对表做分割可以提高性能,比如: 水平分割和垂直分割。

6. 事务管理

数据库系统运行的基本工作单位是事务,事务相当于操作系统中的进程,是用户定义的一个数据库操作序列,这些操作序列要么全做要么全不做,是一个不可分割的工作单位。事务具有以下特性:

  • 原子性(Atomicity):数据库的逻辑工作单位。

  • 一致性(Consistency):使数据库从一个一致性状态变到另一个一致性状态。

  • 隔离性(Isolation):不能被其他事务干扰。

  • 持续性(永久性)(Durability):一旦提交,改变就是永久性的。

并发控制:

在多用户共享系统中,许多事务可能同时对同一数据进行操作,此时数据库管理系统的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,同时避免用户得到不正确的数据。

数据库的并发操作带来的问题有:丢失更新问题、不一致分析问题(读过时的数据)、依赖于未提交更新的问题(读了“脏”数据)。这三个问题需要 DBMS 的并发控制子系统来解决。

处理并发控制的主要方法是采用封锁技术。它有两种类型:排他型封锁(X 封锁)和共享型封锁(S 封锁)。

封锁协议:

  • 一级封锁协议。事务 T 在修改数据 R 之前必须先对其加 X 锁,直到事务结束才释放。一级封锁协议可防止丢失修改,并保证事务 T 是可恢复的。但不能保证可重复读和不读“脏”数据。

  • 二级封锁协议。一级封锁协议加上事务 T 在读取数据 R 之前先对其加 S 锁,读完后即可释放 S 锁。二级封锁协议可防止丢失修改,还可防止读“脏”数据,但不能保证可重复读。

  • 三级封锁协议。一级封锁协议加上事务 T 在读取数据 R 之前先对其加 S 锁,直到事务结束才释放。三级封锁协议可防止丢失修改、防止读“脏”数据与防止数据重复读。

  • 两段锁协议。所有事务必须分两个阶段对数据项加锁和解锁。其中扩展阶段是在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;收缩阶段是在释放一个封锁之后,事务不能再申请和获得任何其他封锁。若并发执行的所有事务均遵守两段封锁协议,则对这些事务的任何并发调度策略都是可串行化的。遵守两段封锁协议的事务可能发生死锁

7. 备份和恢复

数据库中的数据一般都十分重要,不能丢失。事先制定一个合适的、可操作的备份和恢复计划至关重要。

数据备份分为:冷备份(静态备份,需要关闭服务)和热备份(动态备份,无需关闭服务)。

备份的方式:

  • 全量(完全)备份:备份所有数据。

  • 差量备份:仅备份上一次完全备份之后变化的数据。

  • 增量备份:备份上一次备份之后变化的数据。

数据恢复:

  • 事务中的错误:可通过RollBack 恢复为原先的数据。

  • 其他因素:通过备份数据进行恢复,但有可能造成部分数据丢失。

8. 分布式数据库

分布式数据库系统的模式结构有六个层次,如图 所示,实际的系统并非都具有这种结构。在这种结构中各级模式的层次清晰,可以概括和说明任何分布式数据库系统的概念和结构。

从整体上可以分为两大部分:下半部分是集中式数据库的模式结构,代表了各局部场地上局部数据库系统的基本结构;上半部分是分布式数据库系统增加的模式级别。

数据分片和透明性:

将数据分片,使数据存放的单位不是关系而是片段,这既有利于按照用户的需求较好地组织数据的分布,也有利于控制数据的冗余度。

分片的方式有多种,水平分片和垂直分片 是两种基本的分片方式,混合分片和导出分片 是较复杂的分片方式。

分布透明性 指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分配细节,也不必关心局部场地上数据库的数据模型。分布透明性包括:分片透明性、位置透明性和局部数据模型透明性

  • 分片透明性:是分布透明性的最高层次: 指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。

  • 位置透明性:是分布透明性的下一层次:用户或应用程序应当了解分片情况,但不必了解片段的存储场地。

  • 局部数据模型透明性:用户或应用程序应当了解分片及各片断存储的场地,但不必了解局部场地上使用的是何种数据模型。

9. 数据仓库(离线数据库)和数据挖掘

10. 数据库完整性

  • 实体完整性(主键中的任一属性不能为空)

  • 参照完整性(依赖其他关系模式的字段,通常是外键参照主键完整性)

  • 自定义完整性

  • 触发器(脚本约束)

关于作者:

犇叔,浙江大学计算机科学与技术专业,研究生毕业,而立有余。先后在华为、阿里巴巴和字节跳动,从事技术研发工作,资深研发专家。主要研究领域包括虚拟化、分布式技术和存储系统(包括CPU与计算、GPU异构计算、分布式块存储、分布式数据库等领域)、高性能RDMA网络协议和数据中心应用、Linux内核等方向。

专业方向爱好:数学、科学技术应用

关注犇叔,期望为您带来更多科研领域的知识和产业应用。

内容坚持原创,坚持干货有料。坚持长期创作,关注犇叔不迷路

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敩科炼技堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值