数据库原理

2020-08-21  本文已影响0人  jun123123

数据库

第一章

三种数据管理技术和优缺点

数据模型

客观对象的抽象过程:

概念模型

实体-联系法

实体-联系图/E-R图

实体矩形,属性椭圆、联系菱形,实体和属性之间用无向边连接,

1.png

数据模型组成(三要素记住)

数据结构

描述数据库的组成对象以及对象之间的联系,是对系统静态特性的描述

内容:与对象的类型内容性质有关,也与数据之间的联系有关

数据操作

对数据库中对象和实例的操作集合,增删查改,是对系统动态特性的描述

完整性约束条件

一组完整性规则的集合

完整性规则:给定数据模型中数据及其联系所具有的制约和依存规则,用于限制数据模型的状态及状态变化,以保证数据的正确、有效和相容。

常用的数据模型

层次模型和网状模型称为非关系模型,关系模型、面向对象关系模型、对象关系数据模型、半结构化数据模型

层次模型

是用树形结构来表示实体以及实体之间的联系,满足以下两个条件的基本层次结构的集合称为层次模型

层次模型的术语

特点:双亲结点是唯一的;只能直接处理一对多的实体联系;每个记录类型可以定义一个排序字段(码字段);任何记录值只有按其路径查看才能显出它的全部意义;没有一个子女记录能脱离双亲记录值而独立存在。

完整性约束:

优点:

缺点:

网状模型

满足以下条件:

层次模型是网状模型的一个特例,网状模型中父子节点的联系可以不唯一,要为每个联系命名并指出与该联系有关的父子节点

优点:

缺点:

关系模型

逻辑结构是一个二维表,由行和列组成

关系模型的规范:

2.png

优点:

缺点:

数据库系统的结构

模式:schema,是型的描述,反应的是数据的结构和联系,是静态的

实例:instance,模式的具体值,是某一时刻的状态,是动态的,一个模式可以有多个实例

三级模式

二级=映像功能与数据独立性

数据的逻辑独立性

应用程序(外模式)与数据库的逻辑结构(模式)是相互独立的,即数据的逻辑结构发生改变,应用程序不用改变

外模式/模式映象定义了外模式与模式之间的对应关系,当模式改变时,只需修改外模式/模式映象,使外模式保持不变,而应用程序时是根据外模式编写的,因次不需要修改外部程序,保证了数据与程序的逻辑独立性

数据的物理独立性

应用程序(外模式)与存储在磁盘上的数据库(文件)中的存储结构(内模式)是相互独立的。数据文件的组织方式改变不需要修改应用程序

模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对于关系,当存储结构改变,只需修改模式/内模式映象,使模式保持不变。同样不需要修改应用程序,保证了数据与程序的物理独立性

第二章

关系数据结构及形式化定义

关系的6个性质:

几个概念:

3.png

关系操作

4.png

关系的完整性

关系代数

以集合为基础,定义一组运算,由已知关系经过一系列运行,得到需要的查询结果,关系代数是过程化的查询语言

关系代数继承传统的集合运算:交、并、差、广义笛卡尔积。其中交并差要求参与运算的两个关系要由相同的结构。

专门的关系运算:

选择

\sigma_F(R)=\{t|t\in R\bigwedge F(t)=true\}

其中F是条件,一般为一个逻辑表达式

投影

从R中选择出若干属性组成新的关系
\pi_A(R)=\{t[A]|t\in R\}

其中A为要取出的R中的列的集合

注:投影之后不仅取消了原关系中的某些列,还可能取消某些行(避免重复行)

连接

5.png

同样需要取消重复列

两种常用的连接运算

几种特殊的自然连接:

象集

6.png

除法

假设R=(X,Y),S=(Y,Z),X,Y,Z是属性组,求R\div S\\ 若T=\pi_Y(S)\in V=Z_{x_i}(R)\\ 注:这里的Z是象集,不是上面的属性组\\ 则在结果中加入x_i元组\\ 即,R\div S=\{x|\pi_Y(S)\in Z_{x_i}(R)\}

整除,类似取样性质,需要取样时会用到除法

7.png

对于共同属性的判断,是域相同而不是属性名相同,但通常是指公共属性

各类符号

8.png

关系演算

9.png

看PPT

SQL

在mysql中,create database和create schema是等价的

一些sql关键字:

10.png

索引

11.png 12.png

自身连接

select a.con, b.conp from course a,course b;取别名

13.png

嵌套查询中子查询不能使用order by语句

14.png

子查询时,子查询语句要放在等号后面

相关子查询:子查询的条件与父查询当前值相关。相关子查询如果子查询和父查询是对同一个数据库操作,必须使用别名。如果是不相关子查询也可以不用别名。

集函数不能出现在where字句中,只能在select字句和having短句中。集函数不能嵌套。

15.png

from语句后的表也可以是子查询,但必须使用别名

数据更新时会检查完整性规则:

视图view

和表操作基本一致,但是view不占用实际存储空间,而是在使用时从表中获取临时数据集,视图对应外模式。

视图的作用:
简化用户操作,使多用户从多个角度看待同一数据,保证数据的逻辑独立性,提供数据保密

数据完整性

三个要求:

实体完整性

定义

检查

DBMS检查:

参照完整性

定义

检查

处理:

附表操作:拒绝

主表操作:拒绝/级连删除/附表中对应外码设空

用户定义完整性

属性约束

定义

表声明列定义时添加的约束:

检查和处理

拒绝

元组约束

定义

表声明列定义时使用CHECK语句建立,可以设置同一组不同属性之间的约束

检查和处理

拒绝

完整性约束命名字句

定义

constraint <约束名> <约束条件>

约束条件包括:

修改

alter table <table.name> (drop/add) constraint <constraint.name>

断言

create assertion语句创建断言

create assertion <assertion.name> <条件>

对断言中涉及的关系进行操作都会触发断言,不能通过断言的操作都会被拒绝

触发器

定义

create trigger <触发器名>

{before/after} <触发事件> on <表名>

referencing new/old row as <变量>

for each {row/statement}

[when <触发条件>]<触发动作体>

触发器又叫:事件-条件-动作;触发器只能定义在基本表上,不能定义在视图上;基本表数据发生变化时,将激活定义在该表上相应的触发器

before/after指定触发动作执行的时间;触发事件是insert\delete\update或者他们的组合,或update of <列名,...>指定触发列;row/statement指定触发器级别,语句级触发器每条语句最多触发一次,行级触发器每行最多触发一次

关系数据理论

数据依赖

一个关系内部属性与属性之间的一种约束关系,是现实世界属性间相互联系的抽象,是数据的内在性质,是语义的体现。

规范化

函数依赖

由一个属性可以唯一确定另一个属性,称为函数依赖(类似函数关系)。如学号可以唯一确定姓名。

通过依赖将模式分解。

16.png

平凡函数依赖与非平凡函数依赖

17.png

若X->Y,则称X为这个函数依赖的决定因素

18.png 19.png

范式

21.png

第一范式

表项不可再分

第二范式

每个表都有主码

任何一个非主属性,都完全依赖于候选码

例如主码(学号,课程号),非主属性(成绩,姓名),其中非主属性姓名不是主码的完全依赖(只依赖于学号),那么该关系不属于第二范式

尽量让主码为单一字段

将不符合第二范式的模式分解,使其符合第二范式

22.png

第三范式

不存在非主属性之间的传递依赖

BCNF

只有候选码能决定属性组

上一篇 下一篇

猜你喜欢

热点阅读