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

2019-09-16 10:52:48 +08:00
 cl903254852

Mysql刚入门,看到有人说表关联不要用外键约束。

我就有点懵逼了

  1. 如果不用数据库的外键关联,那表之间应该怎么关联呢?
  2. 不用外键约束,怎么保证表的数据完整性和一致性的维护?
16238 次点击
所在节点    MySQL
53 条回复
ralph79
2019-09-16 16:55:32 +08:00
外键时约束,数据自身产生联系就好了,和建不建外键没有关系
zazalu
2019-09-16 17:00:03 +08:00
@cl903254852 全部都是软件,全部都是代码,你说的这个代码控制,我觉得说的不太准确哈哈。 控制方式多种多样,随你怎么控制,关键还是在于性能哦!如果你说的这个“代码控制”它本身性能还不如直接用外键,那么又有何意义呢
Variazioni
2019-09-16 17:07:21 +08:00
业务层里自己判断啊。。。
cl903254852
2019-09-16 17:16:14 +08:00
@akira 我看到有人这么说了,就好奇为什么,就过来问问。🤣打扰了打扰了
cl903254852
2019-09-16 17:19:00 +08:00
@zazalu 大佬说的有道理。我说的代码控制是指 java 或 php 这类的服务端代码根据业务控制外键约束
wangxiaoaer
2019-09-16 17:32:32 +08:00
@shintendo 我艹,我他么傻逼了。不好意思。
chengyiqun
2019-09-16 23:20:26 +08:00
数据量大都那么做的吧, 逻辑外键, 业务层控制. 关联表多了, 数据量大了, 物理外键确实会降低并发, 同时, 不方便割接数据, 但是坏处就是容易产生脏数据.
zomco
2019-09-17 07:06:35 +08:00
我懵了,表 1 与表 2 不用外键关联的话,是如何用表 1 的第 n 行查询到表第 k,l 行的?是让表 1 冗余,表 1 和表 2 根据 ID 一一对应吗?
zc1249274251
2019-09-17 07:25:23 +08:00
设计表的时候,部分冗余,做一些反范式化的设计
linxiaojialin
2019-09-17 09:49:48 +08:00
1.用不用外键都可以关联查询;
2.数据的一致性、完整性:
数据量小或者没用分布式的话,可以用外键约束;
数据量大的话,建议在业务层约束;
3.如何判断数据量大小:结合表的记录和实际业务逻辑的复杂度自行判断吧
MrYELiex
2019-09-17 10:53:20 +08:00
主要还是因为物理外键在集群上维护性的问题 因为互联网业务场景下数据库大多都是集群 可能用户的一条用户信息在另一台机器上 而他同时下两个订单分别在两个机器上 这怎么维护外键
johnsona
2020-05-24 08:36:02 +08:00
@workspace 子查询吗
johnsona
2020-05-31 17:41:01 +08:00
@wysnylc 可是代码里面维护一致性反而更加磨蹭啊喂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/601087

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX