目录
[第一章 绪论](#第一章 绪论)
[1. 数据库的4个基本概念](#1. 数据库的4个基本概念)
[第二章 关系数据库](#第二章 关系数据库)
[第三章 关系数据库标准语言](#第三章 关系数据库标准语言)
[第四章 数据库安全性](#第四章 数据库安全性)
[5、收回授权: 收回 REVOKEREVOKE](#5、收回授权: 收回 REVOKEREVOKE)
[第五章 数据库完整性](#第五章 数据库完整性)
[第六章 关系数据理论](#第六章 关系数据理论)
[第七章 数据库设计](#第七章 数据库设计)
第一章 绪论
一.数据库的基本概念
1. 数据库的4个基本概念
数据:描述事物的符号,数据库中存储的基本对象
数据库 :长期存储在计算机内的、有组织的、可共享的大量数据的集合
数据库管理系统 DBMS: 位于用户与操作系统之间的一层数据管理软件
数据库系统 : 由数据库、数据库管理系统、应用程序和数据库管理员 (DBA) 组成
2、数据库系统的特点
① 数据结构化
② 数据的共享性高,冗余度低而且容易扩充③ 数据独立性高:物理独立性 (应用程序与物理存储相互独立,数据的物理存储改变,应用程序不改变),逻辑独立性 (应用程序与逻辑结构相互独立,数据的逻辑结构改变,应用程序不改变)
④ 数据由数据库管理系统统一管理和控制
二.数据库和文件
在日常生活中,我们会使用很多的软件,那么,大家思考一下,这些软件中最主要的是什么呢?是数据。这些软件中的数据的存储需要数据库,但是,我们之前学过的文件的知识点中提到,文件也可以存储数据,那么为什么不用文件来存储呢?
一般的文件确实提供了数据的存储功能,但是文件没有提供非常好的数据(内容)管理能力(用户角度),文件只是把数据存储起来,如果要增加,查找数据,那么在文件中操作会很不方便
文件保存数据的缺点:
1.文件的安全性问题
2.文件不利于数据查询和管理
3.文件不利于存储海量数据
4.文件在程序中控制不方便
数据库本质:对数据内容存储的一套解决方案,你给我(数据库/mysqld)字段或者要求,我给你结果就行

数据库定义的某一种提供数据存储能力的一种文件,有自己内部的格式
数据库存储介质:磁盘,内存
三.数据模型
数据模型是对现实世界的模拟,是数据库系统的核心和基础
数据模型的组成要素:数据结构、数据操作、数据的完整性约束条件数据模型是严格定义的一组概念的集合,需要精确描述系统的静态特性、动态特性和完整性约束条件因此数据模型由以下三个部分组成:
① 数据结构:描述系统的静态特性→描述数据库的组成对象以及对象之间的联系
②数据操作:描述系统的动态特性→是对数据库中各种对象的实例所允许的操作的集合,其类型有查询和更新(增删改)
③ 数据的完整性约束条件:用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效与相容,完整性约束条件是一组完整性规则的集合
数据模型
***数据模型包括概念模型 (信息模型)和逻辑模型/物理模型
1.概念模型
按用户的观点建模,用于数据库设计,表示方法有 E-R模型逻辑模型按计算机的观点建模

2.逻辑模型(物理模型)
描述数据在系统内部(或磁盘或磁带)的表示方式和存取方式
2.1关系模型
二维表
|---------|----|----|----|-----|------|
| 学号 | 姓名 | 年龄 | 性别 | 系名 | 年级 |
| 2013004 | 小明 | 19 | 男 | 社会学 | 2013 |
| 2013006 | 大华 | 20 | 男 | 法学 | 2013 |
关系:一个关系对应通常说的是一张表。如上图的学生登记表
元组:表里的一行是一个元组。
属性:表里的一列是一个属性,给每一个属性起一个名称就是属性名。上图有六个属性
域:一组具有相同数据类型的值的集合。上图的性别的域是(男,女)
分量:元组中的一个属性值
关系模式:关系名(属性1,属性2,属性3...) 学生(学号,姓名,年龄,性别,系名,年级)
四.数据库系统的三级模式结构:
1.型和值的区别:
举个例子,
记录型:学生(学号,姓名,性别,系别,年龄,籍贯)
记录值:(2013006,小明,男,计算机系,19,江苏南京)
2.外模式、模式 (逻辑模式)、内模式
外模式(子模式/用户模式) :数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,数据库用户的数据视图,是与某应用有关的数据的逻辑表示,不同的应用程序有时可以共用同一个外模式,外模式是模式的子集
模式 (逻辑模式):数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,只涉及型而与值无关,一个数据库只有一个模式
内模式 (存储模式):数据物理结构和存储方法的描述,是数据在数据库内部的组织方式,一个数据库只有一个内模式

五数据库的二级映像功能与数据独立性
数据库系统的三级模式是对数据进行抽象的三个级别
外模式/模式映像
保证了数据的逻辑独立性当模式改变时,对外模式/模式的映像做出改变,保证外模式不变,应用程序由外模式编写,从而应用程序不变
模式/内模式映像(唯一的)
保证了数据的物理独立性当数据库的存储结构改变时,对模式/内模式映像做出改变,使模式不变,进而应用程序不变
第二章 关系数据库
关系模式是对关系的描述,关系模式是型,关系是值
一.关系的基本概念
笛卡尔积:D={() ()},一个记录叫做一个元组,元组中的每一个属性值叫一个分量
基数:域的元素个数
A={a,b} B={0,1,2} 两个集合的笛卡尔积为{(a,0)(a,1)(a,2)(b,0)(b,1)(b,2)}
候选码:某一属性组的值能唯一标识一个元组,而它的子集不能,这个属性组为候选码
在学生关系中,学号可以唯一标识一个学生,班级+姓名也可以,那么就说学号(班级+姓名)都是后选码
主码:简单来说就是从候选码中选出一个最具有代表性的
全码:关系模式的所有属性都是这个关系模式的候选码
外码:关系R1,R2,其中属性集X是R1的非主属性,而是R2的主码,就说X的、是R1的外码,R1为参照关系,R2为被参照关系(外码只是不是主码,不代表外码不是主属性)
主属性:包含在任何一个候选码的各个属性,也就是说,之前提到的(班级+姓名)中,班级和姓名都是主属性
非主属性:不包含在任何候选码的属性
元组:关系中的每个元素是关系中的元组
二.关系的类型
1.关系类型的概念
基本关系(基本表):实际存在的表
查询表:查询结果对应的表
视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
2.基本关系的6个性质
(1)列是同质的。(同一数据类型)
(2)不同的列可以出自同一个域,不同的属性要有不同的属性名
(3)列的顺序无所
(4)任意两个元组的候选码不能取相同的值
(5)行的顺序无所谓
(6)分量必须取原子值,每一个分量都不可分的数据项
三.关系模式
1.关系模式的表示
R(U,D,DOM,F)
U:关系名
D:组成该关系的属性名的集合
DOM:属性向域的映像集合
F:属性见数据的依赖关系集合
2.关系数据库
关系数据库的型称为关系数据库模式
关系数据库的值就是关系数据库模式在某一时刻对应的关系的集合
四.关系的完整性
关系模型的三类完整性约束:实体完整性,参照完整性(关系的两个不变性),用户定义的完整性
1.实体完整性
如果属性A(一个或一组)是 基本关系R的主属性,那么A不能取空值
学生(学号,姓名,班级)中,学号是主码,则学号不能取空值
2.参照完整性
3.用户定义的完整性
五.关系运算

基本运算:并,差,笛卡尔积,投影,选择
1.传统的集合运算
并
R∪S
R∪S={t∣t∈R∨t∈S}
差
R - S
R−S={t∣t∈R∧t∈S}
交
R∩S={t∣t∈R∧t∈S}
R∩S=R--(R−S)
笛卡尔积
严格地讲应该是广义的笛卡尔积
2.专门的关系运算
选择(行的角度)
投影(列的角度)
连
除运算
第三章 关系数据库标准语言


一.模式的定义和删除
1.定义模式
CREATE SCHEMA <模式名>AUTHORIZATION<用户名>
例1
为用户WANG定义一个S-T模式
CREATE SCHEMA"S-T" AUTHORIZATION WANG
例2
为用户ZHANG创建一个模式TEST,并且在其中定义一个表TABL
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TABL(COL1
COL2
);
2.删除模式
DROP SCHEMA<模式名><CASCADE | RESTRICT>;
CASCADE和RESTRICT两个选一个
DROP SCHEMA ZHANG CASCADE;删除模式ZHANG ,里面的TABL表也被删除
二.基本表的定义,删除和修改
1.定义基本表
CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件]
<列名><数据类型>[列级完整性约束条件]);
例子
建立一个学生表Student
CREATE TABLE Student
(Sno CHAR(5)
Sname CHAR(9)
);
2.修改基本表
ALTER TABLE<表名>
ADD \[COLUMN\] \<新列名\>\<数据类型\>\[完整性约束\]
ADD \<表级完整性约束\>
DROP \[COLUMN\] \<列名\>\<数据类型\>\[CASCADE \| RESTRICT\]
DROP CONSTRAINT \<完整性约束名\>\[CASCADE \| RESTRICT\]
ALTER COLUMN\<列名\>\<数据类型\>\]; **ADD--增加** **DROP COLUMN--删除列** **DROP CONSTRAINT--删除指定的完整性约束条件** **ALTER COLUMN--修改原有的列定义** 例子 向Student中加入入学时间 ALTER COLUMN Student ADD S_entrance DATE; 将年龄数据由字符型改成整型 ALTER COLUMN Student ALTER COLUMN Sage INT; #### 3.删除基本表 DROP TABLE \<表名\>\[CASCADE \| RESTRICT\] ; ### 三.索引的建立和删除 #### 1.建立索引 CREATE \[UNIQUE\]\[CLUSTER\]INDEX\<索引名\> ON\<表名\>(); #### 2.修改索引 ALTER INDEX\<旧索引名\>RENAME TO \<新索引名\>; #### 3.删除索引 DROP INDEX\<索引名\>; ### 四.数据查询    ## 第四章 数据库安全性 #### 1.不安全因素 ① 非授权用户对数据库的恶意存取和破坏 ② 数据库中重要数据的泄露 ③ 安全环境的脆弱性 #### 2、数据库安全性控制 ① 用户身份鉴别:静态口令鉴别、动态口令鉴别、生物特征鉴别、智能卡鉴别 ② 存取控制 ③ 自主存取控制方法 #### 3、为什么要授权 授权是指授予和收回,是数据库安全性控制中的自主存取控制方法。是为了保护数据库,防止不合法使用所造成的数据泄露、更改或破坏 #### 4、如何授权: 发出如下语句的可以是数据库管理员、也可以是数据库对象创建者、也可以是已经拥有该权限的用户 GRANT 权限 ON 对象类型 对象名 TO 用户名 \[WITH GRANT OPTION\]; 权限: 查询权限 SELECT, 全部操作权限 ALL PRIVILEGES 对象类型\&对象名:对象类型可以是TABLE 也可以是 VIEW,对象名为对应的表名或者视图名 用户名:可以是指定用户,也可以是全体用户 PUBLIC 如果没有指定 WITH GRANT OPTION 子句,则获得某种权限的用户只能使用该权限,不能传播该权限注意:SQL 不允许循环授权,即被授权者不能把权限再授回给授权者或其祖先 eg. 把查询权限授给用户 U1GRANT SELECT ON TABLE Student TO U1; #### 5、收回授权: 收回 REVOKEREVOKE 权限 ON 对象类型 对象名 FROM 用户名 \[CASCADE\|RESTRICT\]; CASCADE:级联回收。将用户传播出去的权限一并收回 RESTRICT:受限回收。若用户传播过该权限,回收将会失败 eg.把用户 U4 修改学生学号的权限收回 REVOKE UPDATE(Sno) ON TABLE Student FROM U4; #### 6、创建数据库模式的权限 对创建数据库模式一类的数据库对象的授权再数据库管理员创建用户时实现: CREATE USER username\[WITH DBA\|RESOURCE\|CONNECT\]; 只有系统的超级用户才有权创建一个新的数据库用户,新创建的数据库用户有三种权限:DBA、RESOURCE、CONNECT (此为默认) DBA:可以创建新用户、创建模式、创建基本表和视图等,拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户 RESOURCE:可以创建基本表和视图,但不能创建模式和新用户。数据库对象的属主可以用GRANT语句把该对象上的存取权限授予其他用户 CONNECT:只能登陆数据库,根据其他用户或者数据库管理员授予的权限的情况对数据库对象进行权限范围内的操作 #### 7、数据库角色 角色是权限的集合。可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程 创建角色: CREATE ROLE 角色名; 在一个角色中添加角色或者用户: GRANT 角色 TO 某角色/某用户 \[WITH ADMIN OPTION\]; 指定 WITH ADMIN OPTION 子句,则获得某种权限的角色或者用户还可以把这种权限再授予其他角色 给角色授权: GRANT 权限 ON 对象类型 对象名 TO 角色;角色权限收回: REVOKE 权限 ON 对象类型 对象名 FROM 角色; #### 8、视图机制 为不同的用户定义不同的视图,把不需要的数据隐藏,这样用户就不会误操作 #### 9、审计 把对数据库的所有操作都记录到审计日志中,然后就可以通过日志审查这个里面是否有一些非法的行为 #### 10、数据加密 通过一些加密算法,把明文变成密文。这样别人就无法查看 例子 把查询Student表的权限授给用户U1 GRANT SELECT ON TABLE Student TO U1; 把对表SC的查询权限授予所有用户 GRANT SELECT ON TABLE SC TO PUBLIC; 把查询Student表和修改学生学号的权限授给用户U4 GRANT UPDATE(Sno),SELECT ON TABLE Student TO U4; 把对表SC的NSERT权限授予U5用户,并允许将此权限再授予其他用户。 GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION; 把对Student表和Course表的全部操作权限授予用户U2和U3. GRANT ALL PRIVILEGES ON TABLE Student, Course TO U2,U3; 把用户U4修改学生学号的权限收回 REVOKE UPDATE(Sno) ON TABLE Student FROM U4: 收回所有用户对表SC的查询权限。 REVOKE SELECT ON TABLE SC FROM PUBLIC; 把用户US对SC表的INSERT权限收回。 REVOKE INSERT ON TABLE SC FROM US CASCADE; ## 第五章 数据库完整性 #### 1、数据库的完整性是指数据的正确性和相容性 正确性:符合现实世界语义 相容性:同一对象在不同表中的数据符合逻辑 #### 2、维护完整性需要实现的功能 ① 提供定义完整性约束条件的机制 ② 提供完整性检查的方法 ③ 进行违约处理 #### 3、三大完整性 ① 实体完整性:主码唯一且非空检查与违约处理:检查主码是否唯一,如果不唯一则拒绝插入或修改;检查主码各个属性是否为空,只要有一个为空就拒绝插入或修改 ② 参照完整性:外码的约束检查:对被参照表和参照表进行增删改操作时可能会破坏参照完整性,必须检查以保证两个表的相容性违约处理:外码约束可以在创建参照表时说明不同的违约策略可能破坏参照完整性的情况及违约处理 ③ 用户定义完整性:属性上约束条件的定义 #### 1.属性上的约束条件 非空 NOT NULL 列值唯一 UNIQUE 检查列值是否满足一个表达式CHECK 检查和违约处理:当向表中插入元组或者修改属性值时,关系数据库管理系统将检查属性上的约束条件是否被满足,如果不满足则操作被拒绝 2.元组上的约束条件在CREATE TABLE语句中可以用CHECK 短语定义元组上的约束条件,元组级的限制可以设置不同属性之间的取值的相互约束条件 检查和违约处理:当向表中插入元组或者修改属性值时,关系数据库管理系统将检查元组上的约束条件是否被满足,如果不满足则操作被拒绝 ## 第六章 关系数据理论 ### 一.第一范式 1.概念 二维表,每一个分量必须是不可分的数据项 ### 二.第二范式 若R属于INF,且每一个非主属性完全函数依赖于任何一个候选码,则R属于2NF ### 三.第三范式 [关系模式](https://baike.baidu.com/item/%E5%85%B3%E7%B3%BB%E6%A8%A1%E5%BC%8F/1237324?fromModule=lemma_inlink "关系模式")R 中若不存在这样的码X、属性组Y及[非主属性](https://baike.baidu.com/item/%E9%9D%9E%E4%B8%BB%E5%B1%9E%E6%80%A7/3462646?fromModule=lemma_inlink "非主属性")Z(Z (强制依赖)Y),使得X→Y,Y→Z,成立,Y→X不成立,则称R ∈ 3NF ### 四.BCNF 设关系模式R<U,F>∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有超码,那么R∈BCNF。满足BCNF条件有:所有非主属性对每一个候选键都是完全函数依赖; 所有的主属性对每一个不包含它的候选键,也是完全函数依赖;没有任何属性完全函数依赖于非候选键的任何一组属性。 ### 五.数据依赖、 #### 1.函数依赖 设R(U)是属性集U上的关系模式,X,Y是U的子集·若对于R(U))的任事数依赖一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等定则称X函数确定Y或Y函数依赖于X,记作X-\>Y 函数依赖和别的数据依赖一样是语义范畴的概念,只能根据语义来确定一个函数 #### 2.多值依赖  对称性 传递性 函数依赖可以看作是多值依赖的特殊情况 ### 六.第四范式 设关系R(X,Y,Z),其中X,Y,Z是成对的、不相交属性的集合。若存在非平凡多值依赖,则意味着对R中的每个属性 ### 七.数据依赖的公理系统 #### 1.蕴涵 对于满足一组数依胸F的关系模式R\,其中任何一个关系r,若函数依赖X-\>Y都成立,则称F逻辑蕴涵X-\>Y #### 2.算法(含覆盖知识点) ## 第七章 数据库设计 一.数据库设计概念 1. 信息管理要求:在数据库中应该存储和管理哪些数据对象 2.数据操作要求:对数据对象进行查询,增,删,查,统计等操作 3.数据库设计步骤: 需求分析; 概念结构设计; 逻辑结构设计; 物理结构设计; 数据库实施; 数据库运行和维护 4.数据字典 内容:数据项,数据结构,数据流,数据存储和处理 二.概念结构设计 1.E-R模型 2,E-R图 实体型--矩形 属性--椭圆形 联系--菱形 1、需求分析调查机构情况与熟悉业务活动,明确用户的需求,确定系统的边界,生成数据字典和用户需求规格说明书 2、概念结构设计将需求分析得到的用户需求抽象为概念模型,绘制E-R图 3、逻辑结构设计将E-R图转换为与DBMS相符合的逻辑结构 (包括数据库模式和外模式),例如E-R图向关系模型转换,再根据规范化理论对数据模型进行优化,设计用户子模式 4、物理结构设计通常关系数据库物理设计的内容包括关系模式选择存取方法、以及设计关系、索引等数据库文件的物理存储结构 5、数据库实施建立实际数据库结构、试运行、装入数据 6、数据库运行和维护维护数据库的安全性、完整性控制以及系统的转储和恢复;性能的监督、分析和改进;增加新功能;发现错误和修改错误