我正在寻找一个脚本,允许我在一个简单的模型文件中定义我的数据库关系,并且可以将这个方案定义转换为MySQL,PostgreSQL和SQLite的显式格式。 格式可能与您在activerecord中的定义类似,所以如果全部失败,我会以某种方式使用AR,如果我可以管理它。但也许有一个更好的解决方案来解决这个问题。
到目前为止,主要问题是自动增量字段。我不会在我的数据库方案中做任何过于复杂的事情。
答案 0 :(得分:1)
DBA有时会有一个数据建模工具,可以记录数据库模型,并且可以使用不同的数据库引擎语法创建(和维护)数据库脚本。
一个这样的(较便宜的)例子是toad modeler。更昂贵的工具可以花费数千美元 - ERWin浮现在脑海中。
但你似乎在寻找更简单的方法。而且我认为你已经有了答案--ActiveRecord会做得很好(并且在你的时候给你进行迁移)。 Django的模型是另一种可能性。
编辑:
我不是一个活跃记录的人...但是在Django中你会做./manage.py sqlall <appname>
- 这会溢出所有的创建语句,包括索引。
在您的情况下,<appname>
可能是您需要的唯一应用。您将触及的唯一两个文件是settings.py
(用于定义数据库配置)和<appname>/models.py
(用于定义数据库模型)。
Django tutorial将是一个很好的起点;特别强调creating models。
希望有所帮助。
编辑2:
嗯......你提到的“免费”让我觉得“......就像啤酒一样”,我用Google搜索“开源数据建模”。发现这个:
http://www.sqlpower.ca/page/architect
除了声称为PostgreSQL和MySQL做前进/后退工程师之外,我对此一无所知。
我认为值得一看 - 比试图学习Django的ORM层要好得多。特别是如果它确实是免费的。 (实际上,我将自己检查一下)。
答案 1 :(得分:1)
SQL::Translator是一个很棒的工具。您可能必须编写一些前端代码来理解您想要的任何类型的源文件格式并将其转换为Schema对象(或者至少是一个YAML表示)但是一旦完成,sqlt就可以完成其余的工作。 / p>
答案 2 :(得分:0)
一般信息:我现在选择使用的方法是使用Ruby Library Datamapper,我发现它比大多数其他解决方案更容易设置。