扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
比如在用户表里面的ID,最好写成userId
成都创新互联公司是一家集网站建设,江海企业网站建设,江海品牌网站建设,网站定制,江海网站建设报价,网络营销,网络优化,江海网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
与之关联的相册表里面对应一个userId即可实现关联
参考1:
表的关联,只是一种逻辑概念,本并不需要进行物理上的“硬绑定”,而且你所期望的关联,其实只是其数据上存在一定的联系而已,而这种联系实际上是在设计之初就定义好的固有逻辑。
所以在业务代码中实现的时候,只要按照设计之初的这种固有关联逻辑来“存/取”数据即可,并不需要在数据库层面进行“硬绑定”,因为在数据库层面通过使用外键的方式进行“硬绑定”,会带来很多额外的资源消耗来进行一致性和完整性校验,即使很多时候我们并不需要这个校验。
所以一般不建议在数据库中使用外键约束来保证数据的一致性和完整性。
参考2:
首先关于外键的作用与使用场景:
1.作用:通过数据库提供的外键功能,进行数据完整性和一致性的维护,避免借助外部力量维护;
2.使用场景:若是高并发大流量事务场景,使用外键可能容易造成死锁,以及数据库资源更快出现瓶颈,所以一般互联网行业不建议使用,多使用再企业内部,比如ERP软件,早期的MIS系统等
关于如何体现表与表之间的关联性和如何维护数据完整性和一致性:
1.关联性:那就是设计数据库的时候,要让所有人知道表与表之间的通过那个字段关联起来,所以字段名称命名上会做一些文章
2. 如何维护数据完整性和一致性:通过外部程序的力量,启用事务的方式,比如:
START TRANSACTION;
UPDATE A SET co1=** …;
UPDATE B SET A_co1=**…;
COMMIT;
注释:假设场景 A表的col1变成某值之后,B表中的A_col1字段也必须修改为对应的值…
在MySQL中删除一张表或一条数据的时候,出现
[Err] 1451 -Cannot deleteorupdatea parent row:
aforeignkeyconstraintfails (...)
这是因为MySQL中设置了foreign key关联,造成无法更新或删除数据。可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。
禁用外键约束,我们可以使用:
SETFOREIGN_KEY_CHECKS=0;
然后再删除数据
启动外键约束,我们可以使用:
SETFOREIGN_KEY_CHECKS=1;
查看当前FOREIGN_KEY_CHECKS的值,可用如下命令:
SELECT @@FOREIGN_KEY_CHECKS;
首先关于外键的作用与使用场景: 1.作用:通过数据库提供的外键功能,进行数据完整性和一致性的维护,避免借助外部力量维护; 2.使用场景:若是高并发大流量事务场景,使用外键可能容易造成死锁,以及数据库资源更快出现瓶颈,所以一般互联网行业不建议使用,多使用再企业内部,比如ERP软件,早期的MIS系统等 1.关联性:那就是设计数据库的时候,要让所有人知道表与表之间的通过那个字段关联起来,所以字段名称命名上会做一些文章
分两步走:
确认受外键约束的数据是否可用同步删除。如果可用则直接删除,如果不可以则接触外键约束。
外键解除或受外键约束数据被删除后,可用直接删除自身数据。
alter table test drop foreign key 外键名称;
尽量避免建立外键,外键会带来额外的复杂性和额外的索引消耗,还会增加多表之间的交互,导致系统有更多的锁和竞争。如果涉及的是一个高性能的系统,外键就很累赘。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流