Cita:
Iniciado por contactoenlacevisual
hola les cuento he hecho un aplicacion de tienda online, pasa que la duda es que sera recomendable que en la tabla pedido este registrado el nombre del producto y los datos como nombre, apellido, direccion del cliente en vez del id de producto y el id cliente.
esto por que lo estaba pensando, si el dueño de la tienda elimina el producto o el cliente no se va a mostrar el pedido ya que si hago un cruze no va encontrar el registros.
yo se que es redundancia de información pero desde ese punto de vista sera recomendable.
saludos
Primera regla fundamental del diseño de sistemas comerciales: Los productos JAMAS se borran. NUNCA. Tampoco se hace con los CLIENTES.
Los productos
se dan de baja del listado de ventas disponible, pero NO se eliminan del sistema, precisamente para evitar problemas de consistencia y permitir la trazabilidad histórica.
Eso se hace de una forma tan simple como poner dos campos adicionales. 1) Fecha de baja, y 2) usuario que realizó la baja.
Respecto a los datos de clientes o productos, un sistema de ventas, sin importar que sea en Web o con comercios físicos (atención al publico), SIEMPRE almacena la información de una forma normalizada. Esto implica que JAMÁS se duplican datos, NUNCA se plantean procesos que no sean trazables en el tiempo, y NO se deben generar redundancias nocivas.
Las tablas que se relacionan a las ventas en si, pueden ser, por ejemplo:
- Producto: Contiene solo los datos propios del producto. Puede dividirse en mas si el caso requiere.
- Stock_Producto: Refleja el estado de los productos en almacén.
- Compras_producto: Refleja el movimiento de ingreso de los productos en almacén.
- Movimiento_producto: De existir permite reflejar las entradas, salidas y devoluciones de las operaciones canceladas.
- Pedido: Sólo la cabecera del pedido. Datos generales.
- Detalle_pedido: Detalle de cada pedido, item por item.
- Cliente: Solo datos propios del cliente, incluyendo los impositivos.
- Factura: Encabezado de la factura.
- Detalle_factura: Lista de items a cobrar. Puede corresponder a más de un pedido.
- Pago: Relaciona la Factura, el medio de pago y la emisión del pago. No puede estar integrada a la factura.
- Medios_Pago Medios de pago habilitados. El sistema no es funcional a menos que especifiques los medios de pago que se pueden usar, los que pueden variar en el tiempo.
- Movimiento_diario: Log de las operaciones en débito, crédito y caja de lo que se hace.
Esto es solo para comenzar... Claro, si quieres hacer algo que FUNCIONE en el mundo REAL.
En esencia, las tablas deben tener un diseño tal que con la consulta adecuada puedas contar con los datos necesarios. Los DBMS se optimizaron precisamente para trabajar con consultas de JOIN, las que permiten obtener con gran eficiencia y precisión los datos buscados, siempre y cuando estén correctamente escritas.