Pregunta

¿Existe alguna herramienta rápida de creación de prototipos de bases de datos que no requiera que declare un esquema de base de datos, sino que lo cree en función de la forma en que uso mis entidades?

Por ejemplo, suponiendo una base de datos vacía (pseudocó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

Dado que se pueden hacer suposiciones lógicas al crear dinámicamente el esquema, siempre puede anular sus opciones utilizando sus herramientas de base de datos para modificarlo más adelante.

Además, puede generar su esquema probándolo unitariamente de esta manera.

Y obviamente esto es sólo para la creación de prototipos.

¿Hay algo como esto por ahí?

¿Fue útil?

Solución

Motor de aplicaciones de Google funciona así.Cuando descarga el kit de herramientas, obtiene una copia local del motor de base de datos para realizar pruebas.

Otros consejos

Grails usa Hibernate para conservar objetos de dominio y produce un comportamiento similar al que usted describe.Para alterar el esquema simplemente modifica el dominio, en este caso simple el archivo se llama 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"}

}

Guardar el archivo altera el esquema automáticamente.Asimismo, si está utilizando andamios, se actualiza.El proceso del prototipo consiste en ejecutar la aplicación, ver la página en su navegador, modificar el dominio, actualizar el navegador y ver los cambios.

Estoy de acuerdo con el enfoque NHibernate y la generación automática de bases de datos.Pero, si desea evitar escribir un archivo de configuración y permanecer cerca del código, use Castle's Registro activo.Declaras el 'esquema' directamente en la clase con atributos via.

[ActiveRecord]
public class User : ActiveRecordBase<User>
{
     [PrimaryKey]
     public Int32 UserId { get; set; }

     [Property]
     public String FirstName { get; set; }
}

Hay una variedad de restricciones que puede aplicar (validación, límites, etc.) y puede declarar relaciones entre diferentes clases de modelos de datos.La mayoría de estas opciones son parámetros agregados a los atributos.Es bastante simple.

Entonces, estás trabajando con código.Declarar el uso en el código.Y cuando hayas terminado, deja que ActiveRecord crear la base de datos.

ActiveRecordStarter.Initialize();
ActiveRecordStarter.CreateSchema();

Puede que no esté respondiendo exactamente a su general pregunta, pero si usaste (N)Hibernar luego podrá generar automáticamente el esquema de la base de datos a partir de sus archivos de mapeo hbm.

No se hace directamente desde su código como parece querer, pero la generación del esquema de Hibernación parece funcionar bien para nosotros.

¿Quiere el esquema, pero lo ha generado, o realmente quiere SIN esquema?

Para el primero, elegiría nhibernate como dijo @ tom-carter.Haga que genere su esquema por usted y estará todo bien (al menos hasta que implemente su aplicación, luego mire algo como Tarantino y RedGate SQL Diff o como se llame para generar scripts de actualización)

Si quieres esto último....El motor de aplicaciones de Google hace esto, como descubrí esta tarde, y es muy bueno.Si desea seguir con el código bajo su control, le sugiero que consulte CouchDB, aunque es un poco de trabajo inicial configurarlo.Pero una vez que la tienes, es una base de datos totalmente libre de esquemas.Bueno, tienes un ID y una versión, pero eso es todo, el resto depende de ti. http://incubator.apache.org/couchdb/

Pero por lo que parece, (N)hibernate sería lo mejor, pero podría estar equivocado.

Podrías usar una base de datos de objetos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top