是否有任何快速的数据库原型设计工具不需要我声明数据库模式,而是根据我使用我的实体的方式创建它。
例如,假设一个空数据库(伪代码):
user1 = new User() // Creates the user table with a single id column
user1.firstName = "Allain" // alters the table to have a firstName column as varchar(255)
user2 = new User() // Reuses the table
user2.firstName = "Bob"
user2.lastName = "Loblaw" // Alters the table to have a last name column
由于在动态创建架构时可以进行逻辑假设,并且您可以通过使用数据库工具稍后调整它来覆盖其选择。
此外,您可以通过单元测试来生成架构。
显然这仅适用于原型设计。
那里有这样的东西吗?
答案 0 :(得分:2)
Google's Application Engine就像这样。下载工具包时,您将获得数据库引擎的本地副本以进行测试。
答案 1 :(得分:1)
Grails使用Hibernate来持久保存域对象并产生类似于您描述的行为。要更改模式,只需修改域,在这种简单的情况下,文件名为User.groovy。
class User {
String userName
String firstName
String lastName
Date dateCreated
Date lastUpdated
static constraints = {
userName(blank: false, unique: true)
firstName(blank: false)
lastName(blank: false)
}
String toString() {"$lastName, $firstName"}
}
保存文件会自动更改架构。同样,如果您使用脚手架,它会更新。原型过程将运行应用程序,在浏览器中查看页面,修改域,刷新浏览器以及查看更改。
答案 2 :(得分:1)
我同意NHibernate方法和自动数据库生成。但是,如果您想避免编写配置文件并保持接近代码,请使用Castle的ActiveRecord。您可以使用via属性直接在类上声明'schema'。
[ActiveRecord]
public class User : ActiveRecordBase<User>
{
[PrimaryKey]
public Int32 UserId { get; set; }
[Property]
public String FirstName { get; set; }
}
您可以应用各种约束(验证,边界等),并且可以声明不同数据模型类之间的关系。这些选项中的大多数是添加到属性的参数。这很简单。
所以,你正在使用代码。在代码中声明用法。当你完成后,让ActiveRecord create the database。
ActiveRecordStarter.Initialize();
ActiveRecordStarter.CreateSchema();
答案 3 :(得分:0)
可能无法完全响应您的常规问题,但如果使用(N)Hibernate,则可以从hbm映射文件自动生成数据库架构。
它不是直接从您的代码中完成的,因为您似乎想要但Hibernate Schema生成似乎对我们有用
答案 4 :(得分:0)
您想要架构,但是已经生成了架构,或者您真的想要无架构吗?
对于前者,我会选择nhibernate,因为@ tom-carter说。让它为你生成你的架构,你一切都很好(至少你推出你的应用程序,然后看看像Tarantino和RedGate SQL Diff或其他所谓的生成更新脚本)
如果你想要后者......谷歌应用程序引擎这样做,正如我今天下午发现的那样,这非常好。如果你想在你的控制下坚持使用代码,我建议你看看CouchDB,这是设置它的一些前期工作。但是一旦拥有它,它就是一个完全的,100%无架构的数据库。好吧,你有一个ID和一个版本,但就是这样 - 其余的由你决定。 http://incubator.apache.org/couchdb/
但是通过它的声音(N),hibernate将是最好的,但我可能是错的。
答案 5 :(得分:0)
您可以使用对象数据库。