Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 数据库关系不在BCNF中的最小证明是什么?_Database_Relational Database_Database Normalization_Bcnf - Fatal编程技术网

Database 数据库关系不在BCNF中的最小证明是什么?

Database 数据库关系不在BCNF中的最小证明是什么?,database,relational-database,database-normalization,bcnf,Database,Relational Database,Database Normalization,Bcnf,我有以下功能依赖项(它们代表我的关系中的所有功能依赖项): 通过使用本文中的技术,我知道(InvestorId,Stockname)是我唯一的候选密钥 根据: 对于满足的每个非平凡FD(X->A),在BCNF-iff中有一个关系R 根据R,以下条件为真: (a) X是R的超级键 因为我知道(1)、(2)和(3)都是非平凡的FD,其左手边是而不是超级键或候选键,这就是证明我的关系不在BCNF中所需要说的一切吗?这个过程是证明关系不在BCNF中的正确方法还是有更好的方法?我们需要知道确定CKs(候选

我有以下功能依赖项(它们代表我的关系中的所有功能依赖项):

通过使用本文中的技术,我知道
(InvestorId,Stockname)
是我唯一的候选密钥

根据:

对于满足的每个非平凡FD(X->A),在BCNF-iff中有一个关系R 根据R,以下条件为真:

(a) X是R的超级键

因为我知道(1)、(2)和(3)都是非平凡的FD,其左手边是而不是超级键或候选键,这就是证明我的关系不在BCNF中所需要说的一切吗?这个过程是证明关系不在BCNF中的正确方法还是有更好的方法?

我们需要知道确定CKs(候选键)的所有FD(函数依赖项),而不仅仅是某些列表中的那些。查看CK的(正确的和一般的)定义或查找CK的算法(在出版的教科书中,而不是在youtube视频中)。您的列表是否适当地作为闭包(所有持有的FD)或覆盖(通过阿姆斯特朗公理暗示闭包中FD的FD),以该定义或算法使用的为准?因为如果不是,那么你就不能说你知道这一套。您最初声称“具有以下功能依赖项”是不够的。您后来声称“它们代表所有的[非平凡的?]函数依赖项”是错误的——如果这些都成立,{InvestorId,Stockname}->{Office}也成立。您稍后将第5项添加到列表中没有帮助,还有其他项。但是,即使阿姆斯特朗的公理不会将任何FD添加到列表中,那么当列出的FD保持不变时,也不会有任何其他FD保持不变,如果您没有显示,为什么您认为给定的列表在您的设计中是详尽的

我们可能知道有些FD成立,而阿姆斯特朗的公理给出了所有必须成立的FD,如果这些FD成立,但要知道给定的FD形成了一个覆盖,我们还必须证明并非由阿姆斯特朗公理生成的FD不成立。注意,如果X在函数上不确定Y,那么X的任何子集都不能确定Y&X不能确定Y的任何超集

类似地,BCNF的定义是指所有持有的非平凡FD,而不仅仅是封面中的一些或那些FD

另一方面,要证明违反了BCNF的特定定义,您所需要做的就是给出一些非平凡的FD,该FD保存的不是超键。因此——假设您的FD构成一个覆盖,并且其中提到了每个属性——因此{InvestorId,Stockname}是唯一的CK——是的,1-3中的任何一个都是足够的,因为它们都不是平凡的&没有一个是超键


PS查找并遵循一本(好的)出版的关于信息建模和数据库设计的学术教科书。有几十种pdf格式的在线免费软件。看看它的youtube视频(及其教授的教科书)。

是的,应该可以更清楚地表明,这些都是关系中存在的FD。只是想澄清一下,如果1-4代表所有FD,它是否称为封面?请参阅我编辑的版本。你声称你找到了FDs。但是如果列表1-4不是封面,那么你没有正确地找到CKs。我理解你关于找到所有FD的意思-我已经相应地编辑了我的帖子。我列出的FD是详尽无遗的。不,该列表并非详尽无遗。例如InvestorId、Stockname->Office holds。阿姆斯特朗的公理给出了一个详尽的清单。我说:根据你的定义或算法,它是闭包还是覆盖。引用定义或算法以表明您正确使用了它。你(错误地)认为你有什么(不合理的)理由认为这份清单是详尽无遗的?你为什么要在清单上加上(5)?您是否了解,当新(旧)列表中的FD保持不变时,还有其他非平凡的FD保持不变——根据阿姆斯特朗的公理?我希望我的回答能说明问题。
(1) BrokerName -> Office
(2) StockName -> Dividend
(3) InvestorId -> BrokerName
(4) InvestorId, Stockname -> Quantity
(5) InvestorId, Stockname -> Office