oracle 问题,请教高手了……

比如说一列:ID,定义它为主键了,name不是主键。那么定义外键的时候,只能参照ID?就是说只能参照已经定义成主键的?不能是其它的?外键不能是name?因为它不是主键?是... 比如说一列:ID,定义它为主键了,name不是主键。那么定义外键的时候,只能参照ID?就是说只能参照已经定义成主键的?不能是其它的?外键不能是name?因为它不是主键?是不是这样? 展开
 我来答
随o天
2012-10-31 · TA获得超过3158个赞
知道大有可为答主
回答量:1740
采纳率:71%
帮助的人:2027万
展开全部
外键的作用是两个表之间建立关联。因此,两个表有主次的关系,次表的某一个字段通过外键参照主表相对应的字段。创建外键有两个要求:
1、作为外键的字段在主表中一定是主键或者是具有唯一约束(Unique)的字段;
2、作为外键的字段与主表中所参照的字段是同一类属性(字段名字可以不同)。
从这两个规则可知,在问题中提到的字段name即使不是主键,只要它是被约束为唯一(Unique)就可以做外键的参照字段。
追问
怎么和上面的说的不同:本表的列必须与外键类型相同,而且外键必须是外表的主键。不是说只要它是被约束为唯一(Unique)就可以做外键的参照字段?不定义为主键也可以啊?
流浪云风
2012-10-30 · TA获得超过4315个赞
知道大有可为答主
回答量:1119
采纳率:69%
帮助的人:934万
展开全部
不仅仅是由于主键唯一的原因,如果这样理解,唯一键也可以做外键了,但实际定义后发现这样是不允许的。
因为建立外键的前提: 本表的列必须与外键类型相同,而且外键必须是外表的主键。
追问
你们说的,谁说得对啊:
本表的列必须与外键类型相同,而且外键必须是外表的主键。不是说只要它是被约束为唯一(Unique)就可以做外键的参照字段?不定义为主键也可以啊?
追答
你试试就知道谁说的对了。把某一列设为唯一索引,看看这列能不能做外键。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我又强力了
2012-10-30 · TA获得超过802个赞
知道小有建树答主
回答量:1058
采纳率:0%
帮助的人:715万
展开全部
外键如果不和主键也就是id关联 比如用name的话会出现一对多的情况
比如2个人id不一样 名字一样 如果用name做外键 关联另外一张表就会有一对多
造成数据的重复
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flyfit
2012-10-30 · TA获得超过458个赞
知道小有建树答主
回答量:595
采纳率:66%
帮助的人:297万
展开全部
不会啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式