Reglas de empresa sobre capa de Datos.

17/08/2005 - 08:55 por Marcelo Clavero | Informe spam
Estimados Todos:

Estoy haciendo una aplicación con alrededor de unas 300 tablas y transito la
etapa de escribir las reglas de empresa.
Antes casi todo lo hacía desde la capa de aplicación (salvo relaciones y
desencadenadores simples), pero esta vez, opté por darle más lógica a la
capa de datos, y asegurar la integridad desde los cimientos, dejando que el
ASP.NET solo mande ejecutar SP's y se encargue de embellecer la interfase
del usuario. Espero haber optado bien, ya que el tiempo apremia, y domino
muy poco el T-SQL. (el simple hecho de pensar en grupos de datos y no en
cursores, ya me da su trabajillo).-

Bueno, para escribir las reglas, uso UDFs colocadas en restricciones (tal
como me aconsejaron aquí en el grupo), lo cual me ayudó a resolver varias
situaciones ya. Pero me topé con un aspecto inesperado. Al intentar
modificar UDFs cuando ya están referidas desde alguna restriccion Check de
alguna (o varias) tablas, el SQL manda error de que no se puede hacer el
ALTER FUNCTION.

Entonces, cada vez que necesito cambiar o agregar código (así sea una línea
de comentario) de una UDF ya referida, voy torpemente a cada tabla que la
refiere, borro la restricción, vuelvo a la UDF, hago la modificación y luego
vuelvo a cada tabla y re-escribo la llamada a la UDF (que con suerte no se
ha ido del portapapeles). (uffff). - jajaja...que torpeza la mía !!!.
¿ Se puede evitar hacer toooodo eso ?

Y para terminar (espero no abusar de vuestra amabilidad), pregunto: ¿ voy
bien usando UDFs en las restricciones o mejor usar triggers ?? o depende el
caso ? No capto aun la diferencia si bien vislumbro gran potencia en ambas
herramientas.

Gracias desde ya.
Mis respetos,
Marcelo
 

Leer las respuestas

#1 Carlos Sacristán
17/08/2005 - 09:10 | Informe spam
Pues yo no lo haría ni con triggers ni con restricciones a la tabla,
sino que toda esa lógica la metería dentro del procedimiento almacenado y
que todo acceso a las tablas (lectura y modificaciones) se hiciera a través
de ellos (dando permisos de ejecución únicamente a los susodichos
procedimientos).

Personalmente creo que meter la lógica (bueno, todo depende, porque
validar rango de valores es mejor hacerlo por ejemplo en un CHECK) en
triggers lo que hace es ofuscar un poco todo y complicarte la vida...


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Marcelo Clavero" escribió en el mensaje
news:
Estimados Todos:

Estoy haciendo una aplicación con alrededor de unas 300 tablas y transito


la
etapa de escribir las reglas de empresa.
Antes casi todo lo hacía desde la capa de aplicación (salvo relaciones y
desencadenadores simples), pero esta vez, opté por darle más lógica a la
capa de datos, y asegurar la integridad desde los cimientos, dejando que


el
ASP.NET solo mande ejecutar SP's y se encargue de embellecer la interfase
del usuario. Espero haber optado bien, ya que el tiempo apremia, y domino
muy poco el T-SQL. (el simple hecho de pensar en grupos de datos y no en
cursores, ya me da su trabajillo).-

Bueno, para escribir las reglas, uso UDFs colocadas en restricciones (tal
como me aconsejaron aquí en el grupo), lo cual me ayudó a resolver varias
situaciones ya. Pero me topé con un aspecto inesperado. Al intentar
modificar UDFs cuando ya están referidas desde alguna restriccion Check de
alguna (o varias) tablas, el SQL manda error de que no se puede hacer el
ALTER FUNCTION.

Entonces, cada vez que necesito cambiar o agregar código (así sea una


línea
de comentario) de una UDF ya referida, voy torpemente a cada tabla que la
refiere, borro la restricción, vuelvo a la UDF, hago la modificación y


luego
vuelvo a cada tabla y re-escribo la llamada a la UDF (que con suerte no se
ha ido del portapapeles). (uffff). - jajaja...que torpeza la mía !!!.
¿ Se puede evitar hacer toooodo eso ?

Y para terminar (espero no abusar de vuestra amabilidad), pregunto: ¿ voy
bien usando UDFs en las restricciones o mejor usar triggers ?? o depende


el
caso ? No capto aun la diferencia si bien vislumbro gran potencia en ambas
herramientas.

Gracias desde ya.
Mis respetos,
Marcelo


Preguntas similares