数据库系统
一、数据库三级模式两级映射https://i-blog.csdnimg.cn/blog_migrate/99664575389208d0a41207d990b5d275.png
二、数据库计划过程说明
https://i-blog.csdnimg.cn/blog_migrate/f7ba799de22ae522041681f43ebe21f6.png 三、E-R图
https://i-blog.csdnimg.cn/direct/cd6f565992c8492a88256db3a4a92d16.png
1:1一对一
两个实体之间是一对一的关系,一个班主任管理一个班级,一个班级只有一个班主任。
在1:1的关系中,在任意端的关系中选择一个要添加另一端实体的主键。
1:1的E-R图转换关系模式,2个实体中间的接洽可以归并到任意一边,也可以自成一个实体;
1:1的E-R图转换关系模式关系模式 (接洽无属性)
https://i-blog.csdnimg.cn/direct/e14ea59517ea43f3a4955492fef7ec5d.png
归到班主任一边
在班主任实体中添加班级实体的主键
班主任(姓名,性别,年事,班号)
班级(班号,人数)
归到班级一边
在班级实体中添加班主任实体的主键
班主任(姓名,性别,年事)
班级(班号,人数,姓名)
自成一个实体
接洽若无属性则在此中添加两个相连实体的主键
班主任(姓名,性别,年事)
班级(班号,人数)
管理(姓名,班号)
1:1的E-R图转换关系模式(接洽有属性)
https://i-blog.csdnimg.cn/direct/18e56f6e3835454b8edc61410151888f.png
归到班主任一边
在班主任实体中添加班级实体的主键+接洽自己的属性
班主任(姓名,性别,年事,班号,每周品级)
班级(班号,人数)
归到班级一边
在班级实体中添加班主任实体的主键+接洽自己的属性
班主任(姓名,性别,年事)
班级(班号,人数,姓名,每周品级)
自成一个实体
在此中添加两个相连实体的主键+接洽自己的属性
班主任(姓名,性别,年事)
班级(班号,人数)
管理(姓名,班号,每周品级)
1:n一对多
两个实体之间是1对多的关系,1个班级里面有多个学生。
在1:n的关系中,在n端的关系中肯定要添加1端实体的主键
1:n的E-R图转换关系模式,2个实体中间的接洽只能归到多的那一端实体中,也可以自成一个实体;
注:假如无法分清哪端是1哪端是n可以将自己想象为实体;
例如我是班级实体,我可以对应n个学生,那么对端学生就是n;
例如我是学生实体,我只可以对应一个班级,那么对端班级就是1
1:n的E-R图转换关系模式(接洽无属性)
https://i-blog.csdnimg.cn/direct/359565a67ea446118255b09d3e14b1f9.png
归到n端学生一边
在学生实体中添加1端即班级实体的主键
班级(班号,人数)
学生(姓名,学号,性别,班号)
自成一个实体
接洽若无属性则在此中添加n端实体的主键
班级(班号,人数)
学生(姓名,学号,性别)
拥有(姓名)
1:n的E-R图转换关系模式(接洽有属性)
https://i-blog.csdnimg.cn/direct/9252015db1d149bc88554fe850a1b3b0.png
归到n端产物一边
在n端产物实体中添加1端仓库实体的主键+接洽自己的属性
仓库(仓库号,地点,面积)
产物(产物号,产物名,价格,仓库号,数量)
自成一个实体
在此中添加n端实体的主键+接洽自己的属性
仓库(仓库号,地点,面积)
产物(产物号,产物名,价格)
仓储(产物号,数量)
m:n多对多
m:n的E-R图转换关系模式,2个实体中间的接洽只能自成一个实体,接洽实体内容是两头实体主键+接洽自己属性;
n:m的E-R图转换关系模式(接洽无属性)
https://i-blog.csdnimg.cn/direct/0fcdc87325ce4f8f9f9289218a51db14.png
自成一个实体
在此中添加2端实体的主键
课程(课程名,任课西席)
学生(姓名,性别,学号)
选修(课程名,姓名)
m:n的E-R图转换关系模式(接洽有属性)
https://i-blog.csdnimg.cn/direct/be3d52cf2b244c0c830e9e7aa58f5708.png
自成一个实体
在此中添加2端实体的主键+接洽自己属性
课程(课程名,任课西席)
学生(姓名,性别,学号)
选修(课程名,姓名,成绩)
E-R图实例
如遇见较为复杂的关系需要画E-R图时,可以先将各个主体画出然后连接;
例:
集团有多个商店。在其信息系统中,对商店记录有商店编号、商店名、地址等信息;对销售的 商品记录有商品号、商品名、规格、单价等信息;对其 职工记录其职工编号、姓名、性别和业绩品级(良好、良好、较差)等。每个商店可销 售多种商品,每种商品也可放在多个商店销售,每个商店销售每一种商品,需要记录每月的 销售量;每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工按照聘期规定 月薪发放工资,每个聘期长度为 1 年。
1、先分别画出实体及其属性
商店
https://i-blog.csdnimg.cn/direct/afa99aba84274979a419c9a3e4094d31.png
商品
https://i-blog.csdnimg.cn/direct/d3ff98df39fe4a00ae85cc77f7d95ea2.png
职工
https://i-blog.csdnimg.cn/direct/45a49be912e34e868b634eade836cb21.png
2、实体之间需要有所接洽
商店和商品的接洽是商店销售商品,进而产生月销售量属性,且一种商品可在多个商店销售,一个商店可以销售多种商品,因而是多对多。
https://i-blog.csdnimg.cn/direct/f4768280cf17403ea61e51d7372d5aa3.png
商店和职工的接洽是商店聘用职工,进而产生了聘期属性和月薪属性,一个商店可聘用多名职工,一个职工只能被一个商店聘用,因此是一对多
https://i-blog.csdnimg.cn/direct/52c7f7e8a0af4174944c5d69c9f9248c.png
3、末了举行组合
https://i-blog.csdnimg.cn/direct/b5120c68ea2345d69adc9145d6c21615.png
关系模式
写法1:
商店(商店编号,商店名,地址)
商品(商品号,商品名,规格,单价)
销售接洽两头是多对多,以是只能自成实体,两头实体主键+接洽自己属性
销售(商店编号,商品号,月销售量)
聘用接洽两头是1对多,以是归于多端,在多端添加对应1端的主键和接洽自己的属性
职工(职工编号,性别,姓名,业绩品级,商店编号,聘期,月薪)
写法2:
商店(商店编号,商店名,地址)
商品(商品号,商品名,规格,单价)
销售接洽两头是多对多,以是只能自成实体
销售(商店编号,商品号,月销售量)
职工(职工编号,性别,姓名,业绩品级)
聘用接洽两头是1对多,可以自成实体,添加多端的主键+接洽自己属性
聘用(职工编号,聘期,月薪)
多实体接洽
https://i-blog.csdnimg.cn/direct/6c2a28ffef394c9b83f7818011837578.png
关系模式
供应商(供应商号,供应商名,地址)
零件(零件号,零件名,单价)
产物(产物号,产物名,型号)
多对多连接,接洽自成实体,前3个属性是所接洽的3个实体的主键,后一个是接洽自身属性
供应(供应商号,零件号,产物号,数量)
例题:
https://i-blog.csdnimg.cn/blog_migrate/7d75d06663c84201911de573679d111b.png
答案:C
图中E-R模型是多对多,关系模型数量是3个实体+接洽所成实体 ,共4个关系模式
题型
数据库计划考察情势一般是大题,主考方向是E-R图以及对应关系模式的转换或补充,多个关系模式之间的接洽归属题目讲求细节。与数据流图类似,需要细致研读题干信息并将题干信息对应到图中。
一个部门有一个司理,一个司理管理一个部门,司理属于部门员工中一个特殊的员工,用下图表示。
此时司理的关系模式是,司理(员工号,任职时间),要表明是谁当了司理。
https://i-blog.csdnimg.cn/direct/aa289b36f6114f37872c144e2410a5f7.png
四、关系代数
1、并∪
两个表中的数据合在一起,重复的数据只保留一条
https://i-blog.csdnimg.cn/direct/73d096a0cbc64cdea252ef8849a4d880.png
2、交 ∩
保留两表中雷同的数据
https://i-blog.csdnimg.cn/direct/404a24b0597543d1bcf7d0dedefe283c.png
3、笛卡尔积x
表S1中的各条数据,各自分别对应一遍表S2中的各条数据(跟分列组合差不多)不会去掉雷同字段。
https://i-blog.csdnimg.cn/direct/f2751d36729b4b85883df8cd86bb2407.png
4、投影
实在是选择某几列的操纵
例如:选择表S1中的Sno列和Sname列,https://latex.csdn.net/eq?%5CpiSno,Sname(S1)
也可以用第几列来代表,比如Sno和Sname分别是第1,2列,也可以写作https://latex.csdn.net/eq?%5Cpi1,2(S1)
https://i-blog.csdnimg.cn/direct/7a4b28f40cd8469683bbfa2bfded5394.png
5、选择
选择与投影类似,投影选的是列,选择选的是行
例如:选Sno列中的No0003行,https://latex.csdn.net/eq?%5CsigmaSno=No0003(S1)
也可以用第几列来代表,比如https://latex.csdn.net/eq?%5Csigma1=No0003(S1)
https://i-blog.csdnimg.cn/direct/834eab8e857c46519d5da3f4c916942f.png
6、联接
按照两个表的雷同字段连接
例如S1和S2中只有Sno字段里的No0001是雷同的
则联接可以写为S1.Sno https://latex.csdn.net/eq?%5Ctriangleright%20%5Ctriangleleft S2.Sno,即按照字段Sno雷同的部门联接起来,然后只保留一个雷同字段No0001
也可以简写为S1 https://latex.csdn.net/eq?%5Ctriangleright%20%5Ctriangleleft S2,意思是默认寻找雷同字段举行联接
https://i-blog.csdnimg.cn/direct/d20378da0986499ead96a0193363504c.png
细节
联接和笛卡尔积
假如想要S1和S2联接后取字段Sno,Sname,Age
应该用投影写作https://latex.csdn.net/eq?%5CpiSno,Sname,Age( S1https://latex.csdn.net/eq?%5Ctriangleright%20%5CtriangleleftS2)或者 https://latex.csdn.net/eq?%5Cpi1,2,4( S1https://latex.csdn.net/eq?%5Ctriangleright%20%5CtriangleleftS2)
https://i-blog.csdnimg.cn/direct/24f6301cbab74c239f3f1c17fef2dc99.png
假如想要S1和S2取笛卡尔积后取字段Sno,Sname,Age
应该用投影写作 https://latex.csdn.net/eq?%5CpiSno,Sname,Age( S1xS2)或者 https://latex.csdn.net/eq?%5Cpi1,2,5( S1xS2) https://i-blog.csdnimg.cn/blog_migrate/936374623974ffea3a1116cb3eec6062.jpeg
https://i-blog.csdnimg.cn/direct/43a76c56ce484500a949bf99096ae0aa.png
五、规范化理论
规范化理论的代价与用途
不敷规范的数据表中大概存在数据重复等题目,造成数据杂乱无章影响后续对数据的一些操纵,以是提出规范化理论。
规范化理论的代价和用途就是:解决非规范化的关系模式所带来的数据冗余、更新异常、插入异常、删除异常等题目;
规范化理论 --- 函数依赖
例如:在函数y=https://latex.csdn.net/eq?x%5E%7B2%7D 中;
可以用x可以确定y的值,此时y的值是依赖于x取何值,故称作y依赖于x,可以写作x-->y,即x确定y,此为函数依赖。
部门函数依赖
https://i-blog.csdnimg.cn/blog_migrate/8e139b2a91da372a702df78293bc41f2.png
传递函数依赖
https://i-blog.csdnimg.cn/blog_migrate/4658adbe3007fe15d3bd9cf2f472966e.png
规范化理论 --- 键
https://i-blog.csdnimg.cn/blog_migrate/bf82f08c8b3c5dedd646d2479c547b9f.png
求解候选键
1.画有向图
将关系模式的函数依赖用有向图表示出来
2.入度为0且可遍历全图
https://i-blog.csdnimg.cn/blog_migrate/4c08be01e94c6d60f079e55960bf00bd.png
寻找入度为0的属性(没有入度),并以该属性集合为出发点,尝试遍历全图,若能遍历有向图中的全部节点,则该属性集为候选键。
3.上述两条件无法全部满意时
环境①:
若有向图中没有入度为0的属性,则需要尝试中间节点(既有入度又有出度的节点),用其遍历有向图,若能遍历全图则为候选键;
环境②:
若单个入度为0的属性并不能遍历全图,此时思量多个入度为0的属性合并形成集合作为候选键。
环境③:
单个入度为0的属性不能遍历有向图则,而此时又没有其他的入度为0的属性,则思量将同时有入度和出度的属性与入度为0的属性合并形成集合作为候选键;
例题
例1:
https://i-blog.csdnimg.cn/blog_migrate/e06f16400e44285e713a9aab83b627ad.png
答案:A
据给定关系画有向图
https://i-blog.csdnimg.cn/blog_migrate/fe1dea4e052994218d17413b6a848fff.png
据图可知,属性A1入度为0,且从A1出发能遍历全图(如图中红色虚线所示),以是属性A1为候选键。
例1解题思路:
画出有向图,寻找入度为0的属性遍历全图即可解决
例2:
https://i-blog.csdnimg.cn/blog_migrate/3bb0afac6845d2d91284b7760bc1d84e.png
答案:ABCD
据给定关系画有向图
https://i-blog.csdnimg.cn/direct/9510addc8b3745d79b8fd68592709202.png
由上图可知,入度为0的属性是ABCD4个属性,但是此中任意一个都无法遍历全图,4个属性合在一起才华遍历全图,因此此标题中的候选码是ABCD四个属性的集合
例2解题思路:
符合上述环境②,用多个入度为0的属性合并作为集合可遍历全图
注:
注意区分(A-->D;B-->D;C-->D) 、( ABC-->D)、(D-->ABC)
https://i-blog.csdnimg.cn/blog_migrate/c131585969bd164b338e2e0895e3e7be.pnghttps://i-blog.csdnimg.cn/blog_migrate/a5eab9eb1587bd7e4345502bea6cd905.pnghttps://i-blog.csdnimg.cn/blog_migrate/8bc6276891ca356eb104e3da08da9526.png
例3:
https://i-blog.csdnimg.cn/blog_migrate/b97282ea3fd0af2cd012819e04e72bbe.png
据给定关系画有向图
https://i-blog.csdnimg.cn/blog_migrate/2d6d22bfce64e826f871b84c4ff426d5.png
此有向图中不存在入度为0的属性,以是寻找有入度和出度的属性,即属性A,属性B;
从属性A出发可以遍历全图,从属性B出发也可以遍历全图,因此在此标题中,候选键为,A和B;
例3解题思路:
符合上述环境①,没有入度为0的属性,则需要尝试中间节点(既有入度又有出度的节点),用其遍历有向图。
注:
注意区分 AB 与 A和B ;AB表示的是属性集合AB作为一个候选键;而A和B表示属性A和属性B都是候选键;
例4:
https://i-blog.csdnimg.cn/blog_migrate/dd1280366b0b95b6283b277272526b93.png
据给定关系画有向图
老师T可以确定课程J(T-->J);学生S和课程J可以确定老师(SJ-->T);以是得下图
https://i-blog.csdnimg.cn/blog_migrate/45c4b50a422ad26341055a30f1dc2241.png
此有向图中入度为0的属性是属性S,属性S并不能独自遍历全图,且没有其他入度为0的属性,以是寻找既有入度又有出度的属性并入入度为0的属性中作为合集遍历全图;
属性T和属性J均是既有入度又有出度的属性,
属性ST团结:T可指向J,可以遍历全图,以是SJ是候选键;
属性SJ团结:SJ指向T已经遍历完全图,以是ST是候选键;
例4解题思路:
符合上述环境③,单个入度为0的属性不能遍历有向图则,而此时又没有其他的入度为0的属性,则思量将同时有入度和出度的属性与入度为0的属性合并形成集合作为候选键;
注:
此类寻找候选键的标题中,极易出现同时存在多个候选键的环境,若时间充裕注意细致寻找
六、规范化理论--范式
第一范式(1NF)
在关系模式R中,当且仅当全部域只包罗原子值,即每个分量都是不可再分的数据项,则称R是第一范式。
可明白为在一张数据表中,当列名(属性)不可拆分时则称此表是第一范式。
例如:
姓名个人信息张三手机号:xxxxx,年事23王五手机号:xxxxx,年事25 上表中列个人信息可拆分为手机号、年事两列,以是不是第一范式;
改为第一范式应是:
姓名手机号年事张三xxxxx 23
王五xxxxx25 上表中每一列都不能再拆分,故此表为第一范式。
第一范式的重点:
确保原子性,即每一列数据都不能再拆分。
第二范式(2NF)
当且仅当关系R已经是第一范式时,且每一个非主属性完全依赖主键(即不存在部门依赖)时,则称关系R是第二范式。
主键可以由多个主属性构成,也可以由单一主属性构成。
可以明白为:当一张表已经是第一范式,且非主属性只能由全部主键推出,不可以由部门主键推出时满意第二范式要求。
例如:
学号(SNO)课程号(CNO)成绩(GRADE)学分(CREDIT)S01C01754S02C01924S03C01874S04C01554S01C02872S02C02952S01C03945.................. 上表中,每一列都不能再拆分,以是此表满意第一范式,(一个学生可以选多个课程,因此学号和课程号单独一个都无法确定成绩,必须二者合起来才华确定学生成绩,以是2个红色属性合并称为一个主键),由主键中的部门属性课程号可以直接确定学分,以是非主属性学分是部门依赖主键,以是上表中存在部门依赖,不满意第二范式;
表中存在题目:
数据冗余:
课程C01对应的学分是4分在表中多次出现;
更新异常:
假如数据多次重复存在,在更新时极易漏更;
插入异常:
假如想要插入新的课程C05学分是6分,但此课程并没有学生选,以是对应的学生学号不存在,但是学号(SNO)是主键,想要插入数据主键不能为0,以是无法插入此课程;
删除异常:
假如此表中的学生已经全部结业,可以删除他们的成绩,但是学校每届的课程和课程的学分是稳定的,此时假如删除成绩,其他属性大概会被连带删除;
改为第二范式应该是:
将表举行提取,分成2个表;
表1:表1中的非主属性完全依赖主键,不存在部门依赖,以是满意第二范式
学号(SNO)课程号(CNO)成绩(GRADE)S01C0175S02C0192S03C0187S04C0155S01C0287S02C0295S01C0394.................. 表2: 主键由一个属性构成,不存在部门主键,因此也就不存在部份依赖,以是满意第二范式。
以是假如表满意第一范式,且表中的主键只有一个属性的环境下此表满意第二范式。
课程号(CNO)学分(CREDIT)C014C014C014C014C022C022C035...... 而进一步可将表2简化为
课程号(CNO)学分(CREDIT)C014C022C035...... 可以解决掉部门: 数据冗余,更新异常,插入异常,删除异常等题目。
第二范式的重点:
确保唯一性,即一张表叙述一件事,例如表1只表述学生的课程成绩,表2只表述课程的学分。
第三范式(3NF)
当且仅当关系R已经满足第一范式和第二范式时,且表中没有非主属性传递依赖于主键时,则称关系R满意第三范式。
可以明白为:一个表满意第一、二范式的环境下,假如表中的非主键可以直接依赖于主键,而不是传递依赖于主键时,此表满意第三范式。
例如:
学号(SNO)姓名(SName)系号(DNO)系名(DNAME)系住址(LOCATION)S01张三D01计算机系1号楼S02李四D01计算机系1号楼S03王五D01计算机系1号楼S04赵六D02信息系2号楼.............................. 上表中,主键是学号(SNO),表中各列不可再拆分满意第一范式,主键是单一属性不存在非主属性部门依赖主键,满意第二范式;
表中,根据学号可以直接推出姓名和系号,但是根据学号无法得到系名和系住址,
只能根据学号推得系号再推得系名,因此系名与学号之间不是直接依赖关系而是间接依赖关系;
https://i-blog.csdnimg.cn/blog_migrate/5a1356f50a37b9ebe301c7b901f36f23.png
据学号推得系号再推得系地址,因此系住址与学号之间不是直接依赖关系而是间接依赖关系;
https://i-blog.csdnimg.cn/blog_migrate/7cf894ff4d047f4336a83261b01f5571.png
因此表中非主属性系名,和非主属性系住址,与主键之间都是间接依赖,以是不满意第三范式。
上述表中仍然存在部门: 数据冗余,更新异常,插入异常,删除异常等题目。
改为第三范式应该是:
将表举行提取:分成2个表:
表1:主键是学号,非主属性姓名和系号均直接依赖于主键学号,表中不存在间接依赖关系,因此满意第三范式
学号(SNO)姓名(SName)系号(DNO)S01张三D01S02李四D01S03王五D01S04赵六D02.................. 表2:主键是系号,非主属性系名和非主属性系住址均直接依赖于主键学号,表中不存在间接依赖关系,满意第三范式。
系号(DNO)系名(DNAME)系住址(LOCATION)D01计算机系1号楼D01计算机系1号楼D01计算机系1号楼D02信息系2号楼.................. 而进一步可将表2简化为
系号(DNO)系名(DNAME)系住址(LOCATION)D01计算机系1号楼D02信息系2号楼.................. 可以解决掉部门: 数据冗余,更新异常,插入异常,删除异常等题目。
第三范式的重点:
确保独立性,除主键之外,每个属性之间不存在任何情势的依赖,即每个非主属性只完全依赖于主键。
BC范式(BCNF)
BC范式又称巴斯-科德范式或3.5范式,主要是对第三范式的补充,因为第三范式只明白非主属性之间不能存在依关系,并没有明白主键(特指多个属性组成的团结主键)之间不能存在依赖关系,BCNF修正的就是这一点。
上述利用概念区分范式的方式在BCNF中应用起来较难明白(实在主要是因为我不会),以是一般使用如下方法:
BC范式判断方法:
首先满意第一、二、三范式,再用有向图求解候选键(一般此类环境存在多个候选键),依次写出候选键的依赖关系,假如依赖关系的左边均是候选键,则可以确定此关系满意BC范式。
https://i-blog.csdnimg.cn/blog_migrate/dd1280366b0b95b6283b277272526b93.png
据给定关系画有向图
老师T可以确定课程J(T-->J);学生S和课程J可以确定老师(SJ-->T);以是得下图
https://i-blog.csdnimg.cn/blog_migrate/45c4b50a422ad26341055a30f1dc2241.png
此有向图中入度为0的属性是属性S,属性S并不能独自遍历全图,且没有其他入度为0的属性,以是寻找既有入度又有出度的属性并入入度为0的属性中作为合集遍历全图;
属性T和属性J均是既有入度又有出度的属性,
属性ST团结:T可指向J,可以遍历全图,以是SJ是候选键;
属性SJ团结:SJ指向T已经遍历完全图,以是ST是候选键;
每个属性不可再拆分,满意原子性即满意第一范式;
候选键中出现的属性均为主属性,以是此标题中STJ三个属性均为主属性,不存在非主属性。
没有非主属性,即不存在非主属性部门依赖主属性,满意第二范式;
没有非主属性,即不存在非主属性之间存在传递依赖,满意第三范式;
此标题有两个候选键,分别是ST和SJ;而他的依赖关系是T-->J 和 SJ-->T,此中依赖关系T-->J 的左侧不是候选键,以是不满意BC范式依赖关系的左边均是候选键的要求,因此,此关系不满意BC范式。
例题:
https://i-blog.csdnimg.cn/blog_migrate/01413a82022da9a3ebe8a78da25e983f.png
此类例目题严酷来讲并不美满,存在许多地方并不严谨,做此类标题时最好根据选项判断,从选项中选择相对更正确一些的,或者直接根据选项的思路做清除。
题目(1):
A:部门依赖的只存在于主键(主码)是由多个主属性构成的环境下,标题中并未说明主键是单属性照旧多属性,而单属性部门号完全可以做主键,以是当单属性部门号作为主键时,存在的说传递依赖而不是部门函数依赖,故清除。
B:同样在单属性做主码时,不存在部门函数依赖,故清除。
C:在单属性做主码时,已经不存在部份依赖只存在传递依赖,故选择。
D:同样在单属性做主码时,不存在部门函数依赖,故清除。
题目(2):
此空与题目(3)相关联,而(3)的选项中添加的是销售,即(2)中需要美满的只有职工号、部门号、姓名。因此可以清除BC,部门实体与职工实体之间是一对多的关系,接洽E-R图,一般会将少的加在多的一方,以是选D。
题目(3):.
选项中可以确定是需要添加销售关系,第一项是职工号,题目(2)竣过后,职工号已经可以确定部门名了,以是为了制止冗余,二者保留其一,故清除CD,而选项B中,商品号和商品名二者存在冗余,以是二者选其一就可,故选A。
接洽
https://i-blog.csdnimg.cn/blog_migrate/0d1e82f05dfb85b62fa9cc4694cf6169.png
反规范化
规范化是为了镌汰数据的冗余提高增、删、改的速率,但是由于表不绝被拆分,导致表的数量过多增加了查询的工作量,系统需要举行多次连接才华举行查询操纵,使得系统效率下降,因此提出反会反规范化理论。
反规范化理论的操纵过程:
增加派生性冗余列、增加冗余列、重新组表、分割表。
七、规范化理论--模式分解
保持函数依赖分解
将一个关系模式按函数依赖举行分解,分解后该模式的函数依赖仍然成立。
例如:
关系内不存在冗余
关系R(A,B,C)中,有A、B、C三个属性
依赖关系是:A-->B ; B-->C;
假如划分为 R1(A,B);R2(B,C)则称之为保持函数依赖划分;
关系内存在冗余
关系R(A,B,C)中,有A、B、C三个属性
依赖关系是:A-->B ; B-->C ; A-->C;
由A-->B ; B-->C ;可知A-->C;以是A-->C;是关系冗余
假如划分为 R1(A,B);R2(B,C)则依然称之为保持函数依赖划分;
有损、无损分解
有损分解:
是不能还原的,例如将一张照片压缩为jpj格式,此时放大看照片会模糊,这便是有损压缩;
无损分解:
是可以还原的,例如将文件压缩成压缩包,然后解压之后还能得到原来的文件,这便是无损分解;
无损联接分解:
将一个关系模式分解成若干个关系模式之后,通过自然联接和投影等运算仍能还原到原来的关系模式。
例:
有关系模式
成绩(学号,姓名,课程号,课程名,分数);
函数依赖:学号→姓名,课程号→课程名,(学号,课程号)→分数
若将其分解为
成绩(学号,课程号,分数)
学生(学号,姓名)
课程(课程号,课程名)
思考此分解是否为无损分解
思路:
由于关系:学号→姓名,可以将两个带有学号属性的关系举行连接
成绩(学号,课程号,分数) 联接 学生(学号,姓名)
得到 成绩(学号,课程号,分数,姓名)
由于关系:课程号→课程名,可以将两个带有课程号属性的关系举行连接
成绩(学号,课程号,分数,姓名)联接 课程(课程号,课程名)
得到 成绩(学号,姓名,课程号,课程名,分数)即可以规复到原来关系
方法一:列表
https://i-blog.csdnimg.cn/blog_migrate/7714a8541b1bc1ea67915b625dc56bd5.png
首行表示原有关系 成绩(学号,姓名,课程号,课程名,分数)
下面三行分别表示原有关系分成了成绩、学生、课程三个子关系
a表示在此行对应的子关系中存在该属性;b表示在此子关系中对应的属性不存在,a的下标是列号,b的下标是行号列号。
例如:成绩行中的内容表示子关系成绩(学号,课程号,分数)
根据成绩(学号,课程号,分数)关系 联接 学生(学号,姓名)关系
得到 成绩(学号,课程号,分数,姓名)
如下图所示:
https://i-blog.csdnimg.cn/blog_migrate/99fa3bee8bfd0dacd3b227c544e98ccd.png
再根据上述成绩(学号,课程号,分数,姓名)联接 课程(课程号,课程名)
得到 成绩(学号,姓名,课程号,课程名,分数)如下图所示:
https://i-blog.csdnimg.cn/blog_migrate/7ea573a4e2549b8487f16fbe1897819b.png
由上图可知,成绩一行已经全部为a,即代表可以规复到原来关系,即本次分解为无损分解。
方法二:计算
此方法十分高效但是具有很强的范围性,只能用于将一个关系一分为二,一分为三则不适用。
https://i-blog.csdnimg.cn/blog_migrate/49991fb77c44d5b54045e2c4c9677105.png
例题
https://i-blog.csdnimg.cn/blog_migrate/44d1ed75dffcc034abc7b1c4e9affb12.png
标题意思是,有关系R中存在三个属性A、B、C;将这三个属性分别按照ρ1,ρ2两种方法举行分解,ρ1中将其分为R1,R2两个关系R1中包罗属性A、B;R2中包罗属性A、C;
按照上述定理
分解方式ρ1
R1∩R2=A;R1-R2=B;R2-R1=C;
R1∩R2 → (R1-R2) = A→B(得到依赖关系A→B);
R1∩R2 → (R2-R1) = A→C(得到依赖关系A→C);
依赖关系A→B与A→C只要能有一个在标题给定得原始关系中存在过则说明是无损分解。
依赖关系A→B与A→C能够对应标题中的A→B,因此分解方式ρ1是无损分解
同理分解方式ρ2
R1∩R3=B;R1-R3=A;R3-R1=C;
R1∩R3 → (R1-R3) = B→A(得到依赖关系 B→A);
R1∩R3 → (R3-R1) = B→C(得到依赖关系B→C);
依赖关系B→A与B→C只要能有一个在标题给定得原始关系中存在过则说明是无损分解。
依赖关系B→A与B→C均无法对应标题中的A→B因此分解方法ρ2不是无损分解是有损分解。
八、数据库并发控制
事件
将多项存在关联性操纵举行封装,看作一个团体再对其举行操纵,此团体叫做事件,事件拥有4个特性:以银行转账为例
原子性:
银行转账过程中,动作1:从A卡里扣除钱;动作2:将钱打入B卡里;假如举行转账操纵,则两个动作都需要做,假如不做就都不能做,否则会出现错误题目,即将两个动作看作不可分割的团体此为原子性。
一致性:
银行转账前,A卡和B卡一共有多少钱,转账之后依然应该是多少钱,只不外是发生了钱数的转移,操纵前后团体是一致的,类似于能量守恒定律,此为一致性。
隔离性:
事件之间是独立举行的,隔离的,互不影响。
一连性:
事件实行之后他的效果的影响是一连的,例如转账之后A卡里永远少了钱,B卡里永远多了钱。
并发操纵
可以明白为:并发操纵是指多项事件同时对数据举行操纵,但数据一次只能对接一个事件的操纵,例如数据一次只应对一个事件的读取,以是多个事件的读取要分先后顺序,写入也要分先后顺序,因此并发操纵会产生一系列的题目:
https://i-blog.csdnimg.cn/blog_migrate/e200340705ad9cc16fe5f2af3f198ef9.png
丢失更新:
第④步写回的效果会覆盖第③步写回的效果,因此最终的效果是A=2,事件1更新的效果丢失
事件1事件2①读A=10②读A=10③A=A-5写回④A=A-8写 不可重复读题目:
事件1中对AB举行求和,然后为保证正确性会二次读入举行验算,但第二次读入的数据A是事件2写回的效果,以是事件1会出现错误。
事件1事件2 ①读A=20
读B=30
求和=50
②读A=20
A=A+50
写回=50
③读A=70
读B=30
求和=100
(验算错误)
脏数据的读出:
脏数据并不是实质产生的数据,只是实行过程中临时出现的数据。
事件1事件2 ①读A=20
A=A+50
写回70
②读A=70 ③ROLLBACL(回滚规复原值)
A规复为20
一级封锁协议
在事件T修改数据R之前必须先对其加X锁(写锁),直到事件竣事才释放,可以防止丢失修改。
例如:
丢失更新中,在事件1修改数据A=10之前加X锁,直到事件1竣过后再释放;在释放之前事件2都不能修改数据A的值。
二级封锁协议
在一级封锁协议的基础之上,读取数据R之前加S锁(读锁);读完之后即可释放S锁,可防止丢失修改,还可防止读到脏数据。
例如:
丢失更新中,在事件1读取A=10之前加S锁,事件1读取A=10之后再释放;在释放之前事件2都不能读取数据A的值。
对于同一数据,读锁之上还能加读锁,写锁之上不能加任何锁;
三级封锁协议
一级封锁协议加上事件T在读取数据R之前先对其加S锁,直到事件竣事才释放。可防止丢失修改、放置读脏数据、防止数据重复读取。
例如:
丢失更新中,在事件1读取A=10之前加S锁,事件1完全竣事之后再释放;在释放之前事件2都不能读取数据A的值。
两段锁协议
两段锁协议最大的特点是可串行化,大概发存亡锁,死锁可预防可排除。
九、数据库完整性约束、数据库安全
实体完整性约束
实体完整性约束是针对表中的主键来说的,即数据表中必须界说主键,主键内容不能为空,不能重复。
参照完整性约束
参照完整性约束是针对外键
例如:
员工(员工号,姓名,性别,部门号);部门(部门号,部门名,人数)
员工表内存在外键部门号,此时员工表中的部门号不能任意乱填,只能是部门表中的部门号对应的数字,答应为空值。
用户自界说完整性
用户自界说完整性是用户自己设定的规则。
例如:
一张表中的某列是年事,那么用户可以自界说该列的数值范围是0-200之,一旦输入的数值为负数或者是超出200,就会报错。
触发器
上述三种完整性约束只适用于比较简朴,单一的环境下,假如表中有更复杂的要求一般使用触发器编写脚本来实现表格中的约束条件。
https://i-blog.csdnimg.cn/blog_migrate/4c951c79c63a64de184f4bc8ed0733e5.jpeg
数据库安全
数据库安全包罗以下几种措施。
用户标识和判定
用户标识和判定是最外城的安全保护措施,可以使用用户账户登录及密码、口令及随机数查验等方式。
存取控制
对用户举行授权,不同的用户可以授予不同的权限,包括操纵类型(增、删、改、查等动作),和数据对象(数据范围)等。
密码存储和传输
对长途的终端可以举行加密传输
视图的保护
对视图举行授权,对不同的用户开放不同的权限。
审计
审计是一种过后的记录,使用一个专用文件或者数据库,自动将用户对数据库的全部操纵以日志的方式记录下来。
十、数据的备份与规复
按照备份方式划分
冷备份
又称静态备份,是将数据库正常关闭,制止工作,在静止状态下,将数据库的文件全部复制下来。
长处缺点 备份只需要复制文件备份速率非常快
容易归档(简朴复制即可)
容易规复到某个时间点上(只需将文件复制回去)
能与归档方法相团结,做数据库最佳状态的规复,低度维护高度安全
单独使用时,只能提供到某一时间点上的规复
在备份时数据库完全制止其他工作只做备份
若磁盘空间有限只能规复到其他外部储存装备上,速率很慢
由于是直接按照文件复制,不能按照表或者用户规复
热备份
又称动态备份,利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
长处缺点 可以直接在表空间或数据库文件级别上备份
备份时间短
备份时数据库仍可正常使用
可到达秒级规复(规复到某一时间点)
可对几乎全部数据库实体做规复
规复速率快
备份时数据库正常运行,出错的后果非常严峻
若备份不成功所得的效果不可用于时间点的规复
维护困难
按照备份范围划分
完全备份
备份全部的数据
差量备份
仅备份上一次完全备份之后变化的数据
增量备份
备份上一次备份之后变化的数据
周日周一周二周三周四周五周六完全备份增量备份增量备份增量备份差量备份增量备份增量备份 增量备份的范围:前次备份后到如今的变化的数据;
差量备份的范围:前次完全备份之后到如今变化的数据;
上表中
周日完全备份后,
周一是增量备份周日完全备份后到周一备份前的数据;
周二是增量备份周一增量备份后到周二增量备份前的数据;
周三是增量备份周二增量备份后到周三增量备份前的数据;
周四差量备份是备份周日完全备份后到周四差量备份前的数据;
若想要规复周三的数据需要先将周日完全备份的数据规复,再将周一、周二增量备份的数据规复然后才华规复周三增量备份的数据,因此增量备份备份数据量小,但是规复起来比较麻烦。
若想要规复周四的数据则可以先规复周日的完全备份数据,再直接规复周四差量备份的数据即可,备份数据量大,但是规复较为容易。
增量备份和差量备份一般是团结使用来应对不同需求。
其他方式
转储实在就是备份
静态海量转储
在系统中无运行事件时举行,每次转储全部数据。
静态增量转储
在系统中无运行事件时举行,每次只转储上一次转储后更新的数据。
动态海量转储
转储期间答应对数据库举行存取或修改,每次转储全部数据库。
动态增量转储
转储期间答应对数据库举行存取或修改,每次只转储前次转储后更新过的数据。
日志文件
事件日志是针对数据库改变所做的记录,记录针对数据库所做的任何操纵,并将记录效果保存在独立文件中。
用途
例如在此表中
周日周一周二周三周四周五周六完全备份增量备份增量备份增量备份差量备份增量备份增量备份 上表中的数据一天才举行一次备份,无论是何种情势的备份,都无法在数据库更新后举行及时备份,也就是说假如数据库在上一次备份后,下一次备份前发生题目,只依靠天天一次的备份来规复的数据是不完整的,而日志文件可以将针对数据库所做的任何操纵记录下来形成文件,正好可以弥补空缺。
数据库的故障与规复
故障关系故障缘故起因解决方法事件自己可以预期的故障自己逻辑存在题目在程序中预先设置ROLLBACK(回滚)语句用往返退规复数据事件自己的不可预期故障算数溢出、违反存储保护由DBMS的规复子系统通过日志,撤销事件对数据库的修改,退回初始状态系统故障系统制止运转查抄点法介质故障外存破坏使用日志重做业务 十一、 数据仓库与数据发掘
数据仓库和数据库的区别
数据库
数据库是根据应用程序的业务需求,记录下来的该应用程序业务所需要的数据,数据库往往与应用程序相辅相成,需要频仍的与应用程序举行交互(增、删、改、查)等。
例如:
超市收银系统通过扫描条码就可以从数据库中查找出该条码对应的商品与该商品的相关信息。
数据仓库
数据仓库是累积下来的大量数据,一般不会存在频仍交互,根本上是累积下来就不再改动了。
例如:
超市收银系统每出售一样商品都会扫描,扫描累积下来的数据可以作为数据仓库举行收存,然后通过数据分析可以得出热销商品等信息。
数据仓库特点
面向主题:
将关于主题的数据组织起来分析数据之间的关系,即根据主题举行数据分析,例如我想要找寻哪个时段冰淇淋销售最多,我就以冰激凌销量作为主题从数据仓库中举行查询。
集成的:
将与主题相关的数据集中起来对数据举行一系列预处置惩罚,记录集成式数据,例如将超市的日报表、周报表、月报表举行存储。
相对稳定性(非易失)
数据仓库中进入的数据不再做增删改查等操纵,相对来说比较稳定
反映汗青变化(随着时间变化)
隔段时间会导入新的数据,长期累积可以反映数据随时间的变化环境
数据仓库建立流程
https://i-blog.csdnimg.cn/blog_migrate/acebf5de0a90366bf768422d7dd91653.png
数据源大概由多种来源,格式不一,以是从中抽取数据之后要举行数据清算,将其格式统一取出冗余,然后装载入数据仓库举行革新。
直接建立大的数据仓库风险比较高,以是分成许多部门一步步构成末了组合,所分成的许多部门称之为数据集市。
OLAP服务器是连接分析服务器,将最表层前端工具与数据仓库举行连接。
数据发掘
数据发掘是指从数据仓库中发掘出某一主题的相关环境。往往是不能直接查询到的,例如想要发掘某饮料在某段时间的销售量,根据发掘效果调解销售量到达长处最大化。
数据发掘方法
决策树
神经网络
遗传算法
关联规则发掘算法
数据发掘分类
关联分析
发掘出潜伏在数据间的相互关系。
序列模式分析
侧重点是分析数据间的前后接洽(因果关系)
分类分析
为每一个记录赋予一个标记再按标记分类
聚类分析
分类分析法的逆过程。
十二、大数据根本概念
大数据技能实在就是对海量的数据举行处置惩罚的一些技能,要求处置惩罚速率极快、数据具有多样性并且具有肯定的代价。
传统数据与大数据的区别
传统数据大数据数据量更大GB或TB级PB级别或以上数据分析需求更多现有的数据分析与检测深度分析拓展(关联分析、回归分析)硬件平台不同高端服务器集群平台 大数据处置惩罚系统应该具有的紧张特征
高度可扩展性(集群可满意)
高性能(集群可满意)
高容错(集群可满意)
支持异构环境(性能高分析快)
较短的分析延迟(分析速率快)
易用且开放的接口
较低成本
向下兼容性
十三、分布式数据系统
数据的集中控制性
分布式数据系统由传统的数据库发展而来,同样具有集中控制的特性。
数据独立性
数据的组成对应用程序来说是透明的,应用程序只需要思量数据的逻辑布局,而不用思量数据的物理存放,数据在物理组织上的改变不会影相应用程序。
数据冗余可控性
分布式数据库中的数据一般存储在经常使用的场地上,因而同一数据大概重复存放在两个场地上,但是这种冗余是在系统控制下的,因此系统具有数据冗余的可控性。
场地自治性
局部用户所使用的数据可以不到场到全局数据库当中去,这种局部应用可以独立于全局应用的行为称为自治性。
十四、常用SQL语句
完整性约束条件
主键:PRIMARY KEY
候选键:UNIQUE
外键:FOREIGN KEY(属性) REFERENCES(外键属性,通常为外来主键)
不为空:NOT NULL
取值唯一:NOT NULL UNIQUE
常用语句
创建表
CREATE TABLE<表名>(<列名><数据类型>[完整性约束条件]
<列名><数据类型>[完整性约束条件]
<列名><数据类型>[完整性约束条件]
....... );
修改表
ALERT TABLE<表名>]
DROP<完整性约束>
;
删除表
DROP TABLE<表名>;
创建索引
CREATE INDEX<索引名>
ON<表名>(<列名>[<序次>][<列名><序次>]].....)
注:序次一般为升序ASC,降序DSC
删除索引
DROP INDEX<索引名>;
创建视图
CREATE VIEW 视图名(列表名)
AS SELECT 查询子句(可以是任何复杂子句,但不能含有OPDER BY 和DISTINCT)
;(表示操纵时保证更新)
删除视图
DROP VIEW 视图名
数据查询
SELECT <目的列表达式>[,<目的列表达式>]...
FROM <表名或视图名>[,<表名或视图名>]
<条件表达式>]]
...];
数据更新
插入
INSERT INTO 根本表名 [(字段名[,字段名...])]
VALUE(常量[,常量]);
INSERT INTO 根本表名 [(字段名[,字段名...])]
SELECT 查询语句;
删除
DELETE FROM 根本表名
;
修改
UPDATE 根本表名
SET 列名=值表达式[,列名=值表达式...]
;
授权
GRANT <权限>[,<权限>]...
TO<用户>[<,用户>]...
;
收回权限
FEVOKE <权限>[,<权限>]...
FROM 用户>[<,用户>]...
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]