软考-- 软件设计师(15)-- 数据库:规范化、控制功能、大数据
文章目录
前言
考试时间:每年5月、11月,软件设计师每年都会开考。
考试条件:三不限
考试形式: 一共两门
计算机于软件工程基本知识--120分钟--机考--选择题--75分(45及格)
软件设计--120分钟--机考--简答题(4道必做,1道二选一做)--75分(45及格)
两门都得一次性及格才算通过,一共4小时考试时间。
软件行业从事人员学习视频:https://www.bilibili.com/video/BV1Qc411G7fB?vd_source=d82c92f6c1fd8c6785c6b557a68cb7b3
推荐博客:http://t.csdnimg.cn/5VzY5
推荐bilibli博主:zst_2001
由于本人从事软件开发4年,有一定的基础,所以本系列博客笔记皆从于第一个视频记录笔记。
一、章节考点
二、规范化
这边博主讲的有点乱,我自己整一下:
推荐博客:http://t.csdnimg.cn/JkKBn
候选键:关系中的一个属性组,其值能唯一标识一个元组。若从属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作
候选键。例如:成绩(学号,课程号,成绩),其中候选键为(学号,课程号),去除其中任意一个都无法唯一标识这个元组。
主属性:任何一个候选键中的属性称作主属性。(请记住这个概念)
主键:用户从一个关系的多个候选键中,选定一个作为老大,就是主键。
键 :也叫 码,英文key,其实表示的就是候选键,有些题目或者讲解说的 键/码,直接理解为候选键就行了。
函数依赖:属性X-->Y,也就是属性X决定Y,则Y函数依赖X,简称Y依赖X;
部分函数依赖:属性X-->Y,属性XZ-->Y,说明Y不完全依赖于X,则称Y部分依赖X;
这里要区分1NF转为2NF:在1NF基础上,消除 【非主属性】 对 【候选键】 的部分依赖,则称它符合2NF。
传递函数依赖:属性X-->Y、Y-->Z,则称作存在传递依赖。
这里要区分2NF转为3NF:在2NF基础上,消除 【非主属性】 对 【候选键】 的传递依赖,则称它符合3NF。
决定因素:属性X-->Y,则X为决定因素。属性XZ-->Y,则XZ为决定因数。
1NF:关系中每一属性不可再分。即不能以集合、序列等作为属性。(也就是不能表中套表,要保证数据的原子性。)
2NF:在1NF基础上,消除 【非主属性】 对 【候选键】 的部分依赖。
3NF:在2NF基础上,消除 【非主属性】 对 【候选键】 的传递依赖。
BCNF:在3NF基础上,消除【主属性】对键的【传递依赖】,则称它符合BCNF。根据参考博客理解为:对于关系模式R,如果每一个
函数依赖的【决定因素】都包含【候选键】,则R属于BCNF范式。
ex:
现有关系模式:通讯(城市名,街道名,邮政编码),函数依赖关系集为:F={(城市名,街道名)->邮政编码,邮政编码->城市名},
此时,候选键(城市名,街道名)非主属性邮政编码完全依赖于候选键,且无传递依赖,属于3NF。
那么它是否属于BCNF呢?
答:不属于
解析: 对于决定因素(城市名,街道名),它包含键(城市名,街道名),其实它本身就是键了,没问题;
对于决定因素邮政编码,它不包含键(城市名,街道名)
所以它不属于BCNF。在关系模式R中,如果每一个决定因素都包含码,则R属于BCNF。
常考题解题思路:
1、求候选码、主属性?
1)、将函数依赖集用有向图表示;
2)、找入度为0的属性,并且以该属性为起点,尝试遍历有向图所有节点,若能则该属性为此关系模式的一个候选键;
3)、若入度为0的属性无法遍历图中的所有节点,则将中间节点(既有入度,也有出度)的加入集合进来,直至该集合能遍历所有节点
Tips:入度为0的点,要不就直接是候选键,要不就是候选键集合中的一个值。
2、判断关系范式X是哪个规范?
1)、如果关系X中每一属性不可再分,则其可能是1NF,2NF,3NF,BCNF。
2)、找出题中所有的候选键;找出所有的主属性;
3)、看看函数依赖集中是否存在【非主属性】对【候选键】的【部分函数依赖】;若存在,则说明X为1NF,否则可能是2NF,3NF,
BCNF。
4)、看看函数依赖集中是否存在【非主属性】对【候选键】的【传递函数依赖】;若存在,则说明X为2NF,否则可能是3NF,BCNF;
5)、看看函数依赖集中是否存在【主属性】对【候选键】的【传递函数依赖】若存在,则说明X为3NF,否则是BCNF;(就是看看每
一个函数依赖的【决定因素】是否都包含【候选键】,都包含是BCNF,否则3NF);
3、1NF规范化为2NF?
1)、找出题中所有的候选键;找出所有的主属性;
2)、看看函数依赖集中是否存在【非主属性】对【候选键】的【部分函数依赖】;若存在则将这个【部分函数依赖】拆开来
4、2NF规范化为3NF?
1)、找出题中所有的候选键;找出所有的主属性;
2)、看看函数依赖集中是否存在【非主属性】对【候选键】的【传递函数依赖】;若存在则将这个【传递函数依赖】拆开来
4、3NF规范化为BCNF?
1)、找出题中所有的候选键;找出所有的主属性;
2)、看看函数依赖集中是否存在【主属性】对【候选键】的【传递函数依赖】;若存在则将这个【传递函数依赖】拆开来
三、数据库的控制功能
四、大数据、数据仓库