SQL数据库如何判断同一个表中的属性之间的依赖关系

SQL数据库如何判断同一个表中的属性之间的依赖关系,第1张

这个就要自己去想了

比如学生的唯一标识为学号,那么他有哪些属性呢,姓名、性别、年级编号、

年级的唯一标识是年级编号

那么年级有哪些属性呢,

年级名称

你不可能说年级名称属于学生,这个是看你自己是怎么想的

主要有4种范式,1NF,2NF,3NF,BCNF,按从左至右的顺序一种比一种要求更严格。

要符合某一种范式必须也满足它前边的所有范式。

一般项目的数据库设计达到3NF就可以了,而且可根据具体情况适当增加冗余,不必教条地遵守所谓规范。

其实你不必限定为数据库中的函数依赖,函数依赖只是数学上的函数关系的一种特殊应用。

函数:X → Y;表示:当 X 取值 “确定” 时,Y 的取值也是 “确定” 的;

蕴含:P => Q;表示:当 P 取值 “为真” 时,Q 的取值也是 “为真” 的;

(1)函数所讨论的是 “任意变量”;蕴含只讨论 “命题变量”;

(2)函数和蕴含都表达了两个变量之间的一种关系:前一个变量的取值(至少是某些取值) “决定” 了后一个变量的取值;但是:

(3)函数中的 “决定”,是对前一个变量(自变量)在一定论域(定义域)内的所有取值均适用的;

而在蕴含中,只有在前一个变量(条件)为真时,另一个变量(结论)才有确定的取值——真。仅此一条,就足以说明:蕴含不是函数。

(4)利用函数自变量和因变量的取值,可以构造出命题变量,然后就可以建立蕴含关系了:对任意函数:Y = F(X);其任意的自变量 x0,可以构造两个命题:

P:X = x0;

Q:Y = F(x0);

显然:P => Q;

即对任意函数的任意一个自变量及其函数值,都可以构造一个蕴含关系。这也算是函数与蕴含之间的一种联系吧!

候选键是a或b。

a->c,

a->b,

a->bc,

bc->d,

a->d

所以a是key

b->a,所以b也是key

--------------------------------------------

是第一范式,因为满足每一个分量不可再分;

是第二范式,因为非主属性c

、d完全依赖于key;

是第三范式,因为非主属性c

、d对主属性a、b不存在传递函数依赖;

是bc范式,因为每一个决定因素必含有a或b;

是第四范式,因为不存在非平凡且非函数依赖的多值依赖。

(两个多值依赖,都含有主属性)

因此,最高是第四范式。

强烈不同意楼上@micro0369的答案,此题答案应是BCNF。

具体原因如下:

《数据库系统概论》(王珊萨师煊版)P181页,明确提出,X→Y(X推出Y),且Y推不出X,Y→Z,此时才叫传递依赖。若X→Y且Y→X(即X←→Y),Y→Z,此时X→Z为直接依赖关系。

先明确:本题的候选码为A,(B,C),所以判定ABC为主属性,D为非主属性。

A→B,A→C,可写成A→(B,C)的形式,反过来(B,C)→A,A→D,此时(B,C)→D为直接依赖关系此处大部分考生均容易出错,非主属性D对码(A或者(B,C))只存在完全函数依赖关系,所以至少是3NF。

继续,3NF的基础上,主属性对码只有完全函数依赖关系,即不存在(消除)主属性对码的传递和部分依赖,所以进一步确定是BCNF。

此题为大连理工大学软件学院的考研题原题,答案由“大连理工大学软件学院在读研究生考研辅导团”给出,如有异议欢迎留言讨论。

以上就是关于SQL数据库如何判断同一个表中的属性之间的依赖关系 全部的内容,包括:SQL数据库如何判断同一个表中的属性之间的依赖关系 、数据库原理中,指出下列关系模式中属性间的依赖关系,分析其所属的范式~~在线等~~、数据库 逻辑蕴含跟函数依赖有什么关系呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10176956.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存