El día 21 de noviembre de 2011 16:48, Alejandro Carrillo <faster...@yahoo.es> escribió: > Buenas tardes, > Que opinan de lo siguiente: > > http://kartones.net/blogs/coco/archive/2009/11/27/la-capa-de-negocio-ii-aspectos-de-implementaci-243-n.aspx > "En ocasiones la funcionalidad de borrado de datos es asociada con un solo > procedimiento almacenado que se encarga de orquestar el orden de borrado, en > estos casos, el procedimiento almacenado contiene lógica de negocio : > > CREATE PROCEDURE [dbo].[deleteCustomer] > @CustomerId int > AS > BEGIN > DELETE FROM CustomerAddresses WHERE CustomerId = @CustomerId > > DELETE FROM CustomerSalesPerson WHERE CustomerId = @CustomerId > > DELETE FROM Customers WHERE CustomerId = @CustomerId > > El procedimiento almacenado anterior muestra un ejemplo de como no deberían > hacerse las cosas, en su lugar, debemos crear 3 procedimientos almacenados, > uno por cada DELETE y orquestar la transacción de borrado en la capa de > negocio. > Los procedimientos almacenados deberían ser una herramienta para persistir > datos, no un repositorio de lógica de negocio, además los procedimientos > almacenados deberían operar solo con una única tabla, excepto aquellos en > los que sea necesario realizar un join con varias tablas." > Espero sus opiniones, a favor y/o en contra, acerca de esto, > Alejandro Carrillo >
Yo creo que en tanto pongamos la "lógica de negocios" en el motor relacional no garantiza la "consistencia semántica" de la aplicación y nos puede "atajar" algún error cometido en la programación de la interfaz. Por ejemplo si un requisito de una contabilidad es el respeto a la partida doble, o sea que los registros de cada asiento balanceen (sumen 0), no veo mal que exija que cualquier alta o modificación de asiento sea rechazada por el servidor si la condición de balance no se cumple. Es parte de un viejo criterio de "programación defensiva". -- Guillermo O. Burastero Usuario GNU/Linux #84879 - http://counter.li.org/ Bahía Blanca, Buenos Aires, Argentina Tel. +54 (291) 454-6132 - Móvil [15] 574-3173 MSN: guillermo.burast...@gmail.com ICQ: 97148268 - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda