在使用高级语言(如Python,Ruby)开发项目时,我应该使用手写模式还是让ORM自动生成模式?最终,我需要进行迁移而不会破坏所有数据。被特定关系型数据库系统限制是可以接受的,但如果能支持约束和过程等特性将更好。
我从不使用ORM生成的模式。我发现ORM想要生成模式的方式通常与我想要构建数据库的结构完全不同。此外,虽然这可能微不足道,但命名方案通常很差。数据库结构有其自身的限制,我发现ORM自动生成工具通常无法充分考虑这些限制。如果您以后需要在数据库上运行报告(而您肯定会需要),那么拥有良好的数据库结构和设计非常重要。
请参考 Coding Horror 上的这篇文章和相关链接,了解你最终需要完成的迁移工作。现在就开始做好规划吧。同时,请参考 Martin Fowler 的数据库演进;我特别推荐测试数据生成是数据库设置的一部分的概念。该想法可能有点不够完善,因为在不同的环境中,如开发、QA 和生产中,存在的问题有所不同,没有明确的界定。