Existe alguma ferramenta rápida de prototipagem de banco de dados que não exija que eu declare um esquema de banco de dados, mas crie-o com base na maneira como estou usando minhas entidades.
Por exemplo, assumindo um banco de dados vazio (pseudo-código):
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
Como existem suposições lógicas que podem ser feitas ao criar o esquema dinamicamente, você sempre pode substituir suas opções usando suas ferramentas de banco de dados para ajustá-lo posteriormente.
Além disso, você pode gerar seu esquema testando-o dessa maneira.
E, obviamente, isso é apenas para prototipagem.
Existe algo assim lá fora?
Respostas:
2 para resposta № 1Mecanismo de aplicativo do Google funciona assim. Ao baixar o kit de ferramentas, você obtém uma cópia local do mecanismo de banco de dados para teste.
1 para resposta № 2
O Grails usa o Hibernate para persistir objetos de domínio e produz um comportamento semelhante ao que você descreve. Para alterar o esquema, você simplesmente modifica o domínio; nesse caso simples, o arquivo é denominado 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"}
}
Salvar o arquivo altera o esquema automaticamente. Da mesma forma, se você estiver usando andaimes, ele será atualizado. O processo de protótipo passa a executar o aplicativo, exibe a página no seu navegador, modifica o domínio, atualiza o navegador e vê as alterações.
1 para resposta № 3
Concordo com a abordagem do NHibernate e com a geração automática de banco de dados. Mas, se você quiser evitar escrever um arquivo de configuração e permanecer próximo ao código, use Castle "s ActiveRecord. Você declara o "esquema" diretamente na classe com os atributos via.
[ActiveRecord]
public class User : ActiveRecordBase<User>
{
[PrimaryKey]
public Int32 UserId { get; set; }
[Property]
public String FirstName { get; set; }
}
Há uma variedade de restrições que você pode aplicar(validação, limites etc.) e você pode declarar relacionamentos entre diferentes classes de modelo de dados. A maioria dessas opções são parâmetros adicionados aos atributos. É bem simples.
Então, você está trabalhando com código. Declarando o uso no código. E quando terminar, deixe o ActiveRecord crie o banco de dados.
ActiveRecordStarter.Initialize();
ActiveRecordStarter.CreateSchema();
0 para a resposta № 4
Pode não estar exatamente respondendo ao seu geral pergunta, mas se você usou (N) hibernação então você pode gerar automaticamente o esquema do banco de dados a partir dos arquivos de mapeamento hbm.
Não é feito diretamente do seu código, como você parece querer, mas a geração do Hibernate Schema parece funcionar bem para nós
0 para a resposta № 5
Você deseja o esquema, mas ele foi gerado, ou você realmente deseja SEM esquema?
Para o primeiro, eu iria com nhibernate como@ disse Tom-Carter. Faça com que ele gere seu esquema para você e você esteja bem (pelo menos até você lançar seu aplicativo, veja algo como Tarantino e RedGate SQL Diff ou o que é chamado para gerar scripts de atualização)
Se você quer o último .... O Google App Engine faz isso, como descobri esta tarde, e é muito bom. Se você deseja manter o código sob seu controle, sugiro olhar para o CouchDB, embora seja um pouco de trabalho inicial para configurá-lo. Mas uma vez que você o possui, é um banco de dados totalmente livre de esquemas, 100%. Bem, você tem um ID e uma Versão, mas é isso - o resto é com você. http://incubator.apache.org/couchdb/
Mas pelo que parece (N) o hibernate seria o melhor, mas eu poderia estar errado.
0 para a resposta № 6
Você pode usar um banco de dados de objetos.