首页 > 试题广场 >

一个关系模式为Y(X1,X2,X3,X4),假定该关系存在着

[单选题]
一个关系模式为Y(X1,X2,X3,X4),假定该关系存在着如下函数依赖:(X1,X2)→X3,X2→X4,则该关系属于(  )
  • 第一范式
  • 第二范式
  • 第三范式
  • 第四范式
推荐
此关系模式的候选键为{X1,X2},因为X2→X4,有非主属性X4部分依赖于候选键{X1,X2},所以这个关系模式不为第二范式;又因为范式之间的关系满足1NF⊇2NF⊇3NF ⊇ BCNF。
所以此关系模式为第一范式,选A
编辑于 2015-08-07 10:15:40 回复(0)
还是不太懂,能不能简单易懂的说?
发表于 2015-09-12 22:21:49 回复(1)
有没有更加详细,易懂的解答?
发表于 2015-09-09 13:25:56 回复(0)
上面对范式的解释不够详细。我补充两点。
1NF  2NF 3NF BCNF是一级包含一级的关系。也就是说必须先满足第一范式,在看是否满足第二范式。
跳过含义,我们直接解释一下各个范式的意义:
拿最常见的学生成绩管理数据库来举例:
 
1NF,表示属性值是不可分割。
比如学生信息表
学生标示符
201328 Heap                       ===                      左侧不满足第一范式。因为该属性值可以再分割变为:
学号      姓名
201328      heap
 
2NF,表示非主要的属性,必须完全依赖主要的属性,不能部分依赖:
比如选课信息表
选课人      课程           上课老师           教材                      老师职称
heap         数据库       heap           《数据库原理》        副教授
 
======= (选课人、课程)才能确定这张表的唯一行。所以他是主属性。但是教材只与课程有关。教材并不依赖选课人。
这样带来的问题是,假设1万个选课行,那么教材发生修改就需要修改这1万行。而且如果某一门课,没人选,那如何插入呢?
 
所以这不符合第2范式。题目中正是这样的论述。(x1,X2)可以当做主属性,但是X4却不是完全依赖(X1,X2),而只是依赖一部分。
 
 
3NF,表示非主属性不要依赖于其他非主属性。
还以上述选课表为例。
 
选课人      课程           上课老师        老师职称
heap         数据库       heap                 副教授
 
同样,主属性是(选课人,课程),但是老师支持跟选课人没关系。只和上课老师相关。所以这就是非主属性依赖其他非主属性。不满足第三范式。
 
 
发表于 2015-09-10 11:09:10 回复(6)
参见http://www.zhihu.com/question/24696366
发表于 2015-09-19 09:13:44 回复(0)

答案:A。

范化是在识别数据库中的数据元素、关系,以及定义所需的表和各表中的项目这些初始工作之后的一个细化的过程。常见的范式有1NF、2NF、3NF、BCNF以及4NF。以下将分别对这几种范式进行介绍。

所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合、数组、记录等非原子数据项。即当实体中的某个属性有多个值时,必须将其拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。例如,由“职工号”“姓名”“电话号码”组成的表(一个人可能有一个办公电话和一个移动电话),这时将其规范化为1NF可以将电话号码分为“办公电话”和“移动电话”两个属性,即职工表(职工号,姓名,办公电话,移动电话)。

需要注意的是,在任何一个关系型数据库中,第一范式(1NF)是对关系模式的设计基本要求,一般设计时都必须满足第一范式(1NF)。不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型。

2NF,即第二范式,是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则称R为第二范式模式。(如果A是关系模式R的候选键的一个属性,则称A是R的主属性,否则称A是R的非主属性。)例如,在选课关系表(学号,课程号,成绩,学分),关键字为组合关键字(学号,课程号),但由于非主属性学分仅依赖于课程号,对关键字(学号,课程号)只是部分依赖,而不是完全依赖,所以,此种方式会导致数据冗余以及更新异常等问题,解决办法是将其分为两个关系模式:学生表(学号,课程号,分数)和课程表(课程号,学分),新关系通过学生表中的外键字课程号联系,在需要时通过两个表的连接来取出数据。

3NF,即第三范式,如果关系模式R是第二范式,且每个非主属性都不传递依赖于R的候选键,则称R是第三范式的模式。例如学生表(学号,姓名,课程号,成绩),其中学生姓名无重名,所以,该表有两个候选码(学号,课程号)和(姓名,课程号),则存在函数依赖:学号→姓名,(学号,课程号)→成绩,(姓名,课程号)→成绩,唯一的非主属性成绩对码不存在部分依赖,也不存在传递依赖,所以,属于第三范式。

BCNF构建在第三范式的基础上,如果关系模式R是第一范式,且每个属性都不传递依赖于R的候选键,那么称R为BCNF的模式。假设仓库管理关系表(仓库号,存储物品号,管理员号,数量),满足一个管理员只在一个仓库工作;一个仓库可以存储多种物品。则存在如下关系:

(仓库号,存储物品号)→(管理员号,数量)

(管理员号,存储物品号)→(仓库号,数量)

所以,(仓库号,存储物品号)和(管理员号,存储物品号)都是仓库管理关系表的候选码,表中的唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:

(仓库号)→(管理员号)

(管理员号)→(仓库号)

即存在关键字段决定关键字段的情况,所以,其不符合BCNF范式。把仓库管理关系表分解为二个关系表:仓库管理表(仓库号,管理员号)和仓库表(仓库号,存储物品号,数量),这样的数据库表是符合BCNF范式的,消除了删除异常、插入异常和更新异常。

4NF,即第四范式,设R是一个关系模式,D是R上的多值依赖集合。如果 D中成立非平凡多值依赖X→Y时,X必是R的超键,那么称R是第四范式的模式。例如,职工表(职工编号,职工孩子姓名,职工选修课程),在这个表中同一个职工也可能会有多个职工孩子姓名,同样,同一个职工也可能会有多个职工选修课程,即这里存在着多值事实,不符合第四范式。如果要符合第四范式,只需要将上表分为两个表,使它们只有一个多值事实,例如职工表一(职工编号,职工孩子姓名),职工表二(职工编号,职工选修课程),两个表都只有一个多值事实,所以,符合第四范式。

对于本题而言:这个关系模式的候选键为{X1,X2},因为X2→X4,说明有非主属性X4部分依赖于候选键{X1,X2},因此,这个关系模式不为第二范式。

所以,本题的答案为A。

编辑于 2018-07-20 18:47:57 回复(0)
第二范式消除的是非主属性对主属性的部分依赖。
发表于 2017-10-09 19:54:16 回复(0)
第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。
第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。
第三范式(3NF):首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。
第二范式(2NF)和第三范式(3NF)的概念很容易混淆,区分它们的关键点在于,2NF:非主键列是否 完全依赖 于主键,还是依赖于主键的一部分;3NF:非主键列是直接依赖于主键,还是直接依赖于非主键列。
答案应该是A
发表于 2017-03-16 16:05:35 回复(0)
第二范式不能有部分依赖。土话来说,就是一个表只能描述一件事情
发表于 2019-05-09 10:19:18 回复(0)
炫头像
X4部分依赖于主关键字{X1,X2},第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。所以只能满足第一范式
编辑于 2016-04-18 18:46:40 回复(0)
2范式,每一个非主属性完全函数依赖于任何一个候选码,这里非主属性X4部分依赖,所以不满足2NF.
发表于 2024-03-27 14:48:29 回复(0)
不能有部分一来,也就是非主属性要全部依赖于主键
编辑于 2024-03-10 04:22:43 回复(0)

请问如何分解该关系模式使之属于BC范式

发表于 2022-12-25 23:36:28 回复(1)
存在部分函数依赖。
发表于 2021-11-15 15:40:06 回复(0)
1NF:是在关系模式中,对域添加的一个要求,指的是所有的域都应该是原子性的。也即是数据库表的各个列都是不可分割的数据项。
2NF:若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。       解决了对码的部分函数依赖问题。
    1NF可能存在两种非主属性,一种是对码完全函数依赖,另一种是对码部分函数依赖,解决办法是通过投影分解把关系模式分解成两个关系模式。
3NF:关系模式R<U, F>中不存在这样的码X,属性组Y即非主属性Z(Z⊈Y),使得X→Y,Y→Z成立,Y!→X,则称R<U, F>∈3NF。
    可以证明:若R∈3NF,则每一个非主属性既不部分函数依赖于码,也不传递函数依赖于码。
BCNF:关系模式R<U, F>∈1NF。若X→Y且Y⊈X时,X必含有码,则R<U, F>∈BCNF。
    关系模式R<U, F>中,每一个决定因素都包含码,则R<U, F>∈BCNF。
    一个满足BCNF的关系模式有:
  • 所有的非主属性对每一个码都是完全函数依赖。
  • 所有的主属性对每一个不包含它的码,也是完全函数依赖。
  • 没有任何属性完全函数依赖于非码的任何一组属性。
R∈BCNF,排除了任何属性对码的传递函数依赖与部分依赖,所以R∈3NF。若R∈3NF,但是R不一定属于BCNF。
BCNF在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖)。

编辑于 2018-06-23 10:54:35 回复(0)
非主属性X4对码(X1,X2)存在部分函数依赖,不满足第二范式条件,所以为第一范式
发表于 2017-11-03 13:18:44 回复(0)
B
发表于 2017-09-01 10:55:19 回复(0)
第一范式:主键非空唯一,列不可再分。 第二范式:满足第一范式,且非主键列完全依赖主键列。(不存在部分依赖) 第三范式:满足第二范式,且非主键列直接依赖主键列。(不存在传递依赖)
发表于 2017-03-10 19:20:03 回复(0)
第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。 1NF 很好辨别,但是 2NF 和 3NF 就容易搞混淆。
 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。
第三范式(3NF):首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。
发表于 2017-02-25 15:40:34 回复(0)
先看满不满足第一范式,再看满不满足第二范式,以此类推
发表于 2017-02-20 12:34:11 回复(0)
https://github.com/xuelangZF/CS_Offer/blob/master/DatabaseSystem.md
发表于 2016-04-29 09:07:46 回复(0)