某个属性可以既是主码又是外码吗?
百度了一下,以前有2个人问过这个问题,回答都是可以的。但根据外码的定义,“属性或属性组X不是关系模式R的码(既不是主码也不是候选码),但X是另一个关系模式的码,则称X是R...
百度了一下,以前有2个人问过这个问题,回答都是可以的。
但根据外码的定义,“属性或属性组X不是关系模式R的码(既不是主码也不是候选码),但X是另一个关系模式的码,则称X是R的外部码,也称外码。”
我认为某个属性不能既是主码又是外码。你们怎么看? 展开
但根据外码的定义,“属性或属性组X不是关系模式R的码(既不是主码也不是候选码),但X是另一个关系模式的码,则称X是R的外部码,也称外码。”
我认为某个属性不能既是主码又是外码。你们怎么看? 展开
展开全部
首先明确几个定义:码,主码,外码。
码:唯一标识实体的属性集。
主码:多个候选码中选择其中一个为主码。
外码:属性或属性组X不是关系模式R的码(既不是主码也不是候选码),但X是另一个关系模式的码,则称X是R的外部码,也称外码。
看外码定义,有两个要求,一是不能是本关系的码,还必须是另一个关系的码。
回到开头的码的定义,就知道了,外码不能是码,否则两个关系模式就成一个关系模式了,没有分开的必要了。这就是问题答案了。
但是,外码可以为主属性!即,可为主码的部分属性集。这点要注意!当然此时的外码不能为空。
到这里还不懂的话,多读几遍码、主码、主属性、非主属性、外码等概念。
我用手机打的,排版不是很好,也就不举例了。虽然这么多年过去了,但也希望能帮到你和其他人。
个人理解,仅供参考。
码:唯一标识实体的属性集。
主码:多个候选码中选择其中一个为主码。
外码:属性或属性组X不是关系模式R的码(既不是主码也不是候选码),但X是另一个关系模式的码,则称X是R的外部码,也称外码。
看外码定义,有两个要求,一是不能是本关系的码,还必须是另一个关系的码。
回到开头的码的定义,就知道了,外码不能是码,否则两个关系模式就成一个关系模式了,没有分开的必要了。这就是问题答案了。
但是,外码可以为主属性!即,可为主码的部分属性集。这点要注意!当然此时的外码不能为空。
到这里还不懂的话,多读几遍码、主码、主属性、非主属性、外码等概念。
我用手机打的,排版不是很好,也就不举例了。虽然这么多年过去了,但也希望能帮到你和其他人。
个人理解,仅供参考。
展开全部
课本上的定义没有错
其实,这个问题下面的己水丹答主以及说的很好了。
假设有3个关系模式。加粗斜体字是它们的码(编辑不出下划线)
学生(学号,姓名)
课程(课程号,课程名)
选修(学号,课程名)
对于“选修”这个关系模式来说,“学号”这个属性不是它的主码(它的主码是学号,课程名),但“学号”属性却是“学生”这个关系模式的主码。所以说”学号“属性是“选修”这个关系模式的外码。
同理,“课程名”属性不是“选修”的主码,但却是“课程”的主码,所以它是“选修”的外码。
总结一下,选修关系的外码是:“学号”和“课程名”。它的主码是“学号,课程名”。注意:主码是两个属性合在一起,整体作主码。而外码是2个属性分开的。
所以,课本上的定义其实没有错,而且必须那么定义(一个关系模式的主码不能同时也是外码)。因为如果关系模式R的主码也是外码的话,外码是另一个关系的主码,这就说明存在一个关系它的主码和R的一模一样。这种情况2个关系是可以合并的。所以课本才要特别说明主码不能做外码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以自己用SQL语句去试一下,实践与理论相结合才是正道。
追问
我知道数据库中可以存在2个表,主码一样的2个表。但根据外码的定义,一个表中的某个属性既然是本表的主码了,就不能同时又叫做外码了。可以有,但称呼上不能叫做外码了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询