Navicat外键关联

文章目录

  • Navicat 设置外键关联
    • Navicat 设置外键关联
      • 举例:角色表 、 权限表。一个对应的是多个权限。

Navicat 设置外键关联

Navicat 设置外键关联

举例:角色表 、 权限表。一个对应的是多个权限。

  • 一个角色对应着多个权限
  • 一个权限对应着一个角色
//  这是设计的关联代码
CREATE TABLE `weichat`.`Untitled`  (
  `roleperid` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色权限表',
  `rolepername` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色权限的名称',
  `roleperdes` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色权限的描述',
  `perids` int(11) NULL DEFAULT NULL COMMENT '权限的主键',
  `roleids` int(11) NULL DEFAULT NULL COMMENT '角色的主键',
  `roleperdate` datetime(0) NULL DEFAULT NULL COMMENT '角色权限的日期',
  PRIMARY KEY (`roleperid`) USING BTREE,
  INDEX `roleper_ibfk_1`(`roleids`) USING BTREE,
  INDEX `roleper_ibfk_2`(`perids`) USING BTREE,
  CONSTRAINT `roleper_ibfk_1` FOREIGN KEY (`roleids`) REFERENCES `weichat`.`sysrole` (`roleid`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `roleper_ibfk_2` FOREIGN KEY (`perids`) REFERENCES `weichat`.`sysper` (`perid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
  • 通过使用 navicat 的设置是这样的。
    Navicat外键关联_第1张图片
    Navicat外键关联_第2张图片
  • 在删除时和更新的时候有四个内容可供选择。Navicat外键关联_第3张图片
  • 首先,记住 主键表(子表)、外键关联表(父表)的关系,方便以下内容的认识
  • CASCADE:父表delete、update的时候,子表会delete、update掉关联记录;
  • SET NULL:父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;
  • RESTRICT:如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;
  • NO ACTION:同 RESTRICT,也是首先先检查外键;

你可能感兴趣的:(软件工具)