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
StonetworkingProcedures
Views
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
SpecificReport
SpecificApplication
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:
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.