2011-07-04 15 views
5

Me pregunto cuál es la mejor manera de crear y mantener mapas de bases de datos y scripts SQL. Sé que soy más partidario de escribir el script SQL a mano en un editor de texto (además de diseñar un mapa para tenerlo junto a mí en una hoja de papel), mientras que otros prefieren usar software de mapas de bases de datos (MySQL Workbench, Visual Studio ... algunos listados en this post) para generar automáticamente el script.¿Cómo se crean y actualizan sus scripts SQL?

Ambas soluciones tienen ventajas y desventajas. Veo estas ventajas: la escritura

  • SQL manualmente:
    1. Usted sabe exactamente lo que escribe.
    2. Puede mantener un código SQL limpio y fácil de leer.
    3. Al escribir el código, usted mantiene una mejor visión de los detalles de su base de datos.
    4. Escribir el código le permite practicar su conocimiento de SQL.
  • generan automáticamente a partir de la escritura mapa diseñado:
    1. ahorra algo de tiempo.
    2. Incluso sin conocer el lenguaje SQL, puede generar un script (incluso si lo enumeré como una ventaja contraria para el script SQL a mano).
    3. Evita errores tipográficos.

¿Qué opinas, ¿De qué manera de proceder?

Respuesta

7

Si automatizar algo ahorra tiempo y errores humanos, ¿por qué no lo haría? Me gustaría tratar de SQL de generación automática si:

  1. ya había llenado una base de datos de prueba y construido el esquema de una forma orgánica al escribir y ejecutar SQL ad hoc que no son consultas que no había seguido la pista de; y
  2. Si la base de datos era razonablemente sencilla y con una baja cantidad de normalización

Otro caso raro podría ser si has tenido una enorme lista de conjuntos de datos para el que necesita el esquema que se extrae en forma de SQL .

Las ventajas de escribir a mano son que conoce cada parte del diseño y es más capaz de imponer la integridad de los datos (por ejemplo, mediante el uso de claves externas o tipos de datos de limitación). En resumen, estoy de acuerdo con su lista de profesionales.

Para las secuencias de comandos de actualización, prefiero escribirlas a mano porque suelen ser bastante cortas y es bueno que sean más fáciles de leer para las personas que las ejecutan.

Un consejo que tendría para los scripts de actualización es asegurarse de que cada script agregue una fila que indique el número de versión de actualización en una tabla que esté exclusivamente allí para asegurar que la base de datos tenga la versión correcta.Algo así como:

INSERT INTO DB_VERSION (upgrade_time, version_from, version_to, comment) 
    VALUES ('2011-07-04T120320', '2.2.4', '2.3', 'add column x to table y.') 
+1

encanta la idea db_version – Goran

+2

El db_version (que también utilizo) tiene otra, más importante, el uso. Es necesario para garantizar una ruta de actualización simple para el db. Normalmente tengo scripts de actualización que solo ejecutan la actualización de la versión X a la versión Y y lo hago verificando la versión actual. Si necesito actualizar versiones anteriores, entonces debo ejecutar la secuencia correcta de las secuencias de comandos de actualización. – Frazz

Cuestiones relacionadas