Part10.数据库基础和数据库设计
一.数据库系统
1.三级模式两级映射
2.E-R模型
例题:
3.数据库操作和运算
4.函数依赖
例如:UserId确定UserName,则:UserId–>UserName 或者称 UserName 依赖UserId
二.关系型数据库的规范化理论
1.规范化理论的价值
2.键
例如: 有字段 学号,身份证号,姓名,性别;
(学号,身份证号,姓名)这个组合能确定性别,那么这个组合可以认为是超键;
很明显,在超键中,姓名是多余的,消除多余的字段后,剩下学号和身份证号为候选键;
在候选键中任选一个,都能当主键。
(1)求候选健
解题关键点:先画出关系图
例1:入度为0的有A1,从A1能确定其他的属性,所以候选关键字是A1,选A
例2:ABCD的组合为候选键
例3:A和B都可以确定其他的属性,选B
3.范式理论规范(3大范式)
主属性:候选关键字包含的属性。
解:去掉高级职称人数字段即可。
解:本题主键由2个字段组成(学号、课程号---->一般情况下主键只有一个,但是本题就是有2个,没得办法),非主属性完全依赖主键的意思是:分数字段和学分字段必须由主键同时作用才能推断下来,很显然,(学号、课程号)一起才能推断出分数,但是课程号就可以直接推断出学分,所以学分属性只是部分依赖主键,并没有完全依赖。解决方案:拆分表,去掉学分字段,同时新建一张:课程号和学分字段的表
解:肯定符合第二范式,因为只有一个属性作为主键。但是非主属性DNO(部门号)能够推断出院系和楼号,所以非主属性DNO存在传递依赖,不满足3NF;解决方案:拆分表,去掉院系和楼号字段,新建一张表:部门号,院系,楼号
解:先画出图,然后能够确定候选关键字为SJ或者ST,如果满足BCNF,那么就应该满足SJ一起推断出T,和ST一起推断出J,很显然,本题单独T就可以推断出J,并不需要ST一起推断,所以不满足BCNF
4.模式分解
5.并发控制
6.完整性约束
7.安全、备份、恢复
8.数据仓库与数据挖掘
9.反范化技术
空间换时间的一种解决办法
三.数据流图
例题1
解:
【问题1】 E1:前端应用;E2:数据管理员;E3:后端数据库
【问题2】 D1:用户表;D2:操作表;D3:权限表
【问题3】
【问题4】 黑洞(有输入,无输出),奇迹(有输出,无输入),数据流命名(例如命名相同),输入流加工后产生不合实际的输出流
例题2
解:
【问题1】 E1:非信用卡客户;E2:信用卡客户;E3:银行
【问题2】
【问题3】信用卡申请表,起点应为E1,终点应为P4;激活请求:起点应该是E2,终点为P3;
【问题4】P1:交易信息查询;P2:客户信息管理;P3:信用卡激活;P4:信用卡申请;
四.数据库设计
答题技巧:认真审题
案例分析1
解:【问题1】n;n;m(别收到题目信息误导)
【问题2】:如下图所示
解:【问题3】
(4)员工号,部门号(容易错漏)
(5)客房号
(6)身份证号
(7)岗位
(8)客房号,身份证号
【问题4】:缺点:造成数据冗余;优点:减少一次连表操作,查询效率高
案例分析2
解:【问题1】:如图
【问题2】a:商场编号;b:部门编号;c:员工编号;
部门的主键为:部门编号,外键为商场编号
员工主键为:员工编号,外键为部门编号
经理的主键外键都为:员工编号
【问题3】
本文参考《软件设计师教程》及网络上的教程,如有侵权请联系删除