几个概念:
1)候选键:关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码。
2)主键:当有多个候选码时,可以选定一个作为主码,选定的候选码称主键
3)外键:关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或外键。
所谓外键是指本表的某个值来自另外一个表的某个值(一般是另外表的主键),即本表的这个值要么允许为空,要么必须是另外表的某个字段的一个值,即外键是涉及到2个表的。
举个例子:
有两个关系:
student(s#,sname,d#),即学生这个关系有三个属性:学号,姓名,所在系别
dep(d#,dname),即院系有两个属性:系号、系名
则s#、d#是主键,也是各自所在关系的唯一候选键,d#是student的外键。
数据库建表时一个表最多可以有几个主键,几个外键?
主键在一个表中只有一个,但主键有两种,单一的和复合的,想设复合主键要先建立约束,外键可以有多个.
主键只有一个 但是可以设置为多个字段为主键,也即复合主键。 外键就随便你自己设置了也即可以有多个,可以设置除主键以外的其他字段全部是外键的。