在我看来hibernate最麻烦的一件事就是配置外键关联,稍微不慎就会出现配置错误的情况,现在的项目全部都是在使用mybaits,而mybaits使用就简单的多,起码虽然说是要自己写mysql语句,但是起码这种做法在现阶段的项目开发中还是非常的流行,以前经常听到眼言论说用hibernate开发会比mybaits要来得快,其实那应该 是对于高手而言,但是绝大部分如我这群菜逼而言,老老实实的写sql语句会更好一点,废话不多说,今天主要是谈谈外键关联对在项目开发中的影响。

表的关联,在某种程度上来说只是一种逻辑概念,比如在我们开始项目之初,是需要进行表设计,在用diagram  designe这类工具r设计表的时候,难免不会有各重业务上的逻辑关联的,这个时候如果你不使用外键管理,是很容易造成自身的逻辑混乱的,如果有那么一根根线连着,我们就能追根溯本,搞清整个项目的流程结构。

但是在物理结构的表上面,我们没必要进行物理上的硬绑定,而我们期望的关联,其实只是数据上存在的联系,而这种联系更多的是存在我们脑海里,而非明面上,所以在进行业务代码实现的时候,我们编写程序的时候,只需要在程序中实现逻辑关连 的存取即可,但是如果我们非得加上什么外键关联这层关系,只会带来更多的资源消耗来进行所谓的一致性检验,数据完整性检验,其实有些时候我们并不需要这层检验和约束。

我抽空问了几个其他公司的朋友,在mysql的时候,很多地方都直接把外键跟直接删除,当然这些都是互联网公司,因为相对于业务逻辑和速度,数据的完整性显得并不那么重要,各种的锁表估计也是追求性能的我们所不能接受的,若是遇到各种高并发和大流量的情况,外键造成的死锁和事务回滚那直接只会让程序猿骂娘。

当然在比如说银行或者是各种erp系统里面,数据完整性比企业的命还重要的时候,通过程序去控制各种业务逻辑显得并不那么可靠,因为程序总是那么容易攻破,而数据库稍微要更难一点点,而且在银行这种企业里面,数据是绝不能够轻易删除,而非向我们这样,如果哪些数据不尽人意,直接物理层面的给删除掉。

总之,外键的优点就是保证数据的完整性,缺点太多,不再累述。

转载于:https://www.cnblogs.com/xgspring/p/4936897.html

关于mysql中外键关联的一些个人理解相关推荐

  1. MySQL外键关联(一对多)MySQL连接查询

    MySQL外键关联(一对多) 外键说明 什么是外键? 1)表A中有字段(如身份证号)做了主键,表B中也有这个字段(身份证号),这里的身份证号一定来自表A同样字段里的内容,但再B表中身份证号对应id可以 ...

  2. mysql 外键关联

    mysql 外键关联 什么是外键: 外键是一个特殊的索引,用于关联两个表,只能是指定内容. 如我将新建一个daka的表,然后将此表的class_id 与另外一个class的表的cid字段关联 clas ...

  3. MySQL — 外键关联操作

    目录 文章目录 目录 MySQL 的外键约束 创建表时定义外键(References,参照) 修改原有表的外键约束 删除外键约束 参考文档 MySQL 的外键约束 注意,MySQL 的 InnoDB ...

  4. Mysql中外键作用以及Navicat建立外键失败总结

    本文摘自参考三篇文章,从这篇文章中将了解到外键作用以及navicat建立外键常见错误解决,帮助读者更加深刻了解外键. 文章目录 一.外键的作用 二. 不设置外键行不行? 三.那到底使不使用外键? 四. ...

  5. MySQL 中外键与使用详解

    外键字段必须先是一个索引,否则将会先创建索引,然后才能创建外键. 如果外键字段为混合键值其中一个,需要为该字段建立单独索引.删除的时候必须先删除外键,才能删除索引. 子表中外键字段数据要么为null, ...

  6. mysql中外键的作用是什么_mysql外键基本功能与用法详解

    本文实例讲述了mysql外键基本功能与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是外键 外键的增加 外键的修改和删除 外键的约束模式 首发日期:2018-04-12 什么是外键: 外键就 ...

  7. MySQL中外键的定义、作用、添加和删除

    1 简介 在实际开发的项目中,一个健壮数据库中的数据一定有很好的参照完整性.例如学生档案和成绩单两张表,如果成绩单中有张三的成绩,学生档案中张三的档案却被删除了,这样就会产生垃圾数据或者错误数据.为了 ...

  8. mysql外键关联查询_MySQL外键约束和多表联查

    一.创建外键 #测试数据表 # 教师表,主表 CREATE TABLE teacher( id INT PRIMARY KEY AUTO_INCREMENT, name varchar(20), ag ...

  9. MySQL中外键定义级展现结果_MySQL高频面试60题含答案

    在Java技术面试中,高频常问到的一些MySQL面试题,整理分享给大家,既可用来准备技术面试,也可以作为MySQL知识点梳理.温顾而知新.建议了解.收藏备用. Mysql中有哪几种锁? 1.表级锁:开 ...

最新文章

  1. 服务器可视化_系统管理员不可错过的6款服务器监控工具
  2. android查看控件的xml属性,006 Android XML 控件属性设置技巧汇总
  3. iptable 命令
  4. zcmu1133(dfs+判重)
  5. 一部珍贵的130位作家的手稿集
  6. UI设计素材干货模板|移动按钮的“悬停效果”
  7. 一种极端思维引起的幻觉
  8. android mainactivity 刷新fragment,Android刷新从FragmentActivity android.support.v4.app.Fragment
  9. 中国海洋大学第四届朗讯杯高级组 A 2718 Rocky(模拟)
  10. 【word】为什么word分两栏的最后一页左边一栏没写完跑到右边去了
  11. 程序员揭秘 一些鲜为人知的编程真相
  12. 谷歌浏览器安装stylish插件笔记
  13. “本是青灯不归客,却因浊酒留风尘,星光不问赶路人,岁月不负有心人”,你是怎么理解的?
  14. 互联网吞噬传统书店:全球大批书店倒闭
  15. java for冒号_浅谈对Java双冒号::的理解
  16. 【腾讯云】记录一次Could not connect to SMTP host: smtp.163.com, port: 25的解决办法
  17. 两国的“微”与“博”——Twitter与新浪微博的功能差异化探究
  18. 你懂得“沉没成本”是什么吗?是可怕的赌徒思想,会毁了你的一生
  19. ue4树叶飘落动画_Android:使用属性动画制作器的类似于树叶的动画
  20. python分解五位数

热门文章

  1. tableau选择计算_干货 | 年薪40W, 掌握Tableau的留学生真的赚翻了
  2. ubuntu linux mac地址,Ubuntu下修改mac地址
  3. python制作系统程序与html交互_python+html语音人物交互_flask后台与前端(html)交互的两种方法...
  4. 【技术解决方案】音视频同步策略分析并计算出当前音频播放的pts
  5. 计算机中级职称报考入口,2020年9月计算机职称考试报名流程(附入口)
  6. java imageview的使用_Android使用控件ImageView加载图片的方法
  7. linux数组操作 增删改查,linuxea:go数组与数组增删改查(19)
  8. cepl进程 Linux,Ubuntu下NS2-2.33安装过程
  9. 如何用illustrator做技术手册_做期货用什么技术指标分析?
  10. 南科大计算机科学与技术专业如何,广州大学、深圳大学、汕头大学、南方科技大学,如何排名?...