两个表建立关联后,当主表指针移动时,子表的指针会自动跟着移动到关键字与主表相同的记录上。
建立永久关系后的两个表之间可以设置参照完整性规则:当主表要更新、删除、插入记录时,子表可以选择 级联、限制、忽略。
主键用来唯一标识表中的记录;唯一键类似于主键,在整个表中只包含唯一值的字段上创建唯一键;唯一键可确保整个表中的唯一性。主键总是唯一的,或者至少是唯一键;然而,主键也用于定义表之间的关系,唯一键不用于定义表之间的关系。
外键是在子表中创建的主键的副本,用于组成表间关系的链接的对立面:建立关系数据库关联。
记住:主键唯一地标识表中的每个记录;外键是主键的副本,从父表复制而来,用来建立父表和子表之间的关系;唯一键只是确保表中某值的唯一性。
参照完整性与它的名称一样,它确保表之间参照关系的完整性,由主键和外键定义这种关系。在两个表之间的关系中,一个表有主键,另一个表有外键。主键唯一标识第一个表中的每个记录。在大多数关系数据库引擎使用通常所谓的约束来确保参照完整性,主键和外键都是约束。主键约束强制主键字段唯一,也强制对引用回主键约束的任何外键约束进行检查;外键约束使用它的引用来表示回引用表,包含主键约束,从而确保主键字段和外键字段中的两个值匹配。
一些需要考虑的特定情况:
将新的记录添加到子表时,如果输入外键值,它必须存在于父表的相关主键字段中;
外键字段可以包含NULL值。主键字段永远不可以包含NULL值,因为它们必须唯一;
如果在修改主键时修改父表中的记录,这种修改必须级联到任何相关子表中的所有外键值记录,否则,必须禁止对父表的修改。
当修改子表中的记录时,对外键的修改需要检查相关的主键是否存在,或者先进行修改。如果外键被改为NULL值,则不需要任何主键。如果外键被改为非NULL值,则外键值必须作为相关父表中的主键值存在;
当删除父表记录时,则子表中的相关外键记录必须也被级联删除,或者先从子表中删除。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)