MySQL 不用外键的话,如何让表起来关联呢?

最近在设计一个户外APP的数据库,在外键设计上有点纠结,用仍是不用,考虑了再三,仍是不用,数据库

那么如何表之间的关联了。只能在字段名上作文章了。
并发

好比在用户表里面的ID,最好写成userId
高并发

与之关联的相册表里面对应一个userId便可实现关联spa



参考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字段也必须修改成对应的值...
软件

相关文章
相关标签/搜索