数据库
一. 三级模式
一个数据库可以有多个外模式,只能有一个内模式。
视图对应外模式、基本表对应模式、存储文件对应内模式
二. 两级映像
(1) 模式/内模式映像。存在于概念级和内部级之间,实现了概念模式和内模式之间的相互转换。
(2) 外模式/模式映像。存在于外部级和概念级之间,实现了外模式和概念模式之间的相互转换
三. 关系
1. 术语
关系 | 一个关系就是一张二维表,每个关系有一个关系名 |
元组 | 表中的一行即为一个元组,对应存储文件中的一个记录值 |
属性 | 表中的列称为属性,每一列有一个属性名。属性值相当于记录中的数据项或者字段值。 |
域 | 属性的取值范围(例如 sex 属性的取值范围为 男 或 女),即不同元组对同一个属性的值所限定的范围。例如,逻辑型属性只能从逻辑真(如T)或逻辑假(如F)两个值中取值。 |
关系模式 | 对关系的描述称为关系模式,由关系名和其属性集合构成,关系模式的格式为 关系名(属性名1,属性名2,…,属性名n)通常一个关系模式对应一个关系文件的结构。 |
候选码(或候选键) | 属性或属性组合,其值能够唯一地标识一个元组。 |
主码(或主键) | 在一个关系中可能有多个候选码,从中选择一个作为主码。 |
主属性 | 包含在任何候选码中诸属性称为主属性,不包含在任何候选码中诸属性称为非码属性。 |
外码(或外键) | 如果一个关系中的属性或属性组并非该关系的码,但它们是另外一个关系的码,则称其为该关系的外码。 |
全码 | 关系模式的所有属性组是这个关系模式的候选码,称为全码 |
超码(超键) | 一个包含码的属性集称为超码,例如学号是码,则(学号,姓名) 就是一个超码。 |
2 完整性约束
关系的描述称为关系模式,它可以形式化地表示为:R(U,D,dom,F)
其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。
通常简记为R(U)或R(A1,A2,...,An),其中R为关系名,U为属性名集合,A1、A2、...、An为各属性名。
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
1)关系模型中的关系数据结构
关系模型中数据的逻辑关系是一张二维表格。
2)关系模型中的关系操作集合
关系模型给出了关系操作的能力,但不对RDBMS(关系数据库管理系统)语言给出具体的语法要求。常用的关系操作有:选择、投影、连接、除、并、交、差等查询操作和增加、删除操作等。
早期的关系操作能力通常用代数方式或逻辑方式来表示,分别称为关系代数和关系演算。关系代数是用对关系的运算来表达查找要求的方式,关系演算是用谓词来表达查询要求的方式。关系演算又可按调词变元的基本对象是元组变量还是域变量,分为元组关系演算和域关系演算。
关系代数、元组关系演算和域关系演算3种语言在表达能力上是完全等价的。
3)关系模型中的关系完整性约束关系模型中的3个完整性规则如下:
实体完整性:关系中主码的值不能为空或部分为空。也就是说,主码中属性即主属性不能取空值。
参照完整性:如果关系R2的外码X与关系R1的主码相对应(基本关系R1和R2不一定是不同的关系,即它们可以是同一个关系),则外码X的每个值必须在关系R1中主码的值中找到,或者为空值。
用户定义的完整性:指用户对某一具体数据指定的约束条件进行检验。
员工(员工号,姓名,性别,参加工作时间,部门号)
部门(部门号,名称,电话,负责人)
选课(学号,课程号,年级)
举例:
实体完整性 员工号和部门号是主码,其值不能为空。学号和选课号为联合索引,他们的值都不能为空
参照完整性: 员工表中外码,部门号。在部门表中不能为空
3. 数学定义
(1)笛卡尔积
(2)关系
(3) 关系运算
四. 关系代数
1. 投影
选列
2. 选择
选行
3. 连接
关系代数是施加于关系之上的一组集合代数运算,每个运算都以一个或多个关系作为运算对象,并生成另外一个关系作为该关系运算的结果。关系代数包含传统的集合运算和专门的关系运算两类。
(1)θ连接
θ的值是 > ,<, >=, <= ,查找两个列满足这些运算关系的行
(2)等值连接
θ 的值是 "=",查找指定两个列的值相等的行
(3)自然连接(*)
- 找两个关系中相同的属性列
- 筛选相同属性列中值相同的元素
- 去除重复属性列
自然连接,关系 R 和 S 中 ,公共属性是 A 和 B
将 (R.A = S.A) 并且 (R.B = S.B) 中相同值 所在的行挑选出来
去除重复列,(R.A 、S.A) 和 (R.B 、 S.B) 列重复了,将 S.A 和 S.B 删除
自然连接,关系 R 和 S 中 ,公共属性是 A 、 B 和 C
将 (R.A = S.A) 并且 (R.B = S.B)并且 (R.C = S.C) 中相同值 所在的行挑选出来
去除重复列,(R.A 、S.A) 和 (R.B 、 S.B) 和 (R.C 、 S.C)列重复了,将 S.A 和 S.B 和 S.C 删除
五. SQL语言
1. 数据定意义语言(DDL)
CREATE DATABASE 数据库名
alert table table_name add clo1 integer
alert table table_name drop clo1drop table table_name
2. 数据库操作语言(DML)
insert into table_name(......) values (......)
delete from table_name where .....
update table_name set a=1 where b=1
授权语句
grant <权限> on table_name to user1
revoke update(sno) on table1 from user1
六 视图
create view 视图名
as select 查询子句
[where check option]drop view 视图名
索引
(1)通过创建唯一索引,可以保证数据记录的唯一性。
(2)可以大大加快数据的检索速度。
(3)可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。
(4)在使用 ORDER BY 和 GROUP BY 子句中进行检索数据时,可以显著减少查询中分组
和排序的时间。
(5)使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。
create <索引名> on table_name asc/dsc
索引属于数据库的内模式
七. 关系模式
定义 1:关系模式应当是一个五元组(含关系名)。R<U,D,dom,F>这里:
(1)R为关系名,它是符号化的元组语义;
(2)U为一组属性:
(3)属性组U中的属性来自域D;
(4)dom为属性到域的映射:
(5)F为属性组U上的一组数据依赖。
由于(3),(4)对模式设计关系不大,因此通常把关系模式看作是一个三元组:R<U,当且仅当U上的一个关系r满足F时,r称为关系模式R<U,F>的一个关系。
八. 函数依赖
数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间联系和约束的抽象,是数据内在的性质,是语义的体现。函数依赖则是一种最重要、
最基本的数据依赖。(1)函数依赖。设 R(U)是属性集 U上的关系模式,XY是 U的子集。若对 R(U)的任何一个可能的关系”,r中不可能存在两个元组在了上的属性值相等,而在上的属性值不等,则称工函数决定¥或Y函数依赖于,记作→Y。
(2)非平凡的函数依赖。如果X→,但 YEX,则称X→Y是非平凡的函数依赖。一般情况总是讨论非平凡的函数依赖。下,
(3)平凡的函数依赖。如果X→〖,但 X,则称→是平凡的函数依赖。(4)完全函数依赖。在 R(U)中,如果 X→Y,并且对于X的任何一个真子集 X'都有X'不
能决定 〗,则称¥对X完全函数依赖,记作X->Y。例如,给定一个学生选课关系 SC(Sno,Cno,G),可以得到F={(Sno,Cno)→G},对(Sno,Cno)中的任何一个真子集 Sno 或 Cno 都不能决定 G,所以,G 完全依赖于 Sno、Cno。(5)部分函数依赖。如果X→,但了不完全函数依赖于,则称了对X部分函数依赖,记作X_P→>Y。部分函数依赖也称为局部函数依赖。
(6)传递依赖。在 R(U.F中,如果X→Y,YX,→Z,则称Z对X传递依赖。
(7)码。设K为 R(U,F)中属性的组合,若 K→U,且对于 K的任何一个真子集 K'都有 K'不能决定 U,则K为R的候选码。若有多个候选码,则选一个作为主码。候选码通常也称为候选
关键字。(8)主属性和非主属性。包含在任何一个候选码中的属性称为主属性,否则称为非主属性(9)外码。若 R(U)中的属性或属性组X非R的码,但了是另一个关系的码,则称了为外码(10)函数依赖的公理系统(Ammstrong 公理系统)。设关系模式 R(U,F),其中U为属性集,F是U上的一组函数依赖,那么有以下推理规则。
1.包含
符号 | 说明 | 示例 |
---|---|---|
⊇ | 包含 | 123包含12 |
⊆ | 包含于 | 12包含于123 |
2. 依赖
X决定Y
Y依赖于X
非平凡函数依赖
平凡函数依赖
完全函数依赖
部分函数依赖
依赖传递
3. 码
候选码
K可以决定U
K的真子集 学号,只能决定 姓名,不能决定 课程号,课程名,成绩
K的真子集 课程号,只能决定 课程名,不能决定 学号,课程名,成绩
因此 K 为R的候选码
主属性和非主属性
主属性: 包含在候选码中的属性
非主属性:不包含在候选码中的属性
外码
如果一个关系中的一个属性(该属性不能是候选码)是另外一个关系中的主码则这个属性为外码。
推理
说明,已知关系R 的属性和依赖,通过求闭包的方式求出关系R的主键(主键通过关系可以退出关系R的所有属性)
八. 范式
1. 第一范式(1NF)
设R是一个关系模式,R属于第一范式当且仅当R中每一个属性A的值域只包含原子项,即不可分割的数据项。
1NF不能排除数据冗余和更新异常等问题,因为其中可能存在部分函数依赖。
2. 第二范式(2NF)
设R是一个关系模式,R 属于第二范式当且仅当 R 是 1NF,且每个非主属性都完全函数依赖于候选码。.
属于 2NF 的关系模式R也可能存在数据冗余和更新异常等问题,因为其中可能存在传递函数依赖。但不属于2NF的关系模式R会产生插入异常、删除异常和修改复杂等问题。
通过对表进行分解,达到符合第二范式的要求。
R1中 学号是候选码,非主属性 姓名,学院,院长为非主属性,完全依赖于候选码
R2中 课程号是候选码,非主属性 课程名 完全依赖于候选码
R2中 (学号,课程号)是候选码,非主属性 成绩 完全依赖于候选码
3. 第三范式(3NF)
设R是一个关系模式,R属于第三范式当且仅当R是2NF,且每个非主属性都非传递函数依赖于候选码。
一个不属于3NF的关系模式R会产生插入异常、删除异常和修改复杂等问题。属于3NF的关系模式R可能存在主属性对码的部分依赖和传递依赖。
4. BC范式
既不存在非主属性对候选码的部分函数依赖或传递函数依赖,
也不存在主属性对候选码的部分函数依赖或传递函数
设R是一个关系模式,F是它的依赖集,R属于BCNF, 当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。
由BCNF的定义可以得到结论,一个满足BCNF的关系模式有:
所有非主属性对每一个码都是完全函数依赖。
所有的主属性对每一个不包含它的码,也是完全函数依赖。
没有任何属性完全函数依赖于非码的任何一组属性。
一个满足BCNF的关系模式R已消除了插入和删除异常。
九. 关系分解
无损链接&保持函数依赖分解
九. 数据库设计
需求调查所得到的数据可能是零碎的、局部的,分析师和设计人员必须进一步分析和表达用
户的需求,建立需求说明文档、数据字典和数据流程图(简称:数据流图)。将需求调查文档化,文档既要被用户所
理解,又要方便数据库的概念结构设计。
需求分析阶段的成果是系统需求说明书,主要包括数据流图、数据字典、需求说明文档、各种说明性表格、统计输出表和系统功能结构图等。系统需求说明书是以后设计、开发、测试和验收等过程的重要依据。
十. ER 图
家属存在的前提是职工存在,如果职工不存在,家属自然也不存在
十一. 事务管理