基础知识
- 一、数据库基本概念
- 1、数据库系统基础知识
- 2、三级模式-两级映像
- 3、数据库设计
- 4、数据模型:
- 4.1 E-R模型★
- 4.2 关系模型★
- 5、关系代数
- 二、规范化和并发控制
- 1、函数依赖
- 2、键与约束
- 3、范式★
- 3.1 第一范式1NF
- 实例
- 3.2 第二范式2NF
- 3.3 第三范式3NF
- 3.4 BC范式BCNF
- 3.5 求候选键
- 4、模式分解★
- 5、并发控制(事务)
- 6、封锁协议
- 三、数据库新技术
- 1、数据库安全
- 2、分布式数据库★
- 3、数据仓库
- 4、反规范化技术
- 5、大数据
- 6、SQL语言
一、数据库基本概念
1、数据库系统基础知识
数据:是
数据库中存储的基本对象
,是描述事物的符号记录。
数据的种类:文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等。
数据库DB:是长期存储在计算机内、有组织的、可共享的大量数据的集合
数据库的基本特征:
1.数据按一定的数据模型组织、描述和存储;
2.可为各种用户共享:
3.冗余度较小;
4.数据独立性较高;
5.易扩展。
数据库系统DBS:是一个采用了数据库技术,有组织地、动态地存储大量相关数据,方便多用户访问的计算机系统。其由下面四个部分组成:
1.数据库
(统一管理、长期存储在计算机内的,有组织的相关数据的集合)
2.硬件
(构成计算机系统包括存储数据所需的外部设备)
3.软件
(操作系统、数据库管理系统及应用程序)
4.人员
(系统分析和数据库设计人员、应用程序员、最终用户、数据库管理员DBA)。
数据库管理系统DBMS的功能
实现对共享数据有效的组织、管理和存取。(编写sql语言)
包括数据定义、数据库操作、数据库运行管理、数据的存储管理、数据库的建立和维护等。
例如:plsql,mysql等
2、三级模式-两级映像
-
内模式
:管理如何存储物理的数据,对应具体物理存储文件
。 -
模式
:又称为概念模式
,就是我们通常使用的基本表
,根据应用、需求将物理数据划分成一张张表。 -
外模式
:对应数据库中的视图
这个级别,将表进行一定的处理后再提供给用户使用 -
外模式一模式映像
:是表和视图
之间的映射,存在于概念级和外部级之间,保证了数据之间的逻辑独立性
。若表中数据发生了修改,只需要修改此映射,而无需修改应用程序。(目的)。 -
模式一内模式映像
:是表和数据
的物理存储之间的映射,保证了数据之间的物理独立性
。存在于概念级和内部级之间,若修改了数据存储方式,只需要修改此映射,而不需要去修改应用程序。(目的)。
3、数据库设计
- 需求分析:即
分析数据存储的要求
,产出物有数据流图
、数据字典
、需求说明书
。 - 概念结构设计:就是
设计E-R图
,也即实体-联系图,与物理实现无关,说明有哪些实体,实体有哪些属性。 - 逻辑结构设计:将
E-R图,转换成关系模式(即表)
,也即转换成实际的表和表中的列属性,这里要考虑很多规范化的东西。 - 物理设计:根据生成的表等概念,
生成物理数据库
。
4、数据模型:
分类:
- 关系模型是
二维表的形式表示的实体-联系模型
,是将实体-联系模型转换而来的,经过开发人员设计的;- 概念模型是
从用户的角度进行建模的(就是E-R图)
,是现实世界到信息世界的第一抽象是真正的实体-联系模型。- 网状模型表示实体类型及其实体之间的联系,一个事物和另外几个都有联系形成一张网。
- 面向对象模型是采用面向对象的方法设计数据库,以对象为单位,每个对象包括属性和方法,具有类和继承等特点。
数据模型三要素:
数据结构
(所研究的对象类型的集合)、
数据操作
(对数据库中各种对象的实例允许执行的操作的集合)、
数据的约束条件
(一组完整性规则的集合)。
4.1 E-R模型★
用E-R图来描述概念数据模型,世界是由一组称作实体的基本对象和这些对象之间的联系构成的。
在E-R模型中,使用椭圆表示属性一般没有)
、长方形表示实体
、菱形表示联系
,联系的两端要填写联系类型
,示例如下图:
实体:
客观存在并可相互区别的事物
。可以是具体的人、事、物或抽象概念如人、汽车、图书、账户、贷款。
弱实体和强实体:弱实体依赖于强实体的存在而存在
。例如员工就是强实体,经理,部门经理,业务员都是弱实体。因为如果员工不存在,那他们也不会存在。
实体集:具有相同类型和共享相同属性的实体的集合,如学生、课程
属性:实体所具有的特性
属性分类:简单属性和复合属性;单值属性和多值属性;NULL属性;派生属性。
域:属性的取值范围称为该属性的域
码(key):唯一标识实体的属性集。
联系:现实世界中事物内部以及事物之间的联系
,在E-R图中反映为实体内部的联系和实体之间的联系
,
联系类型:一对一1:1
、一对多1:N
、多对多M:N
。
联系的类型怎么判断?
一对一1:1
超市 经理 释义 1 1 一个超市有一个经理 1 1 一个经理管理一个超市
一对多1:N:
只出现一次N,那就是一对多的类型
。
部门 员工 释义 1 N 1个部门有多个员工(正方向理解) 1 1 1个员工只属于一个部门(反方向理解)
多对多M:N:出现2次N,那就是多对多的类型`。
业务员 商品 释义 1 N 1个业务员可以配送多件商品 N 1 1个商品可以由多个业务员配送。
两个以上实体型的联系:(最多就三个,一般就两个)
释义:教师
使用参考书
讲授课程
。(三个实体)
4.2 关系模型★
关系模型中数据的逻辑结构是一张二维表
,由行列组成。用表格结构表达实体集,用外键标识实体间的联系。如下图:
优点:建立在严格的数学概念基础上;概念单一、结构简单、清晰,用户易懂易用;存取路径对用户透明,从而数据独立性、安全性好,简化数据库开发工作。
缺点:由于存取路径透明,查询效率往往不如非关系数据模型。
E-R模型(E-R图)转换为关系模型(表):
每个实体(强实体,不是弱实体)都对应一个关系模式
,- 并不是每一个联系都要转换为单独的一个关系模式,联系分为三种:
- 1:1联系中,
联系
可以放到任意的两端实体中,作为一个属性
(要保证1:1的两端关联),也可以转换为一个单独的关系模式
。- 例如:超市和经理,联系是管理,可以把管理,作为一个字段,放到超市的这个表里,也可以放到经理的这个表里。
- 1:N的联系中,联系
可以单独作为一个关系模式
,也可以在N端中加入1端实体的主键
。- 例如:员工和部门,员工是N端,部门是1端,一般是在员工的表里,加上部门表的主键(例如:id)
- M:N的联系中,联系
必须
作为一个单独的关系模式
,其主键是M和N端的联合主键
。
- 1:1联系中,
5、关系代数
并交差
并:结果是两张表中所有记录数合并,相同记录只显示一次
交:结果是两张表中相同的记录。
差:S1-S2,结果是S1表中有而S2表中没有的那些记录,
笛卡尔积
笛卡尔积:S1*S2,产生的结果包括S1和S2的所有属性列
,并且S1中每条记录依次和S2中所有记录组合成一条记录,最终属性列为S1+S2属性列,记录数为S1*S2记录数。
投影:实际是按条件选择某关系模式中的某列
,列也可以用数字表示
选择:实际是按条件选择某关系模式中的某条记录
。
自然连接
自然连接的结果显示全部的属性列
,但是相同属性列只显示一次
,显示两个关系模式中属性相同
且值相同的记录
。设有关系R、S如下左图所示,自然连接结果如下右图所示:
例题:
二、规范化和并发控制
1、函数依赖
给定一个X
,能唯一确定一个,就称X确定Y(X --> Y)
,或者说Y依赖于X
,例如Y=x*x函数。
函数依赖又可扩展以下两种规则:
- 部分函数依赖:A可确定C,(A,B)也可确定C,
(A,B)中的一部分(即A)可以确定C
,称为部分函数依赖。 - 传递函数依赖:当A和B不等价时,
A可确定B,B可确定C,则A可确定C
,是传递函数依赖;若A和B等价,则不存在传递,直接就可确定C。
函数依赖的公理系统(Armstrong)
设关系模式R<U,F>,U是关系模式R的属性全集,F是关系模式R的一个函数依赖集。对于R<U,F>来说有以下的:
- 自反律:若YCXCU,则X→Y为F所逻辑蕴含
- 增广律:若X→Y为F所逻辑蕴含,且ZSU,则XZ-YZ为F所逻辑蕴含
- 传递律:若X->y和Y-Z为F所逻辑蕴含,则X-Z为F所逻辑蕴含
- 合并规则:若X→Y,X→Z,则X→YZ为F所蕴涵
- 伪传递率:若X→Y,WY-Z,则XW→Z为F所蕴涵
- 分解规则:若X→Y,ZSY,则X→Z为F所蕴涵
2、键与约束
-
超键:能
唯一标识
此表的属性的组合
。- 例如学生表,有学号,姓名,年龄,身份证号字段,
学号和身份证号都是唯一标识
,学号是超键,身份证号也是超键,(学号,姓名)也是超键,(学号,姓名年龄)也是超键,只要包含了唯一标识的,都算超键
。
- 例如学生表,有学号,姓名,年龄,身份证号字段,
-
候选键:超键中
去掉冗余的属性
,剩余的属性就是候选键。- 去掉冗余的属性,上述案例中,去掉姓名和年龄,
只留下唯一标识,就是候选键
,候选键可以是多个。例如:【学号,身份证号】,当有多个的时候,可以把多个看成一个就行,例如【学号,身份证号】=guid
。
- 去掉冗余的属性,上述案例中,去掉姓名和年龄,
-
主键:
任选一个候选键
,即可作为主键。 -
外键:
其他表中的主键
。 -
主属性:
候选键内的属性为主属性
,其他属性为非主属性。- 【学号,身份证号】就是主属性,其他属性为非主属性
-
实体完整性约束:即
主键约束
,主键值不能为空,也不能重复. -
参照完整性约束:即
外键约束
,外键必须是其他表中已经存在的主键的值或者为空
。 -
用户自定义完整性约束:自定义表达式约束,如设定年龄属性的值必须在0到150之间。
3、范式★
3.1 第一范式1NF
关系中的每一个分量必须是一个不可分的数据项。通俗地说,第一范式就是表中不允许有小表的存在。比如,对于如下的员工表,就不属于第一范式:
实例
用一个单一的关系模式学生来描述学校的教务系统:学生(学号,学生姓名,系号,系主任姓名,课程号,成绩)
依赖关系(学号->学生姓名,学号->系号,系号->系主任姓名,学号->课程号,(学号,课程号)->成绩)
- 先求主键:
主键:任选一个候选键
,即可作为主键。所以需要先算候选键。
候选键:唯一标识,去除冗余属性。
唯一标识:(学号,课程号)
,这是个联合主键。因为只有学号+课程号,才能单独标识一条数据。
3.2 第二范式2NF
通俗地说,2NF就是在1NF的基础上
,表中的每一个
非主属性不会依赖复合主键中的某一个列
。
其实是:消除
了 非主属性
对 主属性的 部分函数依赖
。
注意:
1.只有主键是复合主键(联合主键)的时候,才会有部分函数依赖
。
2.单属性的主键,必然是第二范式
。
按照定义,上面的学生表就不满足2NF,因为上表中,唯一标识是学号,课程号,所以学号+课程号—>学生姓名,但根据题目给的依赖关系,学号->学生姓名,所以是含有部分函数依赖的,不满足第二范式。
将学生表分解为:
学生(学号,学生姓名,系编号,系名,系主任)
选课(学号,课程号,成绩)。
每张表均属于2NF
3.3 第三范式3NF
在满足1NF
的基础上,表中不存在
非主属性对码(主键)的传递依赖
。
其实是:消除
了 传递依赖
。
注意:
1.无非主属性的,天然就是3NF
。
继续上面的实例,学生关系模式就不属于3NF,因为学生无法直接决定系主任和系名,是由学号->系编号,再由系编号->系主任,系编号->系名,因此存在非主属性对主属性的传递依赖,
将学生表进一步分解为:
学生(学号,学生姓名,系编号)
系(系编号,系名,系主任)
选课(学号,课程号,成绩)每张表都属于3NF。
3.4 BC范式BCNF
BC范式BCNF,是指在第三范式的基础上进一步消除
主属性对于码的部分函数依赖和传递依赖
。
注意:
1.BC范式的判断,一般是有多个候选关键字的情况下
。
判断方法:
通俗的来说,就是在【每一种情况】下,每一个【依赖的左边】决定因素都 【必然包含候选键】
,如下
ps:每一种情况:
【学号,课程号】是候选键,这是一种情况,
如果还有身份证号,假设【学号,身份证号】也能唯一标识一组数据,那么此时【学号,身份证号】也是候选键,这是第二种情况。
上图中,候选键有两种情况:组合键(S,T)或者(S,J),依赖集为 {SJ-T,T-J},可知,STJ三个属性都是主属性,因此其达到了3NF((无非主属性),然而第二种情况,即(S,J)为候选键的时候,对于依赖T->J,T在这种情况不是候选键,即T-J的决定因素不包含任意候选码,因此上图不是BCNF。
要使上图关系模式转换为BCNF也很简单,只需要将依赖T->J变为TS->J即可这样其左边决定因素就包含了候选键之一S。
3.5 求候选键
**方法:**根据依赖集,找出从未在右边出现过的属性
,必然是候选键之一,以该属性为基础,根据依赖集依次扩展,看能否遍历所有属性
,将无法遍历的加入候选键中
。
4、模式分解★
范式之间的转换
一般都是通过拆分属性
,即模式分解,将具有部分函数依赖和传递依赖的属性分离出来,来达到一步步优化,一般分为以下两种:
- 保持函数依赖分解
- 对于关系模式R,有依赖集F,若对R进行分解,2分解出来的多个关系模式,保持原来的依赖集不变,则为保持函数依赖的分解。
- 如果F上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(这是一个充分条件)。
- 即简单判断方法:
看函数每个依赖的左右两边属性是否都在同一个分解的模式(表)中
。
- 无损分解
- 分解后的关系模式能够还原出原关系模式,就是无损分解,不能还原就是有损。
- 当分解为两个关系模式,可以通过以下定理判断是否无损分解:
- 如果R的分解为p={R1,R2},F为R所满足的函数依赖集合,分解p具有无损连接性的
充分必要条件
是R1∩R2->(R1-R2)
或者R1∩R2->(R2-R1)
。 - 当分解为三个及以上关系模式时,可以通过表格法求解,如下:
例题:
5、并发控制(事务)
事务:由一系列操作组成,这些操作,要么全做,要么全不做,拥有四种特性,详解如下:
- (操作)
原子性
:要么全做,要么全不做。 - (数据)
一致性
:事务发生后数据是一致的,例如银行转账,不会存在A账户转出,但是B账户没收到的情况。 - (执行)
隔离性
:任一事务的更新操作直到其成功提交的整个过程对其他事务都是不可见的,不同事务之间是隔离的,互不干涉。 - (改变)
持续性
:事务操作的结果是持续性的。
事务是并发控制的前提条件,并发控制就是控制不同的事务并发执行,提高系统效率,但是并发控制中存在下面三个问题:
6、封锁协议
- X锁是
排它锁
(写锁
)。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,直到T释放A上的锁。 - s锁是
共享锁
(读锁
)。若事务T对数据对象A加上s锁,则只允许T读取A,但不能修改A,其他事务只能再对A加S锁(也即能读不能修改),直到T释放A上的s锁。 - 核心:
要是包含了写操作,就加X锁,要是只需要读,那就加s锁
。
共分三级封锁协议,如下:
三、数据库新技术
1、数据库安全
2、分布式数据库★
3、数据仓库
4、反规范化技术
5、大数据
6、SQL语言