Donde validar (Capa de datos - Reglas de negocio)

25/09/2004 - 19:53 por El principiante | Informe spam
Como ya he dicho estoy aprendiendo SQL Server (usando Visual Foxpro como
interfaz) especificamente para el desarrollo de un sistema nuevo para
entorno Windows. Hice hace poco una pregunta relacionada pero aquella era
menos especifica.

Resulta que siguiendo normas leidas en los BOL's estoy tratando de indicar
la mayor cantidad de validaciones en la propia base de datos, como
restricciones por ejemplo. Es decir las reglas del negocio en la propia
base de datos.

Como es normal al registrar datos en un form, las validaciones se verifican
al momento de salvar los datos a sql server. El asunto es que en una
determinada pantalla de registro que contiene muchos campos divididos en
varios bloques (pageframes) el cliente me dice que prefiere que al usuario
se le vaya informando sobre datos incorrectos a medida que vaya avanzando de
campo a campo(porque como dije son muchos) y no esperar a que le de a Salvar
pues asi es mas lento el proceso. Ademas aunque no fuese asi, cuando el
insert produce un error de validacion se requiere que en la aplicacion se
posicione en el campo correspondiente a la primera columna con un valor
erroneo.

El asunto es que veo que eso implicaria incluir las mismas validaciones que
ya tengo definidas en la base de datos (sea en restricciones o store
procedures) tendria que repetirlas a nivel de la capa de la interfaz, lo
cual como que no me parece adecuado pues seria como duplicacion de codigo y
no estarian separadas las capas.

Lo que quiero es:
Hay alguna forma de indicar restricciones para una columna especifica de
una tabla de SQL Server de modo que yo pueda detectar desde una aplicacion
cual columna fue que produjo el error y poder posicionarme en la aplicacion
en esta columna ?
De haberlo, hay forma de yo extraer el codigo de validacion desde el
servidor para poder utilizarlo directamente en la aplicacion en la copia
local de datos en edicion, sin tener que repetir esta logica a nivel de la
interfaz ?

Aunque me resultaria mas sencillo que me contaran sus experiencias de como
se suelen manejar estas cosas pues me tienen un poco confundido. Lo que
necesito es alguna idea practica.

Muchas gracias por su valiosa ayuda
 

Leer las respuestas

#1 MAXI
26/09/2004 - 04:45 | Informe spam
Hola, bueno es un tema muy discutible por lo cual mi opinion puede diferir
mucho del resto.

Yo veo muy bien hacer la doble validacion, uno de los grandes motivos es que
estoy validando antes de conectarme al motor, con lo cual estoy trabajando
bien desconectado!!! yo para ello estuve estudiando y no he encontrado mejor
opcion que usar en la capa de negocios un Dataset con Tipo!! esto te
permitira hacer validaciones en la capa sin necesidad de conectarte a la
BDD.

Eso si, es escribir mas, pero no lo veo del todo mal como expresas tu :-)




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"El principiante" escribió en el mensaje
news:
Como ya he dicho estoy aprendiendo SQL Server (usando Visual Foxpro como
interfaz) especificamente para el desarrollo de un sistema nuevo para
entorno Windows. Hice hace poco una pregunta relacionada pero aquella era
menos especifica.

Resulta que siguiendo normas leidas en los BOL's estoy tratando de indicar
la mayor cantidad de validaciones en la propia base de datos, como
restricciones por ejemplo. Es decir las reglas del negocio en la propia
base de datos.

Como es normal al registrar datos en un form, las validaciones se
verifican
al momento de salvar los datos a sql server. El asunto es que en una
determinada pantalla de registro que contiene muchos campos divididos en
varios bloques (pageframes) el cliente me dice que prefiere que al usuario
se le vaya informando sobre datos incorrectos a medida que vaya avanzando
de
campo a campo(porque como dije son muchos) y no esperar a que le de a
Salvar
pues asi es mas lento el proceso. Ademas aunque no fuese asi, cuando el
insert produce un error de validacion se requiere que en la aplicacion se
posicione en el campo correspondiente a la primera columna con un valor
erroneo.

El asunto es que veo que eso implicaria incluir las mismas validaciones
que
ya tengo definidas en la base de datos (sea en restricciones o store
procedures) tendria que repetirlas a nivel de la capa de la interfaz, lo
cual como que no me parece adecuado pues seria como duplicacion de codigo
y
no estarian separadas las capas.

Lo que quiero es:
Hay alguna forma de indicar restricciones para una columna especifica de
una tabla de SQL Server de modo que yo pueda detectar desde una aplicacion
cual columna fue que produjo el error y poder posicionarme en la
aplicacion
en esta columna ?
De haberlo, hay forma de yo extraer el codigo de validacion desde el
servidor para poder utilizarlo directamente en la aplicacion en la copia
local de datos en edicion, sin tener que repetir esta logica a nivel de la
interfaz ?

Aunque me resultaria mas sencillo que me contaran sus experiencias de como
se suelen manejar estas cosas pues me tienen un poco confundido. Lo que
necesito es alguna idea practica.

Muchas gracias por su valiosa ayuda



Preguntas similares