`

为何外键不再推荐使用

    博客分类:
  • DB
阅读更多
表的关联,是一种逻辑关系,并不需要进行物理上的“硬关联”,而且你所期望的关联,其实只是其数据上存在一定的联系而已,而这种联系实际上是在设计之初就定义好的固有逻辑。

在业务代码中实现的时候,只要按照设计之初的这种固有关联逻辑来处理数据即可,并不需要在数据库层面进行“硬关联”,因为在数据库层面通过使用外键的方式进行“硬关联”,会带来很多额外的资源消耗来进行一致性和完整性校验,即使很多时候我们并不需要这个校验。

所以一般不建议在数据库中使用外键约束来保证数据的一致性和完整性。

若是高并发大流量事务场景,使用外键可能容易造成死锁,以及数据库资源出现瓶颈,所以一般互联网行业高频率高并发不建议使用

如何体现表与表之间的关联性和如何维护数据完整性和一致性:
1.关联性:设计数据表的时候,约定关联字段
2. 维护数据完整性和一致性:通过程序控制,启用事务的方式
分享到:
评论

相关推荐

    PowerDesigner教程

    内容尽量简略,一些相同或类似操作过程尽量不再重复。 <br>3. 部分术语参考了飞思科技产品研发中心监制电子工业出版社的《PowerDesigner数据库系统分析设计与应用》。 <br>4. 暂时没有包含OOM,XML,BPM,ILM...

    Java数据库程序设计1

    1.不再累述 2.不再累述 3.主键只能有一个,外键可以有多个 4.在同一关系中,外键必须是主键 5.一个外键需要与它的引用主键不一定具有相同名字(存疑) 6.

    视频教程读书笔记之oracle从入门到精通

    2. 自然连接:NATURAL JOIN,自动使用关联字段消除笛卡儿积(一般关联字段是外键,但是此处它是以名称为主),属于内连接的概念。 SELECT * FROM emp NATURAL JOIN dept; 在返回查询结果的时候,默认情况下会将关联...

    数据库设计与优化.pdf

    我这里说的谨慎,是因为级联删除和级联更新有些突破了传统的关于外键的定义,功能有点 太过强大,使用前必须确定自己已经把握好 其功能范围,否则,级联删除和级联更新可能让你的数据莫名其妙 的被修改或者丢失。...

    sqlserver主键设计的注意点

    常常有人称呼主键为内部标识,为什么会这样称呼,原因之一在于“内部”,所谓内部从某种程度上来说就是指表记录,从大的范围来说就是数据库,如果你在设计的时候选择了对用户来说有意义的信息来作为主键,那么迟早会...

    jleopard一个轻量级的JDBC框架

    真正轻量级,小到仅100kb左右。 极易上手,不再需要手写sql。 功能强大,自动生成sql,除了常用的增删改查还支持逆向工程,自动建表 ,多表外键关联,分页查询。

    node-sql-fixtures:PostgreSQL,MySQL,MariaDB和SQLite中Node.jsSQL固定装置

    sql-fixtures 轻松生成保存在数据库中的数据,并自动解决外键依赖性。 集成测试和生成伪数据的理想选择。 内部使用 。Hibernate但稳定sql-fixtures不再处于活动状态,因为它已经完成了很多工作。 如果出现任何问题,...

    SAP BW模型解析

    传统的Cube:星型结构,由事实表和维度表组成,事实表存放的是业务数据以及它本身独有的信息和指向周围维表的外键,事实表的主键由维度键值组成;维表中存放的是特性值,由一个维度键值和多个维度属性组成. 改进的...

    sql总结.doc

    那些被经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次都指定全部的条件。 2.安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其他数据则既看不见也取不到。数据库授权命令可以...

    基于Android的毕业论文管理系统的设计与研究.docx

    基于Android的毕业论文管理系统的设计与研究全文共6页,当前为第1页。基于Android的毕业论文管理系统的设计与研究全文共6页,当前为第1页。基于Android的毕业论文管理系统的设计与研究 基于Android的毕业论文管理...

    jleopard:orm框架

    极易上手,不再需要手写sql。功能强大,自动生成sql,除了常用的增删改查还支持逆向工程,自动建表,多表外键关联,分页查询。 捷豹jleopard快速上手:一基本配置丨核心罐包jleopard-xx.jar。 maven开发约会依赖...

    hibernate总结

    a) 不再操纵表,它操纵的是持久化类的对象 b) 面向对象的 3. QBC ( query by criteria ) 更加面向对象 4. QBE ( query by Example ) 5. SQL Hibernate的检索策略: 1. 延迟检索(加载)映射文件中改变lazy ...

    数据库-MySQL-停车场管理系统.pdf

    NOT NULL 车牌编号 Cwbh numeric 20 唯一约束,NOT NULL,外键 车位编号 Czxm varchar 12 NULL 车主姓名 Clys varchar 12 NOT NULL 车辆颜色 用于记录固定车主以及自由车主的停车信息,所以车主姓名可以为空。...

    数据库-MySQL-停车场管理系统-.pdf

    NOT NULL 车牌编号 Cwbh numeric 20 唯一约束,NOT NULL,外键 车位编号 Czxm varchar 12 NULL 车主姓名 Clys varchar 12 NOT NULL 车辆颜色 用于记录固定车主以及自由车主的停车信息,所以车主姓名可以为空。...

    数据库(MySQL)停车场管理系统.pdf

    NOT NULL 车牌编号 Cwbh numeric 20 唯一约束,NOT NULL,外键 车位编号 Czxm varchar 12 NULL 车主姓名 Clys varchar 12 NOT NULL 车辆颜色 用于记录固定车主以及自由车主的停车信息,所以车主姓名可以为空。...

    数据库(MySQL)停车场管理系统(1).pdf

    NOT NULL 车牌编号 Cwbh numeric 20 唯一约束,NOT NULL,外键 车位编号 Czxm varchar 12 NULL 车主姓名 Clys varchar 12 NOT NULL 车辆颜色 用于记录固定车主以及自由车主的停车信息,所以车主姓名可以为空。...

    代码生成器Mgicode生成器JAVA代码生成器

    为什么不能并论?是因为Java开发阳春白雪?在我们的潜意识中,Java开发就是让程序员(学生)一行一行地编写代码,编写HTML、CSS等,而.Net开发只要把控件拖到页面上即可,Java开发的效率一定比.Net低很多很多。 那么...

    收获不知Oracle

    5.2.1.8 不可不说的主外键设计265 5.2.1.9 组合索引高效设计要领272 5.2.1.10变换角度看索引的危害289 5.2.1.11如何合理控制索引数量295 5.2.2 位图索引的玫瑰花之刺 297 5.2.2.1 统计条数奋勇夺冠297 5.2.2.2 即席...

Global site tag (gtag.js) - Google Analytics