Ver Mensaje Individual
  #7 (permalink)  
Antiguo 26/02/2016, 15:27
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Trigger para descontar stock, MSQL

Cita:
-articulo-
id_producto PK
marca
modelo
nombre
stock
no_requisicion <-este campo es para saber que cantidad se compro de dicho producto-
El campo que llamas "no_requisicion" no pertenece a esta entidad. Debería pertenecer a una entidad diferente que represente las compras a los proveedores, y solo tendría impacto SUMANDO STOCK. Por su lado, el stock preexistente se establece como la suma del actual más las ventas realizadas.
Es decir, ese valor se obtiene ñor consulta. No se deben usar campos calculables para almacenar datos.

Cita:
-pedidos-
id_pedido PK
area
empleado
estado
fecha_entrada
fecha_salida
stock <-----
producto estos campos los agrege para saber que es lo que pide y cuanto
marca ------>
Incorrecto. Totalmente.
El "stock" no es tal sino la cantidad de unidades en un mismo pedido de un mismo producto, y eso es un dato que pertenece al DETALLE_PEDIDO, donde se listan todos los items de un mismo pedido.

Por su lado, la MARCA, no debe ir en el pedido, y no debe ir en ninguna de las tablas del pedido. La "marca" es un atributo propio del PRODUCTO, y debe haber una entrada de producto por cada marca, modelo y presentación (volumen, peso, etc.).
La relación entre el pedido y el producto y su marca es transitiva, a traves del id_producto que aparece en el item del detalle.
Cita:
-detalle-
id_detalle
nro_item <-no se que función tiene, me explicarías
id_producto
cantidad
Que no entiendas eso resulta bastante extraño...

¿Nunca has comprado algo en un supermercado, o varios artículos en algún comercio?
¿Viste que la factura tiene de 1 a N items, cada uno de los cuales es un producto que compras?
Bueno, en numero de ítem es eso: Cada uno de los items que entraron en la lista, numerados del 1 a N, siendo N el máximo numero posible de items facturados en una sola compra...
En el caso de las tablas de detalle, la PK está formada por el numero de su entidad padre (Pedido en este caso), y el numero del ítem.
¿Se entiende?

En este contexto, cuando haces un ingreso de pedido entrgado, el TRIGGER (que debe estar en la tabla DETALLE_PEDIDO) realiza la correspondiente resta de stock en la tabla Producto.
Seria un trigger terriblemente simple, aunque en el mundo real NO SE USAN para estos fines. Las restas de stock se validan de otra forma...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)