V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  JasonLaw  ›  全部回复第 20 页 / 共 37 页
回复总数  739
1 ... 16  17  18  19  20  21  22  23  24  25 ... 37  
@fengpan567 #68 请问你有使用 primary key, unique 等数据库提供的约束吗?有使用事务吗?
@illuz #66 能够提供一下你所查阅的资料吗?我看到的绝大多数都是倾向使用外键的。

Google 搜索“foreign key database or application reddit”得到的一些结果:

* Are foreign keys really necessary in a database design? : programming - https://www.reddit.com/r/programming/comments/6xidz/are_foreign_keys_really_necessary_in_a_database/
* What Would Happen If Foreign Keys Not Used? : Database - https://www.reddit.com/r/Database/comments/ef38aq/what_would_happen_if_foreign_keys_not_used/
* Don't Most Databases Have Foreign Key Constraints? : SQLServer - https://www.reddit.com/r/SQLServer/comments/6wz2hu/dont_most_databases_have_foreign_key_constraints/dmd7dj1/
* ...
@agagega #55
@JasonLaw #61
@Rocketer #63

这里纠正一下,外键跟一致性( Consistency )没有太大的关系,更正确的说法是:外键能够保证 referential integrity 。Consistency 不是数据库本身的一个特性,它是应用怎么使用数据库的一个特性。
@passerbytiny #57 什么叫数据库编程?什么叫应用编程?
@agagega #55 同意你所说的“ 互联网公司的业务不太追求完整的数据一致性”
@Rocketer #54

我还是不明白,为什么“需求不明确”就开始开工了?就不建议使用外键了?

你说的分布式数据库指的是 NoSQL 数据库吗?
@zjsxwc #40 是有一点道理,不过要保证 referential integrity,也只有数据库外键才能做到。
@gBurnX #37 同意
@zjsxwc #24 个人感觉,这个是设计的问题,不是外键的问题,不在部门表存储负责人就行了,使用关系表解决。想象一下,把三个实体当作 Spring 中的 service 的话,它们也会造成循环依赖。
@alamaya #29 这样子的话,你也无法达到数据库外键所能实现的效果,应用代码还复杂多了。
@wqtacc #27 那怎么解决#15 所描述的问题?再激进一点的话,那还要事务干嘛,直接应用层解决不行吗?干嘛让数据库做这么多事情来保证 AID ?
@zjsxwc #20 关于“ 外键循环死锁依赖”,可以举个简单的例子吗?
@alamaya #19 应用层实现逻辑外键的话,比如我回复主题的时候需要检查主题是否存在,应用层检查难道不会给数据库增加压力?
@Jooooooooo #8 大项目用会有什么问题?顺便问一下,怎样的才是大项目?
@agagega #5 我更想知道现象背后的原因,而不是现在是怎样一个现象,欢迎分享你的想法。
@wangbenjun5 #12 “方便”具体指的是什么?
@xstmjh #10

What if someone deletes the parent while you're inserting children? Right now when I submit "add comment" -- if you have already deleted your answer, this comment is now an orphan. FKs would've prevented it.

Precisely -- it should be the DB's job, since it's the only one that can guarantee transactionality in the face of multiple concurrent clients.

不在数据库层面加上外键约束的话,应用代码怎么能做到数据库外键的效果?就比如第一段文字所描述的场景。
@ragnaroks #7 外键会带来数据库层面上的负担,难道“ 插入数据之前先检查各种冲突”就不是负担吗?
@Huelse #4 外键“ 增加了理解成本、后期维护成本”?为什么?
@ltfree #3 改需求跟外键有什么关系?
1 ... 16  17  18  19  20  21  22  23  24  25 ... 37  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1223 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 16ms · UTC 17:36 · PVG 01:36 · LAX 10:36 · JFK 13:36
♥ Do have faith in what you're doing.