Ruby on rails 在RubyonRails这样的活动记录框架中工作时,使用外键约束是否有优势?

Ruby on rails 在RubyonRails这样的活动记录框架中工作时,使用外键约束是否有优势?,ruby-on-rails,foreign-keys,rails-activerecord,Ruby On Rails,Foreign Keys,Rails Activerecord,在中断了5年之后,我又回到了全职的web开发中。我以前的经验(没有活动记录或MVC)告诉我要非常彻底地使用我的数据库模式。外键约束、唯一索引等。。。在编写意大利面代码时,它确实能帮上忙 在活动记录/MVC框架中工作时,社区是否仍然觉得这些有用 编辑 我主要关注的是管理两个方面的约束;模型代码和数据库。这意味着重复工作,并可能导致错误。也就是说,您对数据库中的某个字段有唯一的约束,但模型不知道?我猜反过来也是如此,您可能会忘记将约束放在模型中,这样,当您不需要它时,您就会有重复的数据。如果您不使用

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

在活动记录/MVC框架中工作时,社区是否仍然觉得这些有用

编辑


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

如果您不使用约束,您的数据库将积累引用完整性中断的情况和应该有唯一值的重复情况,等等

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


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

它可以正常工作,但是在某些情况下,您必须小心双击竞态条件错误(因为它验证了竞态条件的唯一性)


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

这也是我最初的想法。但是,我愿意假设框架在处理数据时不会出错。这意味着很难意外地编写引入重复或孤立项的代码。也就是说,我想这些约束对于通过手动操作数据库来防止错误仍然很有用。谢谢。我一直认为该框架能够维护一个一致的数据库。我想它不能: