前几天去一家软件公司,笔试的时候,数据库的知识都忘了,然后今天面试的时候,面试官问我,你数据库的知识不会,回去看了没。 瞬间我就懵了,数据库知识很多,一下子搞不定,已经列在了计划表上,但是没有当天立即学习,所以面试官在这里给我提了个醒,这也是今天面试的一点收获吧,遇到问题,迅速解决问题!
1.超码,候选码,主码,替换码,外码
超码:唯一标识一个元祖的属性集合(解释:现实生活中,有很多人同名,名字就不能唯一标识人,所以名字不能作为超码,身份证编号是唯一的,所以身份证编号是超码。因为身份证编号已经足够唯一标识不同的人了,身份证编号+姓名自然也可以,身份证+性别+...都可以唯一标识)
候选码:一个超码中没有真子集是关系的超码(通俗讲就是:候选码是超码,候选码的真子集中没有超码)
主码:候选码中随便选一个唯一标识元祖
替换码:候选码中,没有被选为主码的其他候选码
外码:一个关系中的属性在另外一个关系中当主码
举个例子就更容易理解了:
假设 超码的集合是{a,b,c,{a,b},{b,c},{a,c} } 共有6个元素
那么根据候选码的定义 ,候选码的集合是{a,b,c}
如果我选 b 作主码,那么替换码就是{a,c}
2.表的笛卡尔乘积
就是a表中每一个元祖,都和b表中的每一个元祖重新组合成一个新的元祖。
3.数据库除法
答案:
计算步骤:
1.确定结果的属性列
R关系的属性有A,B,C,D ,而关系S的属性有C,D,E
R÷S的属性:R有但S没有的属性(R去掉R和S相同的属性组) 所以这里R÷S 得到的属性就是A B(结果属性组)
2.找出满足条件的元祖(结果属性组取值完全相同,且满足S中属性C和D的所有元祖)
在关系R中,元祖(2,1,a,c) 和(2,1,b,d),他们A和B的属性相同(结果属性组取值相同),而且满足属性C和D中的
(a,c) (b,d)
R中关系元祖(3,2)对应的C,D属性为(b,d)和(b,c),不满足S关系中的(a,c)