|
Hola,
Sobre tus consultas:
- Eliminar registros de las bases de datos, tiene dos implicancias negativas: 1. pierdes el historial de las actividades que realizan los usuarios, con lo que en un momento determinado no sabrías qué pasó si ocurre algún error. 2. Generalmente y lo que es correcto, los diseñadores de bases de datos utilizan integridad referencial para asegurar la integridad de los datos en la base de datos. Por este motivo el motor no te permite eliminar registros que son referenciados en otras tablas, sin eliminar primeramente estas referencias. Por ejemplo, supongamos que tenemos las tablas pais y ciudad (en esta tabla existe una referencia al país). Entonces, no puedo eliminar un país si existe alguna ciudad que tenga esta referencia. Imagina si lo pudiera hacer, cuando haga una cosulta para saber cual es el pais de una ciudad, y si elimine el registro del pais, el motor ni siquiera me mostrará la cuidad si hago la consulta con INNER JOIN; si hago la consulta con LEFT OUTER JOIN o FULL JOIN, entonces si me mostrará la ciudad y el campo pais en blanco. Bueno, sea cual sea la situación, ninguna opción cumple con el objetivo de mostrar el pais. En tu caso en particular, si quieres sacar un historial de productos vendidos y si has eliminado registros de productos, si haces la consulta con INNER, no te traerá todos los registros; si haces la consulta con LEFT OUTER, te traerá los registros, pero no sabrás cual es el producto... Espero haber sido claro.
- Sabes... sobre el stock mínimo y máximo, podrías trabajar en ello, para hacer tu sistemita más interesante. Por ejemplo, podrías determinar el stock mínimo y máximo automáticamente, sin que el usuario lo tenga que ingresar. Todo esto, de debe determinar a partir del historial de ventas. Por ejemplo, sacas un cálculo de máximo mensual vendido de cada producto y el mínimo vendido de cada producto. Ambos datos, los puedes sacar mensualmente y al final, puedes calcular de acuerdo a la época del año, cuanto tienes que ir comprando mensualmente. Adicionalmente, y para efectos de cálculos de finanzas, debes determinar el precio promedio de cada artículo que estas vendiendo. El precio promedio indica cual es el precio compra del producto que estas vendiendo, dado que si compras 10 de producto X en Enero (a $ 100) tiene un precio distinto de comprar 10 de producto X en Septiembre (a $ 90). Y cuando no sabes cual estas vendiendo, si es el de Enero o Septiembre, tienes que calcular el precio promedio para saber tu ganancia real. No sé si me expliqué bien, pero si quieres averiguar bien sobre esto, pregúntale a alguien que maneje esos datos.
- Exactamente, cuando indicas en_stock = 1 dices que quedan productos.
- Si quieres saber cuales estan en stock, agotados o descontinuados, utilizas la misma consulta, agrupando por el estado. Por ejemplo, SELECT Producto.Nombre, SUM(Producto.Cantidad), Producto.En_Stock FROM Producto GROUP BY Producto.Nombre, Producto.En_Stock. Esta consulta traerá todos los productos y los estados en que se encuentran (stock, agotados y descontinuados).
- Tu forma en que diseñaste el programa esta bien, por varios motivos. 1. Cuando tienes una tiendita tal vez, funcione un poco tedioso, pero si tu tiendita va creciendo, la persona que ingresa los productos y stocks mínimos y máximos, no será necesariamente la persona que compra. Mucho menos la persona que vende. Lo interesante de hacerlo así es que agrupas funciones de la aplicación de acuerdo a una lógica. De no ser así tendrías que tener todas las funciones en una sola pantalla... esto es imposible.
Espero haber sido de ayuda.
Suerte.
|