首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这种关系在3NF?

为什么这种关系在3NF?
EN

Database Administration用户
提问于 2013-02-20 01:42:04
回答 1查看 2.1K关注 0票数 3

我有个亲戚:

代码语言:javascript
复制
R4 = {{T,U,V}, {T → U, U → T, T → V}}

我从答案中得知,这种关系在BCNF中。

我正在经历严格确定这种关系所遵循的正常形式的过程。我很清楚为什么这种关系是1NF和2NF,如果我假设它在3NF中,那么BCNF很容易跟进。

然而,3NF的定义规定:

每个非素属性都非传递依赖于表中的每个候选键。

但是,据我所知,{T}{U}都是表的候选键,因此{V}依赖于{U}

维基百科上有一个3NF的替代定义:

卡洛·扎尼奥洛在1982年给出了一个3NF的定义,这个定义相当于Codd的定义,但表达方式不同。此定义指出,表在3NF中的当且仅当对于其每个函数依赖项X→A,至少有下列条件之一有效:

  • X包含A(即X→A是平凡的函数依赖)
  • X是超级钥匙
  • A-X的每个元素,即A和X之间的集合差,都是一个素属性(即A中的每一列都包含在某个候选键中)。

根据这个定义,这种关系在3NF中是明显的(所有的函数依赖都被"X是一个超级键“所涵盖)。

那为什么会有差异呢?我怎么会误用这个定义?请不要以我不想要的方式给我提供答案的快捷方式,除非你也帮助我理解为什么我的3NF应用程序(如所述)是不准确的。

EN

回答 1

Database Administration用户

发布于 2013-02-20 04:37:03

根据您提供的关系,对于BCNF,我们知道{T}{U}是功能上确定{V}的候选密钥。如果{U}不是候选键,而是仍然是行列式,那么传递依赖就会发生。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/35070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档