¿Vale la pena el dolor de cabeza para organizar los files SQL por tema de la aplicación?

En mi empresa, guardamos cada object de la database (process almacenado, vista, etc.) como un file SQL individual, y los colocamos bajo control de origen de esa manera.

Hasta ahora, hemos tenido un model de almacenamiento muy plano en nuestra estructura de files versionados:

  • DatabaseProject
    • Functions
      • (todas las funciones aquí, no anidar más)
    • StonetworkingProcedures
      • (todos los processs almacenados aquí, no anidar más)
    • Views
      • (ídem)

Para un gran proyecto nuevo, se me ocurrió otra idea: ¿por qué no almacenar estos files por tema en lugar de en estas lists planas prefabricadas?

Por ejemplo:

  • DatabaseProject
    • Reports
      • (procs almacenados individuales, vistas, etc.)
      • SpecificReport
        • (más objects aquí, anidación adicional según sea necesario)
    • SpecificApplication
      • (todos los types de objects DB, con anidamiento arbitrariamente profundo)
    • etcétera….

La falla obvia es que esta estructura de carpetas no impone ningún tipo de jerarquía de espacio de nombres en los objects de la database; es solo para organización Por lo tanto, sería muy fácil introducir objects con nombres duplicates . Necesitarías algún tipo de herramienta de compilation para encuestar el proyecto de la database y morir en conflictos de nombres.

Lo que me gustaría saber es: ¿alguien ha intentado este método de organizar files SQL por tema de la aplicación en su estructura de files versionada? ¿Valió la pena? ¿Creó una herramienta de compilation que controlaría el proyecto como lo describí?

Me gusta tener mis scripts SQL organizados por temas, en lugar de por nombre. Como regla, incluso agrupo elementos relacionados en files individuales. Las principales ventajas de esto son:

  • No confunde su sistema de files / IDE con files (muchos de ellos tienen algunas líneas).
  • La estructura general de la database muestra más directamente.

Por otro lado, puede ser más difícil encontrar el código fuente relacionado con un object específico …

En cuanto a los nombres duplicates: nunca puede suceder, porque obviamente tiene scripts automatizados para build su database . Confiar en su sistema de files para esto es search problemas …

Como conclusión, diría que sus reglas actuales son mucho mejores que ninguna regla en absoluto.

Debe definir un esquema de nombres para los objects de su database, para que quede claro dónde se está utilizando una vista o SP.

Esto puede ser prefijos para describir los modules de la aplicación o nombres de esquema separados para modules / funcionalidad.

No es necesario anidar, y los nombres en el VCS aparecen de la misma manera que en la database, y se orderan correctamente según el esquema de nombres.

Guardamos nuestros files SQL en una carpeta de solución "SQL" con cada proyecto. De esta forma, cada proyecto se "instala" por separado.

Intereting Posts