国外装修网站建设模板,合肥效果图制作公司,wordpress做淘宝旺旺,做网站实名认证总是失败怎么回事在最早接触数据库的时候#xff0c;会接触数据库三范式#xff0c;在表和表之间有关系的时候#xff0c;需要使用外键添加约束
外键的好处#xff1a; 1、由数据库自身保证数据一致性#xff0c;完整性#xff0c;更可靠#xff0c;因为程序很难100#xff05;保证数据…在最早接触数据库的时候会接触数据库三范式在表和表之间有关系的时候需要使用外键添加约束
外键的好处 1、由数据库自身保证数据一致性完整性更可靠因为程序很难100保证数据 的完整性而用外键即使在数据库服务器当机或者出现其他问题的时候也能够最大限度的保证数据的一致性和完整性。
eg数据库和应用是一对多的关系应用会维护他那部分数据的完整性系统一变大时增加了应用和两个应用也许是不同的开发团队来做的。他们如何协调保证数据的完整性而且一年以后如果又增加了C应用呢
2、有主外键的数据库设计可以增加ER图的可读性这点在数据库设计时非常重要。
3、外键在一定程度上说明的业务逻辑会使设计周到具体全面
4、除非能证明触发器的性能和可维护性比外键更优否则凭什么一定要否定外键呢使用应用程序来维护数据完整性则是严重降低数据库安全性的一种做法。连接字符串里如果有uid和pwd或者类似的这两个东西可以使用工具获取你数据库的帐号。因为每次建立数据库联接的时候都会在网线上以标准格式传递这些信息。从此编码内的任何保证都是空的。
5、不使用外键会导致数据冗余在级联最底层的表可能会重复好几层的数据。必然导致最底层的表数据量翻倍IO瓶颈是数据库性能瓶颈之一
外键的坏处 缺点
1、可以用触发器或应用程序保证数据的完整性(外键可代替)
2、过分强调或者说使用主键外键会平添开发难度导致表过多等问题
3、不用外键时数据管理简单操作方便性能高导入导出等操作在insert, update, delete 数据的时候更快
eg: 在海量的数据库中想都不要去想外键试想一个程序每天要insert数百万条记录当存在外键约束的时候每次要去扫描此记录是否合格一般还不止一个 字段有外键这样扫描的数量是成级数的增长我的一个程序入库在3个小时做完如果加上外键需要28个小时
4、几乎不用抛开性能不说开发、测试、部署、实施以及维护的时候都带来不少问题。数据完整性几乎都是业务的要求理应由业务部分负责维护而不是依赖数据库访问量较大的web应用以及有一定规模的企业应用都关注伸缩性和性能问题各种形式的垂直、水平切分运用越来越多外键、触发器、存储过程之类的基本属禁区
数据库外键会很影响性能
热更新 如果说数据库有外键会造成数据无法
可以降低耦合度方便修改
外键保证强一致性与分布式系统的思想相违背
也不方便数据库的分库分表在大型分布式架构当中