zoukankan      html  css  js  c++  java
  • Navicat For MySQL--外键建立与cannot add foreign key constraint分析

    1.主键

    主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。
    作用:
    1)保证实体的完整性;
    2)加快数据库的操作速度
    3) 在表中添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
    4) DBMS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

    2.外键

    什么是外键?如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。

    3.主键外键的作用

    1. 为了维护关系数据库的完整性:
      主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
      外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

    2. 起约束作用:
      外键取值规则:空值或参照的主键值。
      (1)插入非空值时,如果主键表中没有这个值,则不能插入。
      (2)更新时,不能改为主键表中没有的值。
      (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。
      (4)更新主键记录时,同样有级联更新和拒绝执行的选择。

    4.Navicat For MySQL如何定义外键

    要在Mysql数据库平台建立外键关联,必须满足以下几个条件:
     1. 两个表必须为 InnoDB 类型。
     2. 外键和被引用键必须是索引中的第一列,InnoDB不会自动为外键和被引用键建立索引,必须明确创建
         它们。
     3. 外键与对应的被引用键在 InnoDB 内必须有相似的内部数据类型,以便他们不需要一个类型转换就可
         以进行比较。整型字段的长度与有符号类型必须一致。 字符型则不需要一致。如果指定了一个SET
       NULL 动作,那你必须要确定子表中的对应字段没有定义为 NOT NULL

    设置外键时,删除和更新两列的均有四个选项:
    CASCADE:父表delete、update的时候,子表会delete、update掉关联记录;
    SET NULL:父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;
    RESTRICT:如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;
    NO ACTION:同 RESTRICT,也是首先先检查外键;

    5.Navicat For MySQL定义的表

    职位表hrm_job:主键是id

    部门表hrm_dept:主键是id

    员工表hrm_employee:主键是id,外键是dept_id和job_id

    6.参考资料

    主键:
    https://blog.csdn.net/ytm15732625529/article/details/53729155
    https://www.cnblogs.com/PyLearn/p/7624768.html

    外键:
    http://www.cnblogs.com/chenxiaohei/p/6909318.html
    https://www.cnblogs.com/bhlsheji/p/5332910.html

  • 相关阅读:
    ImageCapOnWeb控件使用说明
    网页摄像头拍照
    js调用ocx控件
    sql中 in 、not in 、exists、not exists 用法和差别
    oracle远程登录解决办法
    oracle导入导出,包括表,表结构,方案,数据库
    字典树
    线段树
    Til the Cows Come Home
    Forgger
  • 原文地址:https://www.cnblogs.com/liaoguanwang/p/9678568.html
Copyright © 2011-2022 走看看