课程内容提要
三级模式-两层映射
外模式又称为用户模式,概念模式又称为模式,内模式又称为物理模式/存储模式
外模式->模式(逻辑独立性) 模式->内模式(物理独立性)
代表:MySQL,Oracle等
C
数据库设计过程
虚线代表的是阶段产物
物理设计得到的是一些东西,并没有什么输出,如索引,存储
AC
E-R模型
实体(E)-关系(R)图
简单属性(不可再分) 复合属性(可再分) 派生属性(可以根据其他属性推导得到)
弱实体:不能独自存在的实体,如邮件附件存在则邮件必须存在
C
多对多只能单独做关系模式(表)
关系代数
笛卡尔积得到结果数量是2者相乘,比如这里是
3*3
的2个表格,得到的笛卡尔积表格的大小是6*6
大小的表格投影:垂直方向的选择 (select Sno, Sname from S1)
选择:水平方向的选择 (select * from S1 where Sno=No0003)
自然连接,针对相同属性列来的,相同属性列取值相等的元组
自然连接的笛卡尔积的等价表示:对笛卡尔积先选择后投影
倒V: 且 , V: 或
对R和S的笛卡尔积先进行C和D的选择,再对ABCDE的投影,因此很明显就是一个自然连接,选A
规范化理论
函数依赖
C对AB有部分函数依赖(AB->C且A->C)
C对A有传递函数依赖(A->B且B->C)
候选键可以是一个,也可以是多个
候选键可以是单属性,也可以是多属性组合
这里举个例子,银行系统候选键可以有客户编号和身份证号,但是客户编号和身份证号不能组合作为候选键,因为这样子就是冗余了。
外键是其他关系的主键,并且不是本关系的候选键
求候选键
画一个 A->B, B->C 的图根据上面的方法可以确定A这个入度为0且能遍历图中所有结点的属性是候选键
在上面的图中增加一个没有任何入度和出度4的结点D,该结点与A即构成候选键组合(A,D)
这里注意一种特殊的情况,如A->B, B->A,这样子B和A都可以遍历全图,但是B和A都不是入度为0的结点,可以把A和B看做一个结点,这样子这个结点就是入度为0了,如果组合结点可以遍历全图,则A和B都是候选键
例1:A
例2:(A,B,C,D)
例3:B
这里需要了解到 C可以推导出J(C->J),则ABCD->J
范式
消除非规范化的关系模式,解决插入异常、删除异常、更新异常、数据冗余的问题
候选码对应的属性称之为主属性,包括候选码组合的属性也都是主属性
去掉高级职称人数的属性即可(拆分属性)
第一范式的处理方法很简单粗暴:拆分/拆表,就是拆。对于部分函数依赖,拆。对于传递函数依赖,拆。
B D
多值属性:家庭成员,包含多个值(职工亲属不仅仅是一个)
派生属性:计算可以得到的属性
这是一个选课表。候选键是(学号,课程号),存在非主属性(学分)对主属性(课程号)的部分函数依赖。
解决方案:把[课程号,学分]放到另外一个表里面,这样子现在的表就只有[学号,课程号,成绩],课程号作为外键
这是一个学生表,候选键是学号。这里学号->系号->系名,学号->系号->系位置,因此存在非主属性(系名/系位置)传递依赖与候选码(学号)
解决方法:把[系号,系名,系位置]放到另外一个表里面,这样子现在的表就只有[学号,姓名,系号],课程号作为外键
△:当没有满足第三范式的时候,都会存在数据冗余、更新异常、插入异常、删除异常
修正后的第三范式
这里候选码是 (S,J) 和 (T,S),因为(S,J)->T, T->J, T部分依赖于候选码,T的决定因素不包括R的候选码
设计数据库一般不使用BC范式,分解太细了
C
根据问题来看,这里并没有部分函数依赖又不满足第三范式,那就是没有消除非主属性对码的传递函数依赖
D 部门和职工是一对多,因此要在职工表上面修改
A
只有日期、单价(根据表2,商品号->单价)和数量才能算出月销售额
无损分解
如果有冗余依赖,一定要先去掉冗余,再来判断
例1:保持了。R1包含了A和B的关系,R2包含了B和C的关系
例2:保持了。这里存在冗余函数依赖A->C,因此可以去掉。
判断是否无损分解有3种方法:
- 自然连接法
- 表格法
- 公式法
是无损分解
自然连接法
将X改成√的前提是需要决定因素是√,那么被决定因素就可以的X就可以打成√了
表格法
第一个是无损,第二个是有损
公式法。只适用于关系模式分解为2个关系模式的情况
C 根据入度为0的方式来找,这里只有C满足,排除法
D 表格法
上面是公理(公理系统),下面是推论
X->Y,则WX->WY->Z,故XW->Z
并发控制
S封锁-共享锁,读锁
X封锁-写锁,排他锁,独占锁
丢失修改即丢失更新
S锁(读锁)—> 对于T1如果对A加了读锁,其他事务只能在A上加读锁,不能加写锁。事务T1自己可以升级S锁到X锁。
X锁(写锁)—> 对于T1如果对A加了写锁,其他事务不能对A加任何锁。
上面说明了写锁具有排他性。
T2这里应该是读A=5
T1的⑧应该要加上释放对A的写锁
ROLLBACK会还原所有状态,因此写锁就被解除了
数据库完整性约束
数据库安全
数据库备份
插入、删除、更新都需要记录到日志,变更前后的都要记录
数据库故障与恢复
系统故障又称为软故障
介质故障又称为硬件故障
可预期故障,如编程里面的逻辑错误
分布式数据库
分布透明性-用户不需要关心数据库的分布,故透明
分布式:物理上分散存储
NoSQL
处理高并发和海量数据存储问题。代表Redis、MongoDB等
向上扩展(垂直扩展):升级机器配置,如内存,CPU
向外扩展(水平扩展):数据库集群,主从数据库
反规范化
牺牲空间,压缩时间,增加冗余
分割表 - 把一个表经常查询的部分字段分割出来,加快查询速度,和重新组表(提取不同表的常用查询部分)相似的意思
内存数据库
需要定期数据备份,费内存,成本高
数据库性能优化
何谓大数据
本文链接: http://www.ionluo.cn/blog/posts/79d4efca.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!