第三章数据库系统

发布时间 2023-03-22 21:13:04作者: 记录学习Blog

第三章数据库系统

第一节、三级模式

image-20230320185718872

image-20230320185748568

ER图这里ER图下午会考大题15分

1、三级模式两层映射

三级模式:

外模式(视图级别):用户模式 用户和应用程序打交道,让用户操作数据库这样的东西,但只能看到接口。操作数据的逻辑,不需要管如何存储

【模式】概念模式(表级):存储模式,物理层,如何存储。一般情况下形成的是表结构。

内模式(文件级)

两层映射:

位模式和模式的映射

模式与内模式的映射

这两层映射的好处是:让程序与我们的数据分离

数据的独立性

数据的物理独立性和数据的逻辑独立性

数据在物理结构上发生了变化,因为我们有两层映射,这个时候不需要去修改上层的结构。对用户来说他们不知道已经发生了改变

当逻辑结构改变的时候,只需要改变位模式和模式的映射就可以了

2、数据库设计过程

数据流图也是下午一个大概15分的题,表明了数据从哪来到哪去的

数据字典是对数据流图的一个补充说明。

需求分析 产出:需求说明书、数据字典、需求说明书

概念结构设计 产出:ER模型

逻辑结构设计 产出:ER模型转化为关系模式,就开始设计相应的表

第二节 ER模型

3、ER模型

image-20230320192604870

表示形式:

长方形 实体 /椭圆形 属性/菱形 联系

image-20230320193104535

1:1联系

联系是产生于两个实体之间

对于1:1联系,我们使用两个关系模式就可以将其表示清楚

对于1:1的联系,可以并入到任何一端

1:n联系

image-20230320193239690

一个客户有多个账户,一个账户对应多个客户

m:n联系

image-20230320193408042

一个学生对应多门课程,一门课程对应多个学生

第三节关系代数

4、关系代数

并、交、差、笛卡尔积、投影、选择、联结

image-20230321152144043

差主要要注意以谁为参照

做笛卡尔积 S1×S2

image-20230321152242753

自然联结:去掉重复的部分

做完笛卡尔积之后,先做选择,选择出来行,然后再做投影,能够更简化操作。

第四节规范化理论

5、规范化理论

image-20230321155701101

数据冗余:一些重复的信息。可以引起后面的三种异常

修改异常

插入异常

删除异常

解决方法:拆分表结构

image-20230321160023400

部分函数依赖 : 候选码中的部分可以推导出非主体

传递函数依赖:a推出b,b推出c。推出a推c。有一个传递关系

5、规范化理论 键

候选键 :唯一标识元组(记录),且没有冗余

主键:任选一个,从任选键里面随便选一个

外键:其他关系的主键

5、规范化理论 求候选键

image-20230321160742907

寻找入度为0的结点,并且可以遍历图中所有结点

image-20230321163148262

image-20230321163407419

5、规范化理论 范式

image-20230321163541171

将教授和副教授单独作为属性

(学号A,课程号B)=>成绩 C

(课程号B)=>学分D

有非主属性 D部分依赖于主属性B,所以不满足第二范式。(需要没有部分函数依赖)

解决:拆分

学生表(学号,课程号,成绩)

课程(课程号,学分)

第三范式在第二范式的基础上去掉了传递函数依赖

image-20230321211109271

学号=>姓名 学号=>系号

系号=>系名 系号=>系位置

学号=>系名

解决办法:拆表

(学号 姓名 系号)

(系号 系名 系位置)

image-20230321211525437

每个依赖的决定因素中必定包含某个候选码

image-20230321211624133

6、规范化理论 模式分解

image-20230321212224615

image-20230321212316047

image-20230321212404680

image-20230321212657841

image-20230321212903926

如果有一行属性上面全部都是打钩的就说明是无损分解

公式法只适用于两个关系模式,这样才适用于公式法

两个关系模式做交集,能够推导出他们的差

image-20230321213629998

第一个

image-20230321213602077

第二个

image-20230321213543660

第五节SQL语言

7、SQL语言 建表

image-20230321213725178

image-20230322085203582

7、SQL语言 修改与删除表

image-20230322085250607

7、SQL语言 查询

image-20230322085354472

7、SQL语言 增删改

image-20230322085531599

drop 和 delete

1、触发条件不同

delete语句是数据库操作语言(dml),这个操作会放到rollbacksegement中,在事务提交后生效,执行时触发相应的trigger。

drop是数据库定义语言(ddl),操作立即生效,原数据不放到rollbacksegment中,不能回滚,操作不触发trigger。

2、用法不同

delete只删除内容、释放空间但不删除定义,而delete即可以对行数据进行删除,也可以对整表数据进行删除。

drop是删除内容和定义,并释放空间。执行drop语句,将使此表的结构一起删除。

3、执行速度不同

drop的执行速度大于delete。

delete的执行速度小于drop。

8、并发控制

image-20230322090016852

image-20230322090307012

image-20230322092402357