第一章
四个基本概念:
数据
数据的含义称为数据的语义,数据与其语义是不可分的
DB 数据库
长期储存在计算机内、有组织的、可共享的大量数据的集合
DBMS 数据库管理系统
是DBS的核心,是计算机的基础软件
DBS数据库系统
是计算机引入了数据库后构成的系统
组成:DB,DBMS,应用开发工具,应用程序,DBA(数据库管理员)
处于操作系统和应用开发工具之间
发展历史
人工管理阶段
应用背景:科学计算
硬件背景:没有直接存取存储设备
软件背景:没有操作系统
数据处理方式:批处理
文件系统阶段
应用背景:科学计算,数据管理
硬件背景:磁盘,磁鼓
软件背景:有文件系统
数据处理方式:联机实时处理,批处理
优点:
1.数据可以长期储存
2.由文件系统管理数据
数据库系统阶段
应用背景:大规模数据管理
硬件背景:大容量磁盘,磁盘阵列
软件背景:有DBMS
数据处理方式:联机实时处理,分布处理,批处理
优点:
1.共享性高,冗余度小
2.具有较高的物理独立性和一定的逻辑独立性
3.数据结构化
4.DBMS提供控制(上面两个阶段都是应用程序自己控制)
数据库特点
1.数据结构化
2.共享性高,冗余度低且易扩充
3.数据独立性高(是二级映象功能的保证)
物理独立:应用程序与数据的物理存储相互独立
逻辑独立:应用程序与数据库的逻辑结构相互独立
4.由DBMS统一管理和控制
数据模型
数据模型是数据库系统的核心和基础
第一类:概念模型(信息世界)
按用户的观点来对数据和信息进行建模
实体内部的联系通常是组成实体各属性间的联系;
实体之间的联系通常指不同实体集之间的联系;
表示方法:E-R图(实体-联系方法)
第二类:逻辑模型和物理模型(机器世界)
逻辑模型
按计算机系统的观点对数据建模
数据模型
由数据结构,数据操作,数据的完整性约束条件组成
层次模型
一对多(像树形结构)
优点:简单清晰;查询效率高;提供了良好的完整性支持
网状模型
(典型代表DBTG系统,亦称CODASYL系统)
多对多
优点:直接描述现实世界;存取效率高;
缺点:结构复杂;ddl和dml复杂;通过存取路径实现,加重了编写负担
关系模型
E.F.Codd提出(1981活得acm图灵奖)
关系的完整性约束:
实体完整性,参照完整性,用户定义完整性
优点:建立在严格的数学概念基础之上;概念单一;存取路径透明
物理模型
数据在系统内部的表示方式和存取方式
模式
不涉及具体的值,所以模式稳定,但实例相对变动
是数据库全体数据的逻辑结构和特征的描述,一个数据库只有一个模式
外模式(子模式或者用户模式)是局部数据的逻辑结构和特征的描述,是用户的数据视图;一个数据库可以有多格外模式,但只能有一个内模式(一个应用程序只能使用一个外模式)外模式是保证数据库安全性的有力措施
内模式(储存模式)是物理结构和存储方式的描述,是数据库内部的组织方式
三层模式,两级映像
模式改变时,可以通过改变映象,使上层模式不变
外模式/模式映像改变外模式保持不变,这就是数据的__逻辑独立性__
内模式/模式映像改变,模式不变,这就是数据的__物理独立性__
(就是上层使用底层,DBMS使用OS)
第二章
(这章好不容易写完了,我就切了个屏竟然给我退出去了,还没保存,草稿自动保存是写着玩的吗,生气)
关系
一个关系有多个候选码(某一属性组能唯一标识一个元组,而其子集不能),选定其中一个为主码
性质:
- 列是同质的,每一列中的分量都是同一数据类型,来自同一个域
- 不同的列可出自同一个域
- 行列的顺序都无所谓
- 任两个元组都不能取同样的候选码
- 分量必须取原子值
关系完整性
实体完整性
一个表内部,主属性不为空
primary key
参照完整性
两张表之间相互引用相互约束,就是外码(取空值或s中某个元组的主属性)
foreign key
用户定义完整性
反映某一具体应用所涉及数据必须满足的语义要求
check(),assertion
关系代数
基本关系操作:选择,投影,并,差,笛卡尔积
专门的关系运算:
选择:
查询student表中年龄小于二十的元组(行)
投影:
取列,自动去重
连接:
自然连接去重(重复列)
外连接就是把被舍弃的元组也加进来(称为悬浮元组)
除运算:
简单来说就是把R中含有和S中一样的象集(此处为B,C)的行取不是象集的列(好绕啊)
第三章
语法
tips:对表用drop,对数据用delete
只有表和索引可以用alter别的不行
restrict:删除时不能有其他表的约束
cascade:删除时相关依赖一起删除
_索引_是物理模型
ASC升序可省,DESC降序不可省
数据查询
groupby里面用having
distinct 表示去重,默认为ALL,保留重复行
多个条件用AND连接
字符匹配
(LIKE ‘…’)
_:表示任意单个字符
%:表示任意多个字符
escape\某符号:表示\为转码字符,后面的符号视为普通字符
聚集函数
连接查询
自然连接
注意
select xxx.cno,… FROM xxx,yyy
WHERE xxx.cno=yyy.cno
自身连接
自身连接注意from
eg.
from Course FIRST,Course SECOND
WHERE FIRST.CNO=SECOND.CPNO
外连接
FROM Student LEFT OUTER JOIN SC ON (条件表达式)
这里的on可以换成using,就能去重
第六章
数据依赖
x确定,就确定唯一的y
是完整性约束的一种表现,是数据内在的性质,是语义的体现
类型:函数依赖,多值依赖,连接依赖
会导致数据的冗余,更新异常,插入和删除异常
规范化
超码:K推出U(U完全依赖K),K为超码(候选码是一类特殊的超码
全码:整个属性组都是码(候选码)
范式
1NF:所有属性不可分
问题:插入异常,删除异常,数据冗余
2NF:每一个非主属性都完全依赖于R的(消除非主属性部分依赖)
问题;以上问题皆未解决
3NF:不存在x,y,z,使x推y,y推z,但x不能推出z,即不存在非主属性部分依赖和传递依赖(消除非主属性传递依赖)
BCNF:每个函数依赖x->y,x不属于y,都有x包含码。
如下例,
eg. T->J; (S,J)->T; (S,T)->J
则STJ(S,T,J)属于3NF
ST(S,T)和SJ(S,J)属于BCNF
消除了主属性的部分依赖和传递依赖
Armstrong公理
- 自反律:x属于y属于u,则f包含x->y
- 增广律:若x->y,则xz->yz
- 传递律:若x->y,y->z,则x->z
规则推理:
- 合并规则:x->y,x->z,则x->yz
- 伪传递规则:x->y,wy->z,则xw->z
- 分解规则:x->y,y属于z,有x->z
Armstrong公理具有有效性(F由公理推导出的都在F+内)和完备性(f+内的都是F由公理推导出的
依赖的闭包
X->Y,能由F根据Armstrong公理导出的充分必要条件是X+F属于Y
例题:
X0取全在左边的,它就是关键字(经验方法)
最小依赖(最小覆盖):
(1) F中任一函数依赖的右部仅含一个属性
(2) F中不存在,X->A,使F与F-{X-A}等价(F中的函数依赖不能有函数中的其他依赖推出
(3) F中不存在A->A,x有真子集Z使F-{X->A}U{Z->A}(F中的依赖左部均为最小属性集)
最小依赖求法:
eg.F=(A->BD,AB->C,C->D)
第一步:右边化单一
A推出BD化成A推出B和A推出D
第二部:去冗余
A推出B且AB推出C,所以A推出C
把AB推出C换成A推出C
又A推出C,且C推出D,所以把A推出D去掉
得出F=(A->B,A->C,C->D)
模式分解
三种定义(准则):具有无损连接性(数据等价),保持函数依赖(语义等价),即要无损连接性又要保持函数依赖
无损连接性的判断算法
表格的行是R,列是属性,如果R中存在这个属性,就填ai,如果没有则bij,然后通过F推,看看能不能把一行补全(补到全是a),若能,则无损连接。
当分解仅由两个模式组成:
U1并U2->U1-U2(U1有而U2没有或者U2有但U1没有,谁在前不重要)∈F+