原创 操作系统-页面淘汰算法(下)-软件设计(二十六)https://blog.csdn.net/ke1ying/article/details/129508391
三级模式-两级映射:
内模式、概念模式、外模式。
内模式指内部视图。(主要关注数据的存放)
概念模式指表DBA视图等。
外模式指用户视图。
外模式 ->通过外模式-概念模式映射 到
概念模式 ->概念模式-内模式映射 到 内模式
- R模型:
方框 表示实体、椭圆表示属性、菱形表示联系。
学生和课程 中间有一层联系,就是选课,所以是菱形。
M和N表示多对多的关系,一个学生可以选择多门课,一门课也可以被多个学生选择。
集成方式:
- 多个局部E-R图一次集成。
- 逐步集成,用累加的方式一次集成两个局部E-R。
集成产生的冲突及解决办法:
属性冲突、包括属性域冲突和属性取值冲突。
命名冲突、包括同名异义和异名同义。
结构冲突、不同抽象级别(比如老师即是表又是另一个表里的字段)。
E-R模式转换关系模式:
一个实体转一个关系模式
1对1则 有两个关系模式,这个联系可以记录在实体A也可以记录在实体B。
1对N则 联系也可以记录在单个那边,也可以记录在n那边。至少两个关系模式。
(比如 部门和员工,正常把联系记录在员工那边,因为部门对员工是1对多,只要在员工表加部门号就可以解决)
M对N则 多对多至少转三个关系模式,算上联系可以转四个。
关系代数:
并:两个集合并在一起,两个集合都有的只显示一次。
交:相同的才显示。
差:也就是把相同部分减掉,取剩下的并。
笛卡尔积:就是两个集合相乘。3*3至少9条对应的数据。
连接:指两个集合某个字段等值连接。
规范化理论-价值与用途:
非规范化的情况下存在 数据冗余、更新异常、插入异常、删除异常。
超键:唯一标识元组。
超键和候选键的区别,超键存在冗余属性。
比如学号 和姓名 性别,他们都可以确定性别,学号+姓名 不能是候选键,因为学号 和姓名都能分别确定性别,他有冗余属性。
候选键:也是唯一标识元组。(没有冗余属性)
主键:候选键和主键区别,候选键有多个,主键只能有一个。
外键:其他表关系额主键。
将关系模式的函数依赖用“有向图”的方式表示。
找入度为0的属性,并以该属性集合为起点,遍历有向图,若能遍历所有节点,则该属性是候选键。
若没有入度为0的属性,尝试找中间节点,即有入度也有出度。
例题1里,因为A1可以遍历全部节点,所以候选关键字是A1。
例题2的ABD->E意思是三条线合并指向E,而不是单独指向E。
单独指向代表A->E,B->E,D->E
例题2的候选码是组合键ABCD
例题3中没有入度为0的属性,A和B都是候选关键字。不能写成AB。
必考-范式:
1NF、2NF、3NF、BCNF。
1NF:属性值必须是不可以继续拆分的原子值。
消除非主属性对候选键的部分依赖
则就到了2NF
消除非主属性对候选键的传递依赖
则就到了3NF
消除主属性对候选键额传递起来
则就到了BCNF
逐步越来越优化、解决插入异常、删除异常、数据冗余等。
(主属性:候选关键字)
第一范式如何达到了,必须字段不可分,比如有字段学校名称,高级职称,这种显然不满足1NF,这时候把高级职称改为教授,副教授,则满足,因为不可拆分的原子值。
第二范式,必须每一个非主属性完全依赖主键(不存在部分依赖)。
如图SNO和CNO必须组合起来才是主键,因为学生会对应多门学科,所以学生和学科组合在一起才是主键。
而CREDIT学分则是对应学科就能确定,所以他是部分依赖,需要拆分。
导致数据冗余,更新异常等问题。
这时候插入也会有问题?
比如向录入C08学科的学分,但是不能录入,因为学科和学生在这个表里强绑定,必须有学生学习才能录入学分,显然这是不合理的。
更新也会有问题?
如果只更新两条会导致问题,所以每次更新学分要更新很多没必要的数据。
删除异常?
这时候这届学生毕业,把学生数据清空,导致了学分也消失。
这里主属性就是SNO和CNO,非主属性就是剩下的两个。
如图主键只有单属性,这时候肯定满足2FN,因为不存在部分依赖。
这种解决办法就是把DNO和DNAME和LOCATION拆分出来独立建表。
重点,这里S是到不了T的,必须S学生和J课程的组合才能到T老师。
所以S是不能做候选键的,必须是SJ做候选键。
其中ST也可以做候选键,虽然S不能到T,但是T可以到J,所以也可以遍历完。
所以 这里主属性 STJ都属于。
那么这是不是BCNF呢?
上面知道SJ->T ST由T>J
这里SJ是候选键,而T不是候选键,所以这里不是BCNF。