Depende.
Depende de lo que llame lógica de negocios.
Ciertas cosas deben ser aplicadas en la base de datos, particularmente cualquier cosa donde algún otro proceso tenga suposiciones sobre la naturaleza de lo que presenta la base de datos.
Si todos los usuarios de la base de datos suponen que cuando se desactiva el último descendiente de una parte de facturación, el estado de la parte de facturación debe modificarse, entonces esto debe aplicarse en la base de datos, ya sea en un SP que es el único forma de realizar la operación o un disparador, o una restricción o algo. Este es el tipo de cosas, lógica de negocios de bajo nivel que es realmente lógica de integridad de datos crítica a nivel de negocios, lo cual está bien tener en la base de datos. La lógica de negocios de alto nivel no cabe en la base de datos; por ejemplo, cuando un paciente cancela su última cita y necesita pasar a una lista de retirada, no es un problema de integridad de datos; todos los que llaman no asumen que los pacientes sin citas deben estar en la lista de retiro.
La distinción es sutil y es por eso que las personas tienen dificultades con la lógica de "negocios" en la base de datos. Recomiendo solo cosas que se supone que la base de datos protege y presenta en el perímetro de la base de datos a todos los usuarios de la base de datos implementada en la base de datos; esta lógica empresarial está por debajo de la capa DAL y forma parte del diseño fundamental de la base de datos. Todavía defiendo en las arquitecturas tradicionales un DAL ciego a los negocios por encima de eso y un verdadero BLL por encima de eso.
Habiendo dicho eso, ciertamente es posible cuando el DAL es un bombeo de SP muy trivial tener su lógica de negocios de nivel superior también en la base de datos, y cuando lo hace, no está tan claro qué cosas son de bajo nivel y que son de alto nivel (a menos que tenga dos bases de datos, una construida sobre la otra, lo cual no es necesariamente una idea terrible). De hecho, ha escrito una parte de su lógica empresarial en SQL en lugar de una aplicación de cliente tradicional.
Eso no significa necesariamente que sus capas estén demasiado unidas o que tenga una mala arquitectura: al igual que cualquier sistema, la elección del idioma para las diferentes capas no necesariamente apunta a un problema arquitectónico. Solo mirando las capas puede decir si tiene un problema arquitectónico.
¿Podría dar algún ejemplo del tipo de lógica que se delega en MSSQL? –
Los marcos OR/M pueden manejar esas capas entre los procedimientos almacenados, por lo que si los está usando, puede encontrar más lógica comercial en los procedimientos almacenados y las capas intermedias son más limpias. – Russell
¿Está familiarizado con [MVC] (http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller)? –