
1.4.2 为表建立主键或外键
由于在设计数据表时,不允许出现完全相同的两条记录,所以通常会创建一个关键字(Key)字段,用于唯一标识数据表中的每一条记录。例如,在读者信息表中,由于条形码不允许重复且不允许为空,所以条形码可以作为读者信息表中的关键字。另外,在读者信息表中,还存在一个编号字段,该字段也不允许重复且不允许为空,所以编号字段也可以作为读者信息表中的关键字。

为表建立主键或外键
1.建立主键
在设计数据库时,为每个实体建立对应的数据表后,通常还会为其创建主键,建立主键表称为主表。一般情况下,主键都是在所有的关键字中选择。在选择主键时,一般遵循以下两条原则。
作为主键的关键字可以是一个字段,也可以是字段的组合。
作为主键的字段的值必须具有唯一性,并且不能为空(null)。如果主键由多个字段构成时,那么这些字段都不能为空。
例如,在创建图书信息表时,由于编号字段不能重复,并且不能为空,所以id字段可以作为主键。添加主键后,tb_bookinfo的结构如下(加下划线的字段为主键):
tb_bookinfo(id,barcode,bookname,typeid,author,ranslator,ISBN,page,rice,bookcase,inTime,operator,del)
2.建立外键
如果存在两张数据表,如果表 T1中的一个字段 fk对应于表 T2的主键 pk,那么字段 fk则称为表T1的外键,T1称为外键表或子表。此时,表T1的字段fk,要么是表T2的主键pk的值,要么是空值。外键通常是用于实现参照完整性的。
例如,存在一对多关系的两个实体“图书”和“出版社”,它们转换为数据表后,对应的主外键关系如下:
tb_bookinfo(id,barcode,bookname,typeid,author,ranslator,ISBN,page,rice,bookcase,inTime,operator,del) tb_publishing(ISBN, pubname)
其中,在tb_bookinfo表中,ISBN为外键;在tb_publishing表中,ISBN为主键。