sql语句那部分参考了博客:https://blog.csdn.net/qq_41523096/article/details/86368690
1. 绪论
1.1. 数据库4个基本概念
1.1.1. 数据
描述事物的符号记录,数据与其语义是不可分的。
1.1.2. 数据库
数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。
数据库中数据基本特点:永久存储、有组织和可共享三个基本特点。数据库中数据都是按照某一种数据模型来组织、描述和存储的。
1.1.3. 数据库管理系统(DBMS)
科学地组织和存储数据,高效的获取和维护数据。
主要功能:
- 数据定义功能
- 数据组织、存储和管理功能
- 数据操纵功能
- 数据库的事务管理和运行管理
- 数据库的建立和维护功能
- 其他功能(例如通信功能等)
1.1.4. 数据库系统(DBS)
数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统
1.2. 数据管理
对数据进行分类、组织、编码、存储、检索和维护,它是数据处理的中心问题。数据处理是指对各种数据进行收集、存储、加工和传播的一系列活动的总和。
1.2.1. 发展过程
人工管理阶段、文件系统阶段、数据库系统阶段
1.2.2. 三个阶段对比
特点 | 人工管理阶段 | 文件系统阶段 | 数据库系统阶段 |
---|---|---|---|
管理者 | 程序员 | 文件系统 | 数据库管理系统 |
数据面向对象 | 某一应用程序 | 某一应用 | 部门企业 |
数据的共享程度 | 无共享,冗余度极大 | 共享性差,冗余度答 | 共享性高,冗余度低 |
数据独立性 | 不独立 | 独立性差 | 具有高度的物理独立性和一定的逻辑独立性 |
数据结构化 | 无结构 | 记录内有结构、整体无结构 | 整体结构化,用数据模型描述 |
数据控制能力 | 应用程序自己控制 | 应用程序自己控制 | DBMS提供数据安全性、完整性、并发控制和恢复能力 |
1.2.3. 数据库系统特点(与人工管理、文件系统比)
- 数据结构化(与文件系统的本质区别)
- 共享性高,冗余度低且易扩展
- 数据独立性高(独立性指应用程序与逻辑结构、物理存储相互独立)
- 数据统一管理和控制
1.2.4. 使用数据库系统好处
- 使用数据库系统可以大大提高应用开发的效率
- 当数据逻辑结构需要改变是,开发人员不必修改应用程序,或者只需要修改很少一部分
- 使用数据库系统可以减轻DBA维护系统的负担
1.3. 数据模型
数据模型是数据库用来对现实世界进行抽象的的工具,是数据库中用于提供信息表示和操作手段的形式框架
1.3.1. 数据模型分类:
分为两类:概念模型(实体-联系)、逻辑模型和物理模型
概念模型:实体、属性、码、实体型、实体集、联系
第二类中的逻辑模型:层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等
第二类中的物理模型:是对数据最底层的抽象。描述了数据在系统内部的表示方式和存取方法
1.3.2. 数据模型的组成要素
数据结构、数据操作、数据的完整性约束条件
1.3.3. 层次模型、网状模型、关系模型的各自优缺点
层次模型
优点:
- 数据结构简单清晰
- 查询效率高
- 提供了良好的完整性支持
缺点:
- 现实世界中很多联系时非层次化的
- 程序编写复杂,如果一个节点具有多个双亲节点,只能引入冗余数据。插入删除限制多
- 查询子女节点必须通过双亲节点
- 由于结构严密,层次命令趋向于结构化
网状模型
优点:
- 能够更为直接的描述现实世界
- 具有良好的性能,存取效率较高
缺点:
- 结构比较复杂
- 语言复杂,不好掌握使用
- 用户需要了解系统结构的细节,因为联系是通过存取路径实现的
关系模型
优点:
- 建立在严格的数据概念基础上
- 概念单一
- 存取路径对用户透明,简化工作
缺点:
存取路径隐蔽,导致查询效率不高,为了提升性能,DMBS必须对用户查询请求进行优化
1.4. 数据库系统的结构
1.4.1. 数据库系统模式的概念
模式是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型(type)的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例。
1.4.2. 三级模式结构
模式、外模式、内模式
模式:
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
外模式:
外模式也称用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述。是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
内模式:
也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
1.4.3. 数据库的二级映像功能与数据独立性
- 外模式/模式映像
模式改变,对映象做修改,可以保证外模式不变,保证了逻辑独立性。 - 模式/内模式映象
内模式改变(数据库的存储结构改变),对映象做修改,可以保持模式不变,保证了物理独立性。
1.5. 数据库系统的组成
- 数据库、数据库管理系统(及其开发工具)、应用程序、数据库管理员
- 硬件平台及数据库、软件、人员
2. 关系数据库
按照数据模型三要素,关系模型由数据结构、关系操作集合和关系完整性约束三部分组成
2.1. 关系模型数据结构及形式化定义
关系模型的数据结构非常简单,只包含单一的数据结构——关系
2.1.1. 关系
关系是关系模式某一时刻的内容或状态
关系在域上D笛卡尔积的子集
关系可以有三种类型:基本关系(基本表)、查询表、试图表。
2.1.2. 关系模式
关系的描述称为关系模式 ,可形式化的表示为R(U,D,DOM,F)
其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映象集合,F为属性间数据的依赖关系集合。
2.1.3. 关系、关系模式、关系数据库
关系模式:对关系的描述称为关系模式,可以形式化表示为R(U,D,DOM,F)
关系:是关系模式某一时刻的状态或者内容,关系模式是静态的,而关系是动态的。
关系数据库:关系数据库也有型和值之分,型是关系模式,是对关系数据库的描述。值是关系模式在某一时刻对应的关系集合。
2.1.4. 关系模式与关系的区别
关系模式是型;关系是值,是关系模式的实例。
例如S(num,name,age)是关系模式,组成的表是关系,即某一时刻关系模式的值
2.2. 关系操作
查询操作: 选择、投影、连接、除、并、差、交、笛卡尔积
选择、投影、并、差、笛卡尔积是五种基本操作
数据更新:插入、删除、修改
2.2.1. 数据语言的分类
关系代数语言、关系演算语言、具有关系代数和关系演算双重特点的语言
2.3. 关系完整性规则
- 实体完整性:若属性A是基本关系R的主属性,则属性A不能取空值
- 参照完整性:若属性F是基本关系R的外码,它与基本关系S的主码K相对应,则对R中的每个元组在F上的值,必须为空值或者S中某个元组的主码值
- 用户定义完整性:针对某一具体关系数据库的约束条件。它反映了某一具体应用所涉及的数据必须满足的语义要求。
2.4. 关系代数
在八种运算关系中,并、差、积、投影和选择为基本运算,其他三种运算,交、连接、除均可以用这五种基本运算来表达
3. 数据库标准语言SQL
3.1. SQL概述
3.1.1. SQL特点
- 综合统一(集数据定义语言、数据操作语言、数据控制语言于一体)
- 高度非过程化
- 面向集合的操作方式
- 以同一种语法结构提供多种使用方式
- 语言简洁,易学易用
3.1.2. 基本概念
外模式对应视图、模式对应基本表、内模式对应存储文件
3.2. 数据定义
3.3. 数据查询
3.4. 数据更新
3.5. 空值处理
3.5.1. 空值的约束条件
not null,unique,码属性
3.6. 视图
3.6.1. 视图消解
执行视图查询时,先进行有效性检查。如果视图、表都存在,就取出视图定义,把定义中的子查询和用户查询结合起来,转换成等价的对基本表的查询。这一转换过程被称为视图分解。
3.6.2. 视图的作用
- 视图能够简化用户的操作(简化操作)
- 视图使用户能以多种角度看待同一数据(多角度)
- 视图对重构数据库提供了一定程度的逻辑独立性(逻辑独立性)
- 视图能对机密数据提供安全保护(安全保护)
- 适当利用视图可以更清晰地表达查询(清晰表达)
3.6.3. 视图的更新问题
视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。因为有些视图的更新不能惟一有意义地转换成对相应基本表的更新,所以,并不是所有的视图都是可更新的.
基本表的行列子集视图一般是可更新的。若视图的属性来自集合函数、表达式,则该视图肯定是不可以更新的。
4. 数据库安全性
保护数据库以防止不合法使用所造成的的数据泄露、更改或破坏
4.1. 数据库安全性概述
4.1.1. 数据库的不安全因素
- 非授权用户对数据库的恶意存取和破坏
- 数据库中重要或敏感的数据被泄露
- 安全环境的脆弱性
4.1.2. 安全标准
安全标准:TCSEC标准;CC标准
4.1.3. 数据库安全性控制
- 用户身份鉴别
- 存取控制
- 自主存取控制(tcsec/C1),用户对不同数据库队友有不同的存取权限
- 强制存取控制(TCSEC/B1),每一个数据库对象被标以一定的密级,只有具有合法许可证的用户才能存取。
4.1.3.1. 授权与回收、角色
- GRANT…WITH GRANT OPTION
- REVOKE…CASCADE|RESTRICT
- CREATE…WITH DBA|RESOURCE|CONNECT
- GRANT ROLE …WITH ADMIN OPTION
自主存取控制方法、 授予与回收、 数据库角色、 强制存取控制方法
4.1.4. 视图机制
通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。
4.1.5. 审计功能
审计功能把用户对数据库的所有操作自动记录下来放入审计日志。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的时间,找出非法行为。是一种事后检查的机制
4.1.6. 数据加密
5. 数据库完整性
数据库完整性是指数据的正确性和相容性。定义、检查、违约处理
5.1. 实体完整性
5.1.1. 完整性检查和违约处理
- 检查主码是否唯一,拒绝插入或修改
- 检查主码的各个属性是否为空,拒绝插入或修改
5.2. 参照完整性
5.2.1. 完整性检查和违约处理
增删改2,共4种检查
违约:
- NO ACTION,为默认策略
- CASCADE
- SET NULL
5.3. 用户定义完整性
NOT NULL,UNIQUE,CHECK
5.3.1. 完整性检查和违约处理
插入或修改时,检查元组上的约束条件是否被满足,如果不满足则操作被拒绝执行
5.4. 完整性约束子句
用来对完整性约束条件命名,灵活地增加、删除一个完整性约束条件
5.5. 断言
可以涉及多个表或聚集操作的比较复杂的完整性约束
5.6. 触发器
CREATE TRIGGER <NAME>
BEFORE|AFTER 触发事件ON表名
REFERENCING NEW|OLD ROW AS别名
FOR EACH{ROW|STATEMENT}
WHEN | BEGIN END
6. 关系数据理论
6.1. 问题提出
针对一个具体问题,应该如何构造一个适合于它的数据库模式,即应该构造几个关系模式,每个关系由哪些属性组成等。这是关系数据库逻辑设计问题
6.2. 规范化
通常按属性间依赖情况来区分关系规范化程度
6.2.1. 函数依赖
设R(U)是一组关系模式,X,Y是U上的子集。对于R(U)中的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同
X函数确定Y或Y函数依赖X,记做X->Y; F(X)=Y
X->Y,但Y不属于X,则称X->Y是非平凡的函数依赖
X->Y,但Y属于X,则称X->Y是平凡的函数依赖
若不特别说明都是讨论非平凡依赖
完全函数依赖和部分函数依赖
传递函数依赖
6.2.2. 范式
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式
一个低一级的范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这个过程叫做规范化
6.2.2.1. NF
每一个非主属性完全函数依赖于任何一个候选码
不属于2NF会产生以下几个问题:
- 插入异常
- 删除异常
- 修改复杂
6.2.2.2. NF
码X,非主属性Z,不存在X->Y,Y->Z成立,且Y不函数依赖于Z。
每一个非主属性既不传递依赖于码,也不部分依赖于码
会产生2NF中类似的问题
6.2.2.3. BCNF
若X->Y且Y不属于X时,X必含有码
- 所有非主属性对每一个码都是完全函数依赖
- 所有主属性对每一个不包含它的码也是完全函数依赖
- 没有任何属性完全函数依赖于非码的任何一组属性
6.2.2.4. 多值依赖
X,Y,Z.Z=U-X-Y。在R(U)中任意一组关系r,给定一対值(x,z),有一组Y的值,但这组值只决定于x而与z无关
6.2.2.5. NF
对于每一个非平凡的多值依赖X->->Y,X都含有码
6.2.3. 规范化基本步骤
7. 数据库设计
7.1. 数据库设计概述
数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效的存储和管理书籍,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
7.1.1. 数据库设计特点
- 三分技术,七分管理,十二分基础数据
- 结构设计和行为设计
7.1.2. 设计步骤
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 数据库实施阶段
- 数据库运行和维护阶段
7.2. 需求分析
7.2.1. 数据字典
它是关于数据库中数据的描述,即元数据,而不是数据本身。数据字典是在需求分析阶段监理,在数据库设计过程中不断修改、充实、完善的。
通常包括:数据项、数据结构、数据流、数据存储和处理。
7.3. 概念结构设计
应用需求抽象为信息世界的结构
7.3.1. 概念模型主要特点
- 能真实、充分地反映现实世界
- 易于理解
- 易于更改
- 易于向关系、网状、层次等各种数据模型转换
7.4. 逻辑结构设计
把概念结构设计阶段设计好的E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构
7.5. 物理结构设计
为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程
步骤:
- 确定数据库的物理结构
- 对物理结构进行评价
内容包括:关系模式选择存取方法,以及设计关系、索引等数据库文件的物理存储结构
8. 数据库编程
8.1. 标准SQL缺点和SQL编程技术优点
标准SQL是非过程化的查询语言,缺少流程控制能力,难以实现应用业务的逻辑控制
SQL编程技术可以有效克服SQL语言实现复杂应用方面的不足,提高应用系统和数据库管理系统间的互操作性。
8.2. 存储过程
存储过程是由过程化SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中
优点:
- 运行效率高,因为是被编译后保存在数据库中的
- 降低了客户机和服务器的通信量
- 方便实施企业规则
8.3. ODBC编程
是为解决异构数据库间的数据共享而产生的,它建立了一组规范,并提供了一组访问数据库的应用程序编程接口(API)。ODBC具有两重约束力:一方面规范应用开发,另一方面规范关系数据库管理系统应用接口
组成:
- 用户应用程序
- ODBC驱动程序管理器
- 数据库驱动程序
- 数据源