He estado aplicando reglas comerciales tanto en mi nivel de aplicación (modelos) como en mi nivel de base de datos (procedimientos almacenados que generan errores).¿Se deben aplicar las reglas comerciales tanto en el nivel de aplicación como en el de la base de datos, o solo en una de las dos?
he estado duplicando mis validaciones en ambos lugares por varias razones:
- Si las condiciones cambian entre cuando se comprueban en el código aplicación y cuando están comprobado en la base de datos, las comprobaciones de reglas comerciales en la base de datos guardarán el día. La base de datos también me permite bloquear varios registros de una manera más simple que en mi código de aplicación, por lo que parece natural hacerlo aquí.
- Si tenemos hacer algunos datos del lote inserciones/actualizaciones de la base de datos directamente, si la ruta I todas estas operaciones a través de mis los procedimientos/funciones que están haciendo la regla de negocio validaciones, no hay ninguna posibilidad de que me poniendo datos erróneos a pesar de que carezco de las protecciones que obtendría si estuviera haciendo una sola entrada a través de la aplicación.
- Mientras hacer cumplir estas cosas sólo en la base de datos de tendría el mismo efecto en los datos reales, parece inadecuada a tiro de datos en la base de datos antes de hacer primero una buena esfuerzo para validar que se ajusta a restricciones y reglas comerciales.
¿Cuál es el equilibrio correcto?
¿Cuál es la diferencia entre la aplicación de la lógica empresarial y la aplicación de la integridad de los datos? Supongamos que tengo una regla de negocios que dice que como máximo 3 personas pueden ser asignadas a un supervisor. Cuando voy a insertar la persona n. ° 4, ¿está fallando porque es un error de integridad de datos tener> 3 personas por supervisor, o es una infracción de las reglas comerciales? Sin bloquear el registro del supervisor antes de la verificación de que hay como máximo 2 personas bajo un supervisor al hacer una inserción, ¿cómo puede el código de la aplicación estar 100% seguro de que esta regla no se romperá? –
@Rednerln - tasa de cambio. Es probable que las reglas de integridad de la base de datos sean verdaderas durante mucho más tiempo que las reglas comerciales. Su ejemplo de personas para un supervisor, me sería difícil justificar la creación de una restricción de la base de datos; si lo hiciera, tendría que basarse en datos (udf en función de una configuración). Y si la regla cambia, uno debe preguntarse qué hacer con los datos que violan ese principio. Normalmente desea reglas de base de datos que solo se relajan, no se ajustan o cambian cualitativamente. –
@Rednerln: en situaciones multimodales, desea que las personas puedan acceder a su capa de acceso a BD (vistas, quizás) con sus herramientas de BI o lo que sea y saber que sus suposiciones son válidas, que la base de datos tiene cohesión e integridad en su perímetro. –