阿里Java规范

【强制】不得使用外键与级联,一切外键概念必须在应用层解决。

说明:以学生和成绩的关系为例,学生表中的 student_id是主键,那么成绩表中的 student_id则为外键。如果更新学生表中的 student_id,同时触发成绩表中的 student_id 更新,即为级联更新。外键与级联更新适用于单机低并发,不适合分布式、高并发集群;级联更新是强阻塞,存在数据库更新风暴的风险;外键影响数据库的插入速度。

外键

外键:表的外键是另一表的主键,外键是可以有重复的,可以是空值,用于保持数据的一致性。

  • 保证数据的完整性和一致性
  • 级联操作方便
  • 将数据完整性判断托付给了数据库完成,减少了程序的代码量。

  • 性能下降: 每次对数据进行DELETE或UPDATE操作都必须考虑外键约束 数据库都会判断当前操作是否违反数据完整性,性能下降。
  • 死锁:使用外键,外键关联的数据查询要去另一张表,获取额外的锁,容易造成死锁。
  • 扩展性问题:触发器 外键 这种依赖于数据库本身的特性 可扩展性较差。 分库分表方便,在水平拆分和分库的情况下,外键是无法生效的。

参考

https://www.cnblogs.com/rjzheng/p/9907304.html
https://blog.csdn.net/u010695055/article/details/53169472
https://blog.csdn.net/u010094934/article/details/90137110

SQL 语句:不得使用外键与级联,一切外键概念必须在应用层解决相关推荐

  1. 关于阿里巴巴开发手册不得使用外键与级联,一切外键概念必须在应用层解决的疑惑

    原文地址:http://www.codes51.com/itwd/4517194.html 问题: 关于阿里巴巴开发手册"不得使用外键与级联,一切外键概念必须在应用层解决"的疑惑 ...

  2. oracle 级联外键,Oracle 级联删除外键

    所谓的级联删除是指当主表中的一条记录被删除,那么子表中所关联的记录也相应的自动删除.本教程将教大家如何在Oracle中使用级联删除外键. 使用CREATE TABLE语句定义级联删除 以下是使用CRE ...

  3. 玩转SQL语句之group by 多字段分组查询与having子句,一篇解决你的疑惑!

    sql语句group by使用详解 group by的基本语法 基本语法 什么是分组查询(一个字段) 多个字段的分组查询 1.两个字段的分组查询 2.三个字段及N个字段进行分组查询 having子句的 ...

  4. java代码内创建mysql索引_点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)...

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...

  5. ylb:使用sql语句实现添加、删除约束

    ylbtech-SQL Server:SQL Server-使用sql语句实现添加.删除约束 --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. -- ...

  6. oracle创建表语句_利用FME去拼接SQL语句并创建表

    在之前的工作中,我遇到了这么一个需求,需要将数据库内一千多个旧表按其原来表结构,重新创建对应的新表.然后对旧数据的进行处理后,存储新的数据. 不只是结构需要保持一致,还有用户.表空间.约束.备注等也需 ...

  7. mysql删除表外键_MySQL删除所有表的外键约束、禁用外键约束

    数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能.在开发中,我们使用PowerDesigner建立物理数据模型时,为了结构的清晰,增加可读性,会创建表与表之间的关联关 ...

  8. 外键查询_详解MySQL数据库删除所有表的外键约束、禁用外键约束相关脚本

    概述 数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能.在开发中,我们使用PowerDesigner建立物理数据模型时,为了结构的清晰,增加可读性,会创建表与表之间的 ...

  9. 用SQL语句创建数据库和表

    --------创建数据库 ----use master ----GO----IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE nam ...

最新文章

  1. 【Java】对Web Service的理解
  2. FZU OJ:2230 翻翻棋
  3. IOS第七天(2:UiTableView 加上数据分离)
  4. rtt面向对象oopc——3.对官方IO设备模型框架图的补充绘图
  5. 机器学习与计算机视觉(绘图)
  6. 杨氏模量_快!准!狠!——5分钟搞定A-Level物理必考知识点杨氏模量曲线...
  7. 蓝桥杯 ALGO-160 算法训练 P0104
  8. 安卓控件显示等宽字体的办法
  9. Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx
  10. 天猫商城多幅图片并排展示广告效果,鼠标指向高亮其它阴影
  11. 我的注电之旅——基础考试篇
  12. 在Hive中使用过的函数记录(百分比、截取字符串、分组TOP N、日期转换、日期是第几周)
  13. axio使用get方法之传递对象数组问题及解决方法
  14. 如何从gitbub上clone代码
  15. vbs进阶——常用函数之inputbox篇(末尾有彩蛋)
  16. 多目标追踪-2019综述《Deep Learning in Video Multi-Object Tracking: A Survey》
  17. P4839 P哥的桶 题解
  18. 记一次在vue项目上使用七牛文件上传的坑
  19. Ansys-热应力分析(间接法)-液体管路分析学习收获
  20. 计算机窗口关闭不了怎么办,电脑上一直出现这个窗口关都关不掉怎么处理

热门文章

  1. linux 关闭系统中多余的服务
  2. 解决vs2019中vsvim无法使用ctrl+[的问题
  3. 安装uwsgi 报错 是什么原因??
  4. WSA无法调用GPU跑分解决方法
  5. QT延时函数sleep
  6. 走ORACLE后门cusor_sharing的问题
  7. RxJava学习资源
  8. 05-----关于C++使用VS时出现 error C2248: “xxx“ 无法访问private成员(在“MySpdlog“类中声明)
  9. 基于JavaGUI的中英文打字训练测试软件设计
  10. 运动耳机品牌推荐,热门六款运动耳机推荐