数据库--外键--用法/缺点

原文网址:数据库--外键--用法/缺点_IT利刃出鞘的博客-CSDN博客

简介

本文介绍数据库的外键的用法以及其缺点。

实际上,项目中很少用到外键,因为缺点很明显,《阿里巴巴 Java 开发手册》也明确写明不要使用物理外键。

创建外键的条件

  1. 父表和子表引擎一致,否则报错;
  2. 保证表的存储引擎为InnoDB,否则虽然不报错但是无约束(只有index);
    1. 实际上,如果两个表都是MyISAM 引擎的,错误根本不会发生,但也不会产生外键。
  3. 两个字段数据类型一致,数据显示长度可以不同,另外需注意有符号无符号,必须一致;
  4. 两个字段都添加了独立索引,如果子表外键字段无索引,那么在创建外键的时候会自动先添加索引;如果父表字段无索引,将报错;
  5. 字段是否允许为空,在更新或删除时候对外键字段操作有关;如外键创建时候 on delete set null on udpate cascade。但是子表外键字段不允许为空, 矛盾,创建不成功。
  6. 字段的字符集和校对集(外键类型为字符的时候);
  7. 外键名字不能重复,是针对数据库而不是表;
  8. 子表外键字段 - 数据 为父表引用字段子集;
  9. 字段可能为混合键值中一个,没有自己独立索引。外键字段必须有自己独立索引。

外键的作用

外键默认的作用有两点:一个对父表,一个对子表(外键字段所在的表)。

上边只是部分内容,为便于维护,本文已迁移到此地址:数据库-外键-用法/缺点 - 自学精灵

  • 27
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT利刃出鞘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值