分布式或大型互联网项目中,数据库物理外键移除的原因

1.性能影响
大型互联网项目或者分布式项目,进行更新操作时,会在影响数据库性能
2.热更新
如果数据库存在外键,会导致新更新上去的代码无法运行,可能产生冲突,需要重新启动项目
3.降低耦合度
删除外键是指物理上删除外键,但是逻辑上还是存在外键的,这样就降低了表与表之间的耦合度(举个例子:用户表与用户订单表,用户订单表是有user_id字段,要查询用户订单,要通过user_id,这个user_id字段还是存在的)
4. 数据库分库分表
导致分库分表难以实现,举个例子,用户表和订单表有个外键关联,做分库操作,却有外键关联,就难以实现分库

原文地址:https://www.cnblogs.com/zhaobao1830/p/12100173.html

时间: 2024-10-14 01:08:42

分布式或大型互联网项目中,数据库物理外键移除的原因的相关文章

大型验证项目中的数据管理

? Eduardo Lluna拥有巴伦西亚大学的物理学位和巴伦西亚大学理工学院电子工程系的博士学位.他一向对于软件测试,电子测量设备和感测网路方面的研究都很积极.Lluna有20多年的关于交通控制,公众视野,支付,电信系统领域的即时嵌入系统的软件的专业经验.他曾在SICE, Telvent还有 Design of Systems on Silicon (DS2)公司任过职.他是巴伦西亚大学计算机科学部的副教授,且自2011年1月起,就已在ITI公司的软件质量部担任协助不同研发项目的项目经理.更多

django 中新添加外键后一直报错

在模型中添加了外键,然后一直显示**_id无数值 原因在于在model中新添加字段,没有写进数据库 正确操作为: 首先,进入开发环境(也就是说,不是在发布环境里): 1.在你的模型里添加字段. 2.运行 manage.py sqlall [yourapp] 来测试模型新的 CREATE TABLE 语句. 注意为新字段的列定义. 3.开启你的数据库的交互命令界面(比如, psql 或mysql , 或者可以使用 manage.py dbshell ). 执行 ALTER TABLE 语句来添加新

MySQL数据库建立外键失败的原因总结

http://database.51cto.com/art/201108/280088.htm 在MySQL数据库创建外键时,经常会发生一些错误,这是一件很令人头疼的事.一个典型的错误就是:Can’t create table... 的错误.在很多实例中,这种错误的发生都是因为mysql一直以来都不能很好的支持的关系的问题, 更不幸的是它也并没有指明到底是哪一个问题会导致上面那种错误,下面我把导致这个可怕的150错误的常见原因列出来了,并且我以可能性的大小作了排序,已知的原因: 1.两个字段的类

关?于?h?i?b?e?r?n?a?t?e?中?双?向?外?键?关?联?o?n?e?-?t?o?-?o?n?e?的?p?r?o?p?e?r?t?y?-?r?e?f?=?的?问?题(转)

大家都知道hibernate中的one-to-one映射主要有两种策略,(1)一对一主键关联(单向和双向).(2)一对一外键映射(单项和双向).本文主要讲解一下,一对一外键映射中的双向问题,在此前先通过一个实例了解. person和idCard,是一种一对一的关系,其中   t_person表 id        name       idCard(unique) 1         张三 2         王五       1 其中王五是没有idcard,这也符合现实中的,有些人是没有身份证

java大型互联网项目大流量高并发所需的技术

互联网一般运行技术:webservice,jquery,访问量,缓存,数据安全等,JAVA后台就比较多了,不过,像这种大型的互联网项目,基本框架都有了,你需要做的就是熟悉业务,熟悉他们公司所用的框架,有了基本业务和技术框架的支持,下面就是要细分下你具体的工作了,如果是普通开发人员,了解下webservice接口,jquery,数据库处理,缓存等基本就够用了. 页面:jsp(做成静态html),js,jquery+ajax    后台:struts2+spring 数据库:大型共享的资讯数据mon

数据库设计的过程中的设置外键的作用

转自“https://zhidao.baidu.com/question/445274717.html” 表A中有字段(如身份证号)做了主键,表B中也有这个字段(身份证号),这里的身份证号一定来自表A同样字段里的内容,那么表B的这个字段就叫表A字段的外键,也就是两个表以身份证号这个字段建立了联系. 表A中身份证号字段里面的身份证号一定是唯一的,不能有重复,而表B里面的同一个身份证号可以出现多次.这称为表A身份证号字段与表B身份证号字段建立了一对多的关系. 外键的作用就是可以让身份证号保证是来自表

oracle中查询所有外键引用到某张表的记录

其实查找这篇文章  我主要用的sql 是这句  select * from user_cons_columns t where t.constraint_name like 'FK_CTS_CONT_REINS__CRR'; 起因: 系统测试的时候发现如果某条记录已经被引用了,这个时候删除这条记录会引起数据不一致,系统会报错.比如警员信息,在考勤记录表里会引用警员ID,如果考勤记录表中已经存在这个警员ID了,这时从警员表中删除该警员,就会引起数据不一致,前台报错.所以,这个时候我就想查找数据库中

数据库 SQL 外键约束 多表查询

多表设计与多表查询 1.外键约束        表是用来保存现实生活中的数据的,而现实生活中数据和数据之间往往具有一定的关系,我们在使用表来存储数据时,可以明确的声明表和表之前的依赖关系,命令数据库来帮我们维护这种关系,像这种约束就叫做外键约束.          定义外键约束  foreign key(本表的列名 ordersid) references orders(id)(引用的表明及列名)     create table dept(         id int primary key

数据库原理--外键和主键

在关系型数据库中,数据结构有逻辑结构和物理结构.物理结构指存储在物理介质上的数据文件的结构.逻辑结构即关系,也就是一张张的二维表.表中的一列即为一个字段(属性),代表的是实体的一个属性.表中的一行即为一条记录.如:学生表中(学号,姓名,年龄,性别),在该表中有4个字段,代表学生实体的4个属性.表中的一行数据(001,张三,男,20),即一条记录,表示的是张三这个学生的信息. 在表中,用来唯一标识一条记录的字段集,叫做主关键字或者主关键码,简称主键(主码),而主键包含的属性(字段)叫做主属性,其他