Recién comencé en un nuevo trabajo como desarrollador de bases de datos para una empresa mediana y pequeña basada en la tecnología de Microsoft. Al principio noté cuántas prácticas se desvían de lo que me han enseñado en la escuela con respecto a las mejores prácticas, patrones de diseño, pruebas y gestión de proyectos.
¡Lo que más me molesta es cómo nuestro desarrollador principal de bases de datos (en adelante llamado "John") mantiene el esquema del modelo en la base de datos! Hacemos esto al tener 3 mesas "mágicas"; uno para esquemas de bases de datos, uno para tablas y otro para columnas.
Insertar un registro en la tabla " Tablas " genera (a través de un desencadenador de base de datos), la tabla real correspondiente. Insertar una fila en la tabla " Filas " actualiza la tabla referenciada con esa fila. A su vez, estos son leídos por su programa casero C # para generar modelos C #, que son utilizados por los desarrolladores frontend para controladores y externos.
Aparte de esto, la mayor parte del desarrollo se realiza de acuerdo con el marco ASP.NET MVC .
Veo un par de fallas con este enfoque:
- Lo necesitamos para mantener el ORM, y rara vez tiene tiempo para hacerlo (¡la seguridad laboral es buena!)
- Los disparadores The para las tablas "Tablas" y "Filas" tienen fallas. No admiten actualizaciones de tablas, ni restricciones de comprobación ni funciones más "avanzadas". Si bien seguramente podríamos mejorarlos, todavía no estoy seguro de si este es el camino a seguir.
- Mantener la lógica programática en la base de datos se siente extraño y restrictivo (aunque es posible extender sus modelos a través de C #).
- Su generador de modelos C # debe ser ejecutado manualmente por una de las 3 personas (entre las cuales soy una), y aún no es lo suficientemente maduro como para ser incluido en un proceso de construcción automatizado.
Varias personas han sugerido la introducción gradual de un producto probado y verdadero como Entity Framework , pero él lo rechaza y afirma que mantener la lógica empresarial en la capa de código solo es adecuado para aplicaciones de pequeña escala y proyectos de arranque para nuevas empresas.
Esta publicación está conduciendo a algo que podría parecer una discusión obvia, pero esa no es mi intención. Solo quiero algunas aclaraciones sobre nuestro enfoque arquitectónico.
¿Mantener los modelos de dominio en la base de datos puede ser una solución sostenible para una empresa en crecimiento?