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 还有其他候选密钥吗?如果是,是什么?_Database_Database Design_Relational Database_Candidate Key - Fatal编程技术网

Database 还有其他候选密钥吗?如果是,是什么?

Database 还有其他候选密钥吗?如果是,是什么?,database,database-design,relational-database,candidate-key,Database,Database Design,Relational Database,Candidate Key,Q.众所周知,对于RA、B、C、D、E: R正好有5个超级键。 ABC是一个候选键。 D是非素数属性。 ABE和ACE不是超级钥匙。 还有其他候选密钥吗?如果是,是什么 编辑: 问题在于,考虑到1,2,3,4条件成立,确定RA、B、C、D、E中除ABC外是否还有另一个候选密钥 我的方法是,根据第二个条件,ABC是一个候选键,然后超级键是:ABC,ABCD,ABCE,ABCDE 但是第1个条件表示有5个超级密钥,这意味着第5个超级密钥可能是另一个候选密钥。根据第3和第4种情况,唯一的其他SK/CK

Q.众所周知,对于RA、B、C、D、E:

R正好有5个超级键。 ABC是一个候选键。 D是非素数属性。 ABE和ACE不是超级钥匙。 还有其他候选密钥吗?如果是,是什么

编辑: 问题在于,考虑到1,2,3,4条件成立,确定RA、B、C、D、E中除ABC外是否还有另一个候选密钥


我的方法是,根据第二个条件,ABC是一个候选键,然后超级键是:ABC,ABCD,ABCE,ABCDE

但是第1个条件表示有5个超级密钥,这意味着第5个超级密钥可能是另一个候选密钥。根据第3和第4种情况,唯一的其他SK/CK可以是BCE,因为ACE和ABE不能是SK

但是如果BCE是一个候选密钥,则BCDE应该由一个超级密钥组成,这样总共有6个超级密钥,并且违反了第1个条件

我不太确定我错在哪里了。
请帮我分析一下

让我们试着详细说明解决问题的步骤

有25=32个可能的属性子集:

{{}, A, B, C, D, E, AB, AC, AD, AE, BC, BD, BE, CD, CE, DE, ABC, ABD, ABE,
 ACD, ACE, ADE, BCD, BCE, BDE, CDE, ABCD, ABCE, ABDE, ACDE, BCDE, ABCDE}
我们正在寻找不同于ABC的候选密钥,了解您提到的事实

ABC是一个候选键。 如果ABC是候选密钥,则其任何子集都不能是候选密钥。这排除了{},A,B,C,AB,AC,BC作为候选密钥的可能性。类似地,它的每个超集都不能是候选键。这不包括ABCD、ABCE、ABCDE

因此,我们现在有以下可能的候选密钥:

{D, E, AD, AE, BD, BE, CD, CE, DE, ABC, ABD, ABE,
 ACD, ACE, ADE, BCD, BCE, BDE, CDE, ABDE, ACDE, BCDE}
{E, AE, BE, CE, ABC, ABE, ACE, BCE}
{ABC, BCE}
D是非素数属性。 D不是基本属性,因此它可以包含在超级键中,但不能包含在候选键或候选键的一部分中。这意味着,如果一组属性中存在D,则该集不能是候选密钥。因此,这将D、AD、BD、CD、DE、ABD、ACD、ADE、BCD、BDE、CDE、ABCD、ABDE、ACDE、BCDE排除在候选键之外

我们现在有以下可能的候选密钥:

{D, E, AD, AE, BD, BE, CD, CE, DE, ABC, ABD, ABE,
 ACD, ACE, ADE, BCD, BCE, BDE, CDE, ABDE, ACDE, BCDE}
{E, AE, BE, CE, ABC, ABE, ACE, BCE}
{ABC, BCE}
ABE和ACE不是超级钥匙。 由于ABE和ACE不是超级键,它们也不是候选键,当然它们的子集都不是候选键。所以,这也排除了E,AE,BE,CE,ABE,ACE

因此,我们现在有以下可能的候选密钥:

{D, E, AD, AE, BD, BE, CD, CE, DE, ABC, ABD, ABE,
 ACD, ACE, ADE, BCD, BCE, BDE, CDE, ABDE, ACDE, BCDE}
{E, AE, BE, CE, ABC, ABE, ACE, BCE}
{ABC, BCE}
我们已经知道ABC是一个候选密钥,所以唯一剩下的可能性是BCE是一个候选密钥

但我们知道:

R正好有5个超级键。2.ABC是一个候选键。 从这两个事实来看,ABC、ABCE、ABCD、ABCDE是四个超级键。只有一个失踪了

所以,如果BCE是一个候选键,正如您已经注意到的,这意味着BCE和BCDE也是超级键。我们有六个不同的超键,这与假设相矛盾

另一方面,如果BCE不是候选键,那么我们只有四个超键,这也与假设相矛盾


因此,我们可以说不可能回答这个问题。最后请注意,如果我们假设“superkey”有一个不常见的含义,我们也无法解决这个问题,因为它有时会被使用:也就是说,一个严格的superkey,一组严格包含一个键的属性。在本例中,如果BCE是一个候选键,那么我们又有四个超级键:ABCE、ABCD、ABCDE和BCDE。另一方面,如果BCE不是候选键,那么我们只有三个超级键:ABCE、ABCD和ABCDE。

这有不清楚的说法和理由。为什么ABC作为一个候选键只有4个超级键的可能性?我认为还有另一个候选者的关键意思是什么?既然D是非素数,为什么它可以是BCE?你的问题到底是什么?PS建议您列举一些与CKs和非CKs相关的可能性。PS给定的条件是不可能的。但别让它阻止你。很抱歉我不清楚。问题是,考虑到1,2,3,4条件成立,确定RA,B,C,D,E中除了ABC之外是否还有其他候选键。我的方法是,根据第二个条件ABC是候选键,那么超级键应该是ABC,ABCD,ABCE,ABCDE。这相当于4个SK。但是第一个条件是,有5个超级密钥,这意味着剩下的1个超级密钥必须是候选密钥。考虑到第3和第4个条件,唯一的其他候选密钥可能是BCE。但是如果BCE是一个候选密钥,则BCDE应该由一个超级密钥组成,这样总共有6个超级密钥,并且违反了第1个条件。我不太确定我错在哪里了。如果我分析正确,请帮忙。你的评论表达得更清楚。请通过帖子编辑澄清,而不是评论。但解释时要考虑到。在编辑时,始终将帖子更改为最佳演示文稿。请不要写模糊的东西,比如超级键应该是。。。或者是4个SK。只要清楚地陈述可能新衍生的事实:那么以下就是超级键:…&Th
at是五个超级键中的四个,因此剩余的。。。。你的问题不应该是作业问题,而应该是关于你是如何陷入困境的。有趣的是,如果我们接受1+2作为前提,那么3是假的,4是没有意义的。PS查看对问题的评论,结果发现提问者的评论澄清尚未完成或纳入其帖子中,表明他们在澄清的地方进行了正确的推理&他们的实际问题是,他们是否犯了错误,从而得出前提是矛盾的。。