目录
数据库系统
数据库模式(三级模式-两级映射)
三级模式:
外模式:视图
概念模式:表
内模式:数据的存储方式
两级映射:
外模式-概念模式映射:当表发生变化时,我们只需要改映射,就能看到相应的数据,而不需要修改应用程序。
概念模式-内模式映射:当存储结构发生改变时只需要修改映射关系。
数据库设计
数据库设计准确来说是从概念结构设计算起
ER模型
正方形表示实体
椭圆形表示实体的属性
菱形表示实体之间的联系
1:1联系:这种联系既可以放在与之关联的任意一个实体上。
1:n联系:这种联系放在n的实体的这一边,作为它的一个属性。
m:n联系:这种联系就需要单独新建一张表来表示两个实体之间的联系。
首先:A、B、C三个实体要相对应的转成3张表
联系:m:n:p这个联系只需要转为一张表即可
解析:即时有多张表之间有多个关系,这个关系也只需要转为1张表即可,不需要转为多张表
因此答案为4,选C
关系代数与元组演算
并:两个表中有的数据都显示出来,且如果在两个表中都有该数据,也只显示一次。
交:两个表中都有的数据才会被筛选出来。
差集(结果集):我有的对方没有,将两者的公共部分去除
笛卡尔积:
结果集的属性数是参与操作的两个关系的属性数之和
记录数是两个关系的记录数之积
投影:对列进行操作,只有在符合筛选条件中条件的列才会被显示出来
选择:对行进行操作,只有在符合筛选条件中条件的行才会被显示出来
在进行投影或选择操作时,有时用的时属性名,有时用的是属性编码代号
例如图中的πSno,Sname也可写成π1,2,选择也是如此
连接:两个关系中,相同的字段只会显示一次,且会将两个关系中的不同字段都显示一遍。
在连接过程中普遍都会有连接的条件,如S1.Sno=S2.Sno
如果没有连接条件则是自然连接
自然连接:将相同的字段进行比较,筛选出相同的字段进行连接
规范化理论
函数依赖
部分函数依赖:属性A与属性B一起构成的组合主键时,若A就能够唯一确定一个属性C此时就称为部分函数依赖
传递函数依赖:当属性A可以确定属性B而属性B又可以确定属性C时,则可推出属性A能够唯一确定一个属性C(此处有个条件B不能够为A)。
规范化的价值
键
求解候选键
例题
1、找到入度为0的节点,由题目可得度为0的节点是A1
2、从入度为0的节点尝试遍历所有的节点,如果能够遍历完所有的节点,则该节点便是候选关键字
由已知可得A1→A2,A2→A3,A2→A4,从A1出发即可可以遍历完所有的节点
因此A1是候选关键字,选择A
答案为ABCD
1、没有入度为0的节点尝试找出中间节点,指既有入度也有出度的节点
2、由图中已知可以看出,节点A、B都是中间节点
3、从节点A或B出发都能够遍历完所有的节点
因此节点A或B都能够称为候选关键字,所以答案是A和B,选B
范式
范式越高数据粒度越小,因此只会要求达到3NF即可
当发现某个非主属性对主键部分依赖时就要将其拆分出去作为一个单独的表进行处理。
若候选键是单属性的,则一定满足第二范式。
1、写出所有的候选键
ST,SJ都可以作为候选键
2、SJ→T,T→J
从定义中:R属于BCNF当且仅当其F中每个依赖的决定因素必须包含R的某个候选码。
通俗说就是说决定右边属性的这个左边的决定因素必须是候选码。
SJ→T,SJ是候选码所以没有问题
T→J,T不是候选码
因此这个无法满足BCNF范式。
例题
1、
部门号可以作为主键决定所有的属性,只需要一个属性就能作为主键,不存在部分依赖所以一定满足第二范式
因此不满足第三范式的原因只能是消除部份依赖而没有消除传递依赖
2、
观察图4,我们可以得出,图4是需要职工号和部门名的,因此需要在图1与图3之间建立联系,根据之前在ER模型中所学的内容,我们需要将1:n联系将该属性放在n的那个表中,而部门表与员工表的关系为1个部门对应n个员工,因此要在员工表中新增一个部门号属性。
3、
观察图4我们可以发现要得到图4的结果,
其中月销售这个属性我们需要数量与日期构成,因此可以排除B、D
职工号与部门号在员工表中已经新增属性将两者连接产生关系了,因此排除C
选CDA
模式分解
保持函数依赖
有一个关系R(A,B,C),含有函数依赖,A→B,B→C
分解为关系R1(A,B),R2(B,C)
则依然函数函数依赖,A→B,B→C,即保持函数依赖
若分解为R1(A,B),R2(A,C),不能够找到B→C
即没有保持函数依赖
无损分解例题
局限性较强只适用于一分为二的情况
并发控制
原子性:要么全做,要么全不做
一致性:事物执行后跟执行前的状态是保持一致的
隔离性:事物之间是隔离的,互不影响
持续性:事物执行后的影响是持续的
产生的问题
封锁协议
S:读锁,加上了读锁之后可以再加上读锁但不能加写锁。
X:写锁,加上了写锁之后就不能够再加任何的锁了,读锁写锁都不行。
数据库完整性约束
实体完整性约束:约束主键,主键不能够为空也不能够重复。
参照完整性约束:约束外键,要求填入的数据必须是参照的那个表主键的值,可为空。
用户自定义完整性约束:用户自己设定的要求。
提高数据可靠性。
触发器:可编写脚本来保障数据库的数据安全。
数据库安全
用户标识和鉴定:身份认证,用户需要输入自己的账号和口令进行验证。
存取控制:对用户的权限进行授权。
密码存储和传输:在远程传输数据过程中可以加密进行传输。
视图的保护:根据不同权限的用户分配不同的权限。
审计:以日志的方式记录用户对数据库的操作,然后可以根据日志对用户的操作进行分析。
数据备份
冷备份:以文件级别进行备份,无法精确到表。
热备份:相比于冷备份更加灵活高效,能够精确到表的级别。
以数据库的量进行区分的备份方式:
数据库故障与恢复
分布式数据库
数据仓库
抽取:从不同的数据源将需要的数据抽取出来。
清理:抽取出来的数据也许会存在格式不同等等其它问题,此时就会需要清理工作。
装载:将抽取出来的数据装载到数据仓库中去。
刷新:定期刷新就是往里面添加一些数据。
数据集市:部门级的数据仓库。
OLAP服务器:联机分析服务器,专做分析处理工作。
数据挖掘
反规范化
牺牲空间以及规范化的程度换取时间,提高查询的效率。
重新组表:依据查询效率的原则进行重新组表。
分割表:从查询的效率出发,进行垂直分隔或水平分割。
大数据
对海量数据进行处理的技术。