系统分析师:四、数据库系统

文章介绍了数据库的三级模式和两层映射原理,强调了逻辑独立性和物理独立性的概念。接着,详细阐述了数据库设计的四个步骤,以及ER模型在概念设计中的应用。关系代数的概念如并、交、差和选择等也被提及。此外,文章讨论了规范化理论,包括函数依赖、键和不同范式的重要性,以及如何通过模式分解解决存储异常。并发控制的部分提到了面临的挑战和封锁协议。最后,简要提到了数据库安全和备份策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、数据库模式

二、数据库设计     

三、ER模型

四、关系代数

五、规范化理论

5.1 函数依赖

5.2 键

5.3 价值与用途

5.4 范式

5.5 模式分解

六、并发控制

6.1 面临的问题

6.2 封锁协议

七、数据库安全

 八、数据库备份


一、数据库模式

       数据库有三级模式,两层映射。三级模式分别是外模式(也称子模式或用户模式)、概念模式(也称模式或逻辑模式)、内模式(也称物理模式或存储模式)。具体如下:

         两个映射可以保证逻辑独立性和物理独立性,即使物理结构或逻辑结构发生变化,应用程序不需要改变,因为应用程序查出的数据是视图,只需要将映射关系调整即可。

        注意:内模式就是查看存储文件,不是数据库表!三个模式对应的结构分别是:视图->基本表->存储文件。

二、数据库设计     

数据设计包括:需求分析、概念设计、逻辑设计、物理设计这4个步骤。具体如下:

       需求分析:需要确定系统边界、数据特征、数据量估计,输出物有:数据流图、数据字典、需求说明书。

        概念设计:需要在需求说明书的基础上抽象出概念模型(ER模型)。

        逻辑设计:将概念模型转化为某个特定的DBMS上的逻辑模型。

        物理设计:对给定的逻辑模型选取合适的物理结构,即数据库在物理设备上的存储结构和存取方法。

三、ER模型

        ER模型的实体关系主要有一对一、一对多、多对多关系。

        ER模型主要是概念设计的产物,具体建模步骤如下:         

        基本上一个实体对应数据库的一张表,若要归并实体(表),则一对一和一对多的实体表是可以归并的,而多对多是无法归并的。

四、关系代数

      关系主要有:并(∪)、交(∩)、差(-)、笛卡尔积(×)、投影(π)、选择、连接、除。  

交:取两个集合相同的部分。

并:取都出现在两个集合的部分(去重)。

差:被减集合中去除另一集合相同部门后剩下的部分。

笛卡尔积:将后一个集合的所有数据循环拼接到前一个集合的每一行数据后面。

投影:相当于SQL中的selet列名,只打印出投影出的列。

选择:相当于SQL中的where条件,只打印出符合条件的行。

连接:将匹配上的记录拼接起来。其中自然连接则取相同列取值相等的元组匹配拼接。

 

除:结果集合除数做笛卡尔积的结果都应该在被除数中。

五、规范化理论

5.1 函数依赖

        函数依赖有部分函数依赖和传递依赖。具体如下: ​​

         AB共同决定C,具体示例为:A为学号、B为课程、C为姓名。虽然A和B能决定C,但单独一个A也能决定C,这个是部分函数依赖。

        A决定B,B决定C,推出A决定C。具体示例为:A为商品编号、B为商品型号,C为价格。

5.2 键

超键:唯一标识元组的键,可以是多个列(属性)组成,也可以有冗余列(属性)。

候选键:去除超键中的冗余属性局势候选键,能唯一标识元组的键。

主键:多个候选键中任选一个就是主键。

外键:其它关系的主键。

比如 学号、姓名、性别、身份证号、年龄。超键可以是(学号,姓名)、(身份证号,年龄)。候选键可以是:学号、身份证号。主键可以是身份证号。

5.3 价值与用途

        非规范化的关系模式,可能存在问题有:数据冗余、更新异常、插入异常、删除异常。

        比如上面这个表,数据冗余多,有DNO、DNAME、LOCATION有冗余,会有大量重复数据。

5.4 范式

        码:能确定一行记录的一个或多个属性,也可以理解为超键,范式定义里通常情况下理解为候选码(候选键)。

        主码:主键,候选码中选一个就是主码(主键)。

        主属性:构成候选码的属性都叫主属性。

        非主属性:除主属性之外的属性。

        第一范式:属性值都是不可再分割原子值。比如高级职称人数属性,它还被分割成教授和副教授人数(比如数据库存值[8,9]分别表示教授和副教授人数为8和9),违背了第一范式。

        第二范式:满足1NF(第一范式)后,每个非主属性完全依赖码(不存在部分依赖)。比如有(学号,课程号,成绩,学分)这4个字段组成的表,由于主键(码)是(学号,课程号),但课程号可以直接决定学分,存在部分依赖,违背了第二范式。

        第三范式:满足2NF时,非键属性不传递依赖于候选键(码)。比如(学号,身份证号,姓名,部门号,部门名称,部门位置),其中学号和身份证号为候选键,学号为主键,虽然它们满足了1NF和2NF,但由于有【学号/身份证号->部门号->部门位置/部门名称,部门号≠>学号/身份证号】的传递依赖,因此违背了第三范式。

        BC范式:满足1NF时,每个属性都不部分依赖于候选键也不传递依赖于候选键。比如(学号,身份证号,课程号,分数),其中候选码为(学号,课程号)或(身份证号,课程号),在这里主属性身份证号部分依赖于候选码(学号,课程号),违背了BC范式。

5.5 模式分解

        为了解决关系模式的存储异常等问题,可以通过分解关系模式来解决问题,即将一个关系分解成几个子关系(一个大表分解成几个小表)。

        若拆分出的子关系(小表)能通过连接投影等操作还原成大关系模式(大表),则为无损分解,若不能还原则为有损拆分。

        比如:原关系模式为 成绩关系(学号,姓名,课程号,课程名,分数),有函数依赖:学号->姓名,课程号->课程名,(学号,课程号)->分数。

        可以无损分解成:成绩(学号,课程号,分数),学生(学号,姓名),课程(课程号,课程名)。

        因为学号->姓名。所以成绩表可以变成(学号,课程号,分数,姓名)。

        因为课程号->课程名。所以成绩表可以变成(学号,课程号,分数,姓名,课程名),能还原成原关系模式。

六、并发控制

        总体概念如下:

6.1 面临的问题

        丢失更新:两个事务读取同一个数据,后更新的事务会将前提交事务的结果覆盖。导致最后的结果与预期运算的结果不一致。

        不可重复读:多个事务都在读取或修改数据,一个事务读取到了另一个事务修改后的结果,导致事务两个读取相同的数据的值不一样。

        读脏数据:一个事务读取到了另一事务回滚前的更新数据。

6.2 封锁协议

        X锁:排他锁,也叫写锁,数据被加了X锁后,不能被加X锁和S锁,加了X锁或S锁的数据不能再被加X锁。

        S锁:共享锁,也叫读锁,同一数据可被加多个S锁,但加了S锁的数据不能加X锁。

七、数据库安全

 八、数据库备份

 注意,差量备份是对完全备份的变动,增量是记录上次备份后的变动。比如一周七天备份策略是:完全(周日)、增量、增量、增量、差量(周四)、增量、增量(周六)。这样一旦周五数据有问题,需要恢复,则只需要 周日的完全备份+周四的差量备份+周五的增量备份 就可以恢复数据了,不需要每天的增量备份去运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

龙行天下_LXTX

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

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

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

打赏作者

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

抵扣说明:

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

余额充值