回答
数据库的约束条件不再需要在您的汽车中佩戴安全带。你可以驾驶你喜欢的一切,一切都会很好,直到问题到来。安全带(约束)使您(数据)保持安全。
因此,强烈建议您创建约束以在数据库级别强制实施数据完整性,因为这很可能1)您将在Rails之外的某个点与数据库进行交互,2)您将在您的代码导致无效数据。
数据库的限制会更多的工作,但它节省了大量的工作,尤其是当你的代码可以对数据的假设,并没有做顿有效性检查。
原因的ActiveRecord不支持外键开箱即用的,因为它意味着是数据库无关,和外键被普遍所有的数据库系统的支持。
您可以使用Foreigner插件添加外键支持。
并非所有支持ActiveRecord的数据库都支持外键,因此Rails框架不会将其作为核心功能。
注意:以上不再准确,因为Rails added FK support在4.2中。
我知道......我只是想know..do我们需要这个??? ..... – jojo 2010-04-07 01:49:13
简短的回答是,是的,它是重要的,但默认情况下,你必须使用':options'哈希值。 ActiveRecord生活在一个抽象级别,它不能支持FK。 – 2010-04-07 01:55:22
- 1. 我是否需要设置约束?
- 2. 导航栏是否需要约束?
- 3. 需要SQL Server DB和App设计级别建议。数据库或应用程序中的约束?
- 4. 如何判断数据库是否需要在Android中升级?
- 5. 如何检查一个h2数据库是否需要升级?
- 6. Rails数据库级别的多继承
- 7. 是否需要关系数据库?
- 8. 是否需要在Ruby on Rails中迁移数据库?
- 9. 外键总是需要约束吗?
- 10. 总是需要约束 - iOS(Swift)
- 11. 引用PK的外键是否需要NOT NULL约束?
- 12. ORM和数据库约束
- 13. 数据库外键约束
- 14. sql数据库oracle约束
- 15. android sqlite数据库约束
- 16. GAE中数据级别的唯一约束
- 17. Rails的唯一约束模型+数据库级和竞争条件
- 18. 如何在web2py的数据库级别创建多列唯一约束?
- 19. 数据库约束是否映射到业务逻辑
- 20. H2数据库:是否可以重新命名约束?
- 21. UNIQUE约束是否在Sqlite中不需要显式索引?
- 22. 如何管理Rails关联和数据库外键约束之间的区别?
- 23. 我需要顶级约束的未知元素
- 24. Nokogiri是否需要Rails?
- 25. Rails - 是否需要IRB?
- 26. 我需要在此表上使用特殊的数据库约束吗?
- 27. 约束阶级
- 28. Rails数据库约定
- 29. Rails中的Mysql约束数据库条目
- 30. EF数据库类别需要建议
我喜欢安全带的比喻! – Zabba 2010-09-30 05:48:05
另一个原因:除非你的Rails应用程序是一个过程,一个线程,在一台服务器上运行,它可以同时处理多个请求。像'验证的东西:用户名,唯一性:TRUE'可以在这种情况下失败,因为所请求的用户名的每个应用程序实例的检查,没有发现它,然后将其插入。只有一个唯一索引可以防止这种情况一般来说,任何检查,如“是否这个数据是有效的数据库** **现在**?”只能由数据库本身可靠地完成。 – 2016-12-30 14:37:13