SQL - usar triggers o hacer calculos en la aplicacion

   
Vista:

usar triggers o hacer calculos en la aplicacion

Publicado por apis (8 intervenciones) el 14/03/2008 17:41:53
Hi! queria saber que seria mejor utilizar para hacer esto:
Es la tabla de ventas y detalle de ventas y quiero saber cual es la forma mas eficiente de calcular el subtotal de la venta. Sera una aplcacion con vb .net y sql server express.

OPCION1
Se me ocurrio con triggers en el detalle de ventas, en el after insert que cada vez que inserto un articulo en el detalle de ventas agregar el precio de ese articulo en el subtotal de la venta y otro diferente para el update donde primero reste el precio que tenia antes y luego sume el nuevo precio para cada articulo que modfique, en el delete que reste solo el precio del articulo que estoy borrando

OPCION2
Luego se me ocurrio que cada vez que se haga un insert, update o delete que hiciera un sum de todos los articulos del detalle y luego lo guarde en el total de la venta asi siempre tendria un valor correcto.

OPCION3
Luego pense que talvez esa lógica la deberia poner en mi aplicacion y no en la base de datos ya que pues son calculos y segun yo creo que un programa hace mas rapido los calculos de sumas y restas y sql server es mas eficiente para mostrar y almacenar datos que para hacer calculos.

Ahora mi duda es cual de las ideas seria la mejor en cuanto a rapidez y eficiencia o para evitar cosas inecesarias. O hay alguna manera que sea mejor para hacer lo que quiero.

Por cuestiones de portabilidad pues no debe de haber problemas ya que sera siempre sql server express, no se tiene pensado que funcione con diferentes base de datos como mysql postgresql.

Solo quiero saber que seria lo mejor, hasta ahorita creo que lo mejor seria la opcion 2 ya que pues de todas formas necesitaria el trigger para que descuente del inventario y poner eso en la aplicacion se me hace poner mas updates y conexiones a la base de datos.

Gracias por leer el mensaje y agradecere sus respuestas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:usar triggers o hacer calculos en la aplicacion

Publicado por Hernan* (104 intervenciones) el 25/03/2008 01:47:52
Hola, no entiendo muy bien tus opciones, pero te doy mi opinion.
Manejar el stock con triggers es algo muy comun y no esta mal. Poner la logica esa en la aplicacion tambien se puede hacer, pero en ese caso tendrias que tener en cuenta lo siguiente.
1.) Realizar los calulos en memoria e ir la menor cantidad de veces a la base de datos.
2.) Tratar todo el bloque como una transaccion (.net permite usar transacciones).
3.) Si tienes alguna logica como "stock minimo" y en el futuro la quieres modificar tendras que recompilar la aplicacion nuevamente, si esta en el trigger el cambio es mas transparente.
4.) Analiza la eficacia en cada caso, por ejemplo utiliza el monitor de SQL para ver que pasa con el servidor cuando disparas muchas acciones que desencadenan triggers, ten en cuenta eso porque si es un sistema de cajas de supermercado con mucha actividad, puedes insumir todos los recursos del server. (Los supermercados utilizan SQL sobre Mainframes por lo general).

Espero te sirva.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar