
主键是数据库表的唯一索引序列,可以由多个字段组成,但每条数据的这几个字段的组合必须唯一;主键约束仅涉及本表数据;
外键是本表中该外键字段的取值要求是已经在目标表中存在的数据;假如说,表B有字段b_1是表A中字段a_1的外键,那么插入表B数据的时候,字段b_1的取值要求在表A的字段a_1的当前所有数据的值的范围内。外键是以外表数据约束本表数据的约束条件。
此外,外键还有个要求,就是a_1必须是表A的主键。并且必须说得是,外键是一个很烦人的数据库约束。
单从你给定的条件来看,这两个表是不能关联,因为两个表没有共同的字段。不过从应用角度来看,应该在员工表中再设立一个字段deptid(部门编号),表示该员工所属的部门,这样部门和员工表就可以关联,其本质就是将员工表的deptid字段设为外键,其 *** 作命令如下:
ALTER TABLE 员工
ADD CONSTRAINT fk_deptid FOREIGN KEY(deptid) REFRENCES 部门(deptid)
现在的数据库大部分都是关系型数据库,既然是关系型数据库。那么一定会有一定的标识来表示数据库之间的关系。这个关系就是以主外键来标识的。关系主要分一对一,一对多,和多对多的关系。一对一的关系就是一个两个表,一个存的是登陆信息表。另一个存人员信息表。假定一个人只有一个登陆账号,那么两个表就是一对一的关系。那么最简单的设置约束的方式就是另一张表的主键也是外键。这样就一对一对应起来。但是大部分的关系都是一对多和多对多。先回答你的问题,一张表如果某一列是外键,那么他相对引用的另一张表的列中的数据
一定是唯一的。很简单的道理,如果不唯一,数据库不知道具体关联到是哪个行,哪条数据。大部分在设计数据库时,除非对数据库有特殊要求,基本都是不设置主外键的(项目中)。因为设置主外键后,数据库进行更改就会受到限制。这种关系完全可以在程序中来体现
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)