证明r属于数据库第四范式式则必属于bcnf范式

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
四级数据库知识点文库.doc114页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:100 &&
你可能关注的文档:
··········
··········
四级数据库知识点文库.txt
《全国计算机等级考试四级教程―数据库工程师》
1、 数据库技术产生于20世纪60年代,是信息系统的核心技术和重要基础;
2、 计算机科学与技术学科划分为四个专业方向:计算机科学(CS);计算机工程(CE);软件工程(SE);信息技术(IT)。
1.1 基本概念
1.1.1 信息与数据
1、 信息、物质、能量是组成客观世界并促进社会发展的三大基本要素;
2、 信息(Information)--是客观世界事物的存在方式和运动状态的反映,是对事物之间相互联系、相互作用的描述。信息具有可感知、可存储、可加工、可传递和可再生的自然属性。
3、 数据(Data)--是描述现实世界事物的符号记录,是用物理符号记录下来的可以识别的信息。不同的物理符号体现出数据的不同表现形式。
4、 信息与数据间存在固有联系,数据是信息的符号表示,或称为载体。信息则是数据的语义解释,是数据的内涵,信息以数据的形式表现出来,并为人们理解和接受。
5、 数据处理(Data Processing)--是指对数据进行分类、收集、组织、存储,进而从已数据出发,抽取或推导出新的数据,这些数据表示了新的信息。
6、 数据管理(Data Management)--是指对数据的分类、收集、组织、编码、存储、检索和维护,是数据处理业务的重要环节。
7、 数据处理与数据管理的区别在于,数据处理除了具有数据管理功能外,还可通过数据管理得到的数据进一步深加工,从中获取新的数据和信息。
1.1.2 数据库系统
1、 数据库(DB,DataBase)--是长期存储在计算机内有组织的、大量的、共享的数据集合;
2、 数据库管理系统(DBMS,Database Management System)--是指在计算机系统中,位于用户与操作系统之
正在加载中,请稍后...2403人阅读
&&&&&数据库范式在数据库设计中的地位一直很暧昧,教科书中对于数据库范式倒是都给出了学术性的定义,但实际应用中范式的应用却不甚乐观,这篇文章会用简单的语言和一个简单的数据库DEMO将一个不符合范式的数据库一步步从第一范式实现到第四范式。&
范式的目标
&&&&&应用数据库范式可以带来许多好处,但是最重要的好处归结为三点:
&&&&&1.减少数据冗余(这是最主要的好处,其他好处都是由此而附带的)
&&&&&2.消除异常(插入异常,更新异常,删除异常)
&&&&&3.让数据组织的更加和谐…& &&
&&&&&&但剑是双刃的,应用数据库范式同样也会带来弊端,这会在文章后面说到。&
什么是范式
&&&&&简单的说,范式是为了消除重复数据减少冗余数据,从而让数据库内的数据更好的组织,让磁盘空间得到更有效利用的一种标准化标准,满足高等级的范式的先决条件是满足低等级范式。(比如满足2nf一定满足1nf)。&
&&&&&让我们先从一个未经范式化的表看起,表如下:
先对表做一个简单说明,employeeId是员工id,departmentName是部门名称,job代表岗位,jobDescription是岗位说明,skill是员工技能,departmentDescription是部门说明,address是员工住址
对表进行第一范式(1NF)
&&&&如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。
&&&&简单的说,第一范式就是每一个属性都不可再分。不符合第一范式则不能称为关系数据库。对于上表,不难看出Address是可以再分的,比如”北京市XX路XX小区XX号”,着显然不符合第一范式,对其应用第一范式则需要将此属性分解到另一个表,如下:
对表进行第二范式(2NF)
若关系模式R∈1NF,并且每一个非主属性都于R的码,则R∈2NF
简单的说,是表中的属性必须完全依赖于全部主键,而不是部分主键.所以只有一个主键的表如果符合第一范式,那一定是第二范式。这样做的目的是进一步减少插入异常和更新异常。在上表中,departmentDescription是由主键DepartmentName所决定,但却不是由主键EmployeeID决定,所以departmentDescription只依赖于两个主键中的一个,故要departmentDescription对主键是部分依赖,对其应用第二范式如下表:
对表进行第三范式(3NF)
中若不存在这样的码X、属性组Y及非主属性Z(Z  Y), 使得X→Y,Y→Z,成立,则称R&U,F& ∈ 3NF。
简单的说,第三范式是为了消除数据库中关键字之间的依赖关系,在上面经过第二范式化的表中,可以看出jobDescription(岗位职责)是由job(岗位)所决定,则jobDescription依赖于job,可以看出这不符合第三范式,对表进行第三范式后的关系图为:
上表中,已经不存在数据库属性互相依赖的问题,所以符合第三范式
对表进行BC范式(BCNF)
设R&U,F&∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,那么R∈BCNF。
简单的说,bc范式是在第三范式的基础上的一种特殊情况,既每个表中只有一个候选键(在一个数据库中每行的值都不相同,则可称为候选键),在上面第三范式的noNf表中可以看出,每一个员工的email都是唯一的(难道两个人用同一个email??)则,此表不符合bc范式,对其进行bc范式化后的关系图为:
对表进行第四范式(4NF)
R&U,F&∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y
 X),X都含有候选码,则R∈4NF。
简单的说,第四范式是消除表中的多值依赖,也就是说可以减少维护数据一致性的工作。对于上面bc范式化的表中,对于员工的skill,两个可能的值是”C#,sql,javascript”和“C#,UML,Ruby”,可以看出,这个数据库属性存在多个值,这就可能造成数据库内容不一致的问题,比如第一个值写的是”C#”,而第二个值写的是”C#.net”,解决办法是将多值属性放入一个新表,则第四范式化后的关系图如下:
而对于skill表则可能的值为:
&&&&上面对于数据库范式进行分解的过程中不难看出,应用的范式登记越高,则表越多。表多会带来很多问题:
1 查询时要连接多个表,增加了查询的复杂度
2 查询时需要连接多个表,降低了数据库查询性能
而现在的情况,磁盘空间成本基本可以忽略不计,所以数据冗余所造成的问题也并不是应用数据库范式的理由。
因此,并不是应用的范式越高越好,要看实际情况而定。第三范式已经很大程度上减少了数据冗余,并且减少了造成插入异常,更新异常,和删除异常了。我个人观点认为,大多数情况应用到第三范式已经足够,在一定情况下第二范式也是可以的。
转自:/CareySon/archive//1668803.html
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:47482次
排名:千里之外
转载:61篇
(1)(3)(2)(1)(7)(2)(8)(7)(13)(4)(6)(4)(5)(2)重庆大学网络教育学院
此网页使用了框架,但您的浏览器不支持框架。}

我要回帖

更多关于 第一范式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信