gpt4 book ai didi

ruby-on-rails - Rails 是否有工具来验证数据库的引用完整性?

转载 作者:行者123 更新时间:2023-12-04 06:17:05 25 4
gpt4 key购买 nike

应用程序存在错误或在更新时出现错误,其中一些隐藏的错误会在数月或数年后被发现,产生孤立记录、指向无处的 key 等,即使使用适当的测试套件也是如此。

虽然 Rails 没有在数据库级别强制执行引用完整性——并且出于其他地方讨论的一些充分理由,它会保持那样——但拥有可以检查数据库是否处于一致状态的工具仍然是件好事。

既然模型描述了“应该是”什么,离线工具是否可以验证所有数据的完整性是不可能的。它可以定期运行,在备份数据之前运行,或者只是为了让开发人员睡个好觉。

有这样的吗?

最佳答案

我不知道有这样的工具。至少您知道引用完整性危害的危险。那为什么要让自己受苦呢?按照 dportas 的建议,首先使用外键引用。

要在迁移中使用它,添加如下内容:

execute('ALTER TABLE users ADD FOREIGN KEY (language_id) REFERENCES languages(id)')

使用户的 language_id 列引用语言表中的有效行。

根据您的 DBMS,这甚至会自动为您创建索引。还有用于 rails 的插件(查看 pg_on_rails),它为这些任务定义了易于使用的别名函数。

只检查备份文件的完整性是没有意义的,因为错误已经发生了,你的数据可能已经乱七八糟了。 (我去过那儿)另一方面,当使用上述外键约束时,任何会破坏完整性的操作都会失败。

将其想象成当您感到疼痛时去看牙医(=进行手术)与使用神奇的牙膏刷一次牙,保证您的 dentry 在您的余生都保持良好状态。

另一件需要考虑的事情:您的应用程序中的错误将更容易定位,因为在尝试插入损坏数据的代码处会引发异常。

所以请使用外键约束。您可以轻松地将这些语句添加到现有数据库中。

关于ruby-on-rails - Rails 是否有工具来验证数据库的引用完整性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3609477/

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