gpt4 book ai didi

ruby-on-rails - 您是否有任何理由不想在关联中使用 foreign_key?

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:13 27 4
gpt4 key购买 nike

如果你有

Parent
has_many :children

Child

Child 上的外键(到 Parent)和相应的 belongs_to :parent 是否有任何原因可能不受欢迎?

什么时候(如果有的话)您不希望您的子级能够访问其父级?

最佳答案

这是一个权衡。反对外键的通常论点是外键的索引会在插入/更新/删除时产生一些性能开销。 就像任何索引一样。

但是当您通过该列进行搜索时,索引也会带来很大的好处。

SELECT * FROM Child WHERE parent_id = :id 

也不要低估搜索孤儿和清理 bollixed 引用的开销,这是省略外键约束的必然结果。

-- Typical chore: searching for orphaned child rows.

SELECT c.* FROM Child c LEFT OUTER JOIN Parent p
ON (c.parent_id = p.parent_id)
WHERE p.parent_id IS NULL;

还有一些数据库设计不能使用外键,例如多态关联或实体属性值。但这些设计本身就是反模式。

关于ruby-on-rails - 您是否有任何理由不想在关联中使用 foreign_key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/921899/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com