代码之家  ›  专栏  ›  技术社区  ›  Lawrence Barsanti

在RubyonRails这样的活动记录框架中工作时,使用外键约束有什么好处吗?

  •  3
  • Lawrence Barsanti  · 技术社区  · 14 年前

    在中断了5年之后,我又回到了全职网页开发领域。我以前的经验(没有活动记录或MVC)告诉我要非常彻底地使用我的数据库模式。外键约束、唯一索引等。。。当你写意大利面代码的时候真的能帮上忙。

    在activerecord/MVC框架中工作时,社区是否仍然觉得这些有用?

    编辑

    我主要关心的是管理两个地方的约束;模型代码和数据库。这意味着重复的工作,它可能会导致错误。也就是说,您对数据库中的某个字段有一个唯一的约束,但是模型不知道它?我猜反过来也是这样,你可以忘记在模型中添加约束,这样当你不需要它时,你就会有重复的数据。

    2 回复  |  直到 12 年前
        1
  •  1
  •   Omar Qureshi    14 年前

    它可以很好地工作,但是在某些情况下,您必须小心双击竞态条件错误(因为它验证了受竞态条件影响的对象的唯一性)。

    就模型而言,它并不关心,数据库中的逻辑与Rails应用程序中的逻辑是分开的。

        2
  •  5
  •   Bill Karwin    14 年前

    如果不使用约束,数据库 积累引用完整性破坏的案例和应该有唯一值的重复案例等。

    更重要的是,如果您确实使用了约束(并且没有像某些人那样养成不时禁用约束的习惯),那么您将始终能够确保所有数据都符合预期的数据模型。

    这就是数据库强制约束的价值所在:这是确定数据的唯一方法,而且不必反复检查框架(例如ActiveRecord)是否正常工作。您不必编写SQL清理脚本来查找虚假的孤立项和重复项。