Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Filas Dinamicas en una BD ???

Estas en el tema de Filas Dinamicas en una BD ??? en el foro de Bases de Datos General en Foros del Web. Hola amigos, quisiera su orientacion para el siguiente problema: Tengo que ingresar los datos de una factura en una base de datos. Existen los datos ...
  #1 (permalink)  
Antiguo 08/11/2005, 20:38
 
Fecha de Ingreso: agosto-2004
Ubicación: Stgo de Chile
Mensajes: 64
Antigüedad: 20 años, 3 meses
Puntos: 0
Pregunta Filas Dinamicas en una BD ???

Hola amigos, quisiera su orientacion para el siguiente problema:

Tengo que ingresar los datos de una factura en una base de datos.
Existen los datos fijos de la factura, como el nombre del cliente, la fecha, el correlativo de la factura, etc.
Además de estos datos hay otros que corresponden al item o detalle de la compra y aquí nos encontramos con datos como cantidad, descripción del producto y su valor unitario, hasta ahí todo bien, pero cuando tenemos 10, 15 o 20 productos comprados, ¿que alternativas existen para no asignar en el formulario de ingreso los 20 texbox para la compra de cada producto y más aún, en la base de datos una fila es una factura, hasta el momento con un producto, salvo que se le asigne producto 1 descripcion1 valor1, producto 2 descripción2 valor 2, producto 3 descripción 3 valor 3 ... hasta el producto 20 !!

¿Conocen alguna forma más eficiente de controlar este problema técnico, algo así como filas dinámicas en la base de datos?
  #2 (permalink)  
Antiguo 09/11/2005, 05:08
Usuario no validado
 
Fecha de Ingreso: febrero-2005
Ubicación: Barcelon
Mensajes: 351
Antigüedad: 19 años, 9 meses
Puntos: 1
Para esto existen las relaciones entre tablas, por ejemplo una factura tiene varios productos y un producto puede estar en varias facturas, en este caso hay una relación N a N entre las tablas facturas y productos, para hacer esta relación hay que crear la tabla facturas donde hay un id_factura, la tabla productos donde hay un id_producto y la tabla relacional por ejemplo facturas productos donde hay id_factura y id_producto, de esta forma relacionas estas tres tablas.
  #3 (permalink)  
Antiguo 09/11/2005, 07:59
 
Fecha de Ingreso: agosto-2004
Ubicación: Stgo de Chile
Mensajes: 64
Antigüedad: 20 años, 3 meses
Puntos: 0
disculpame, pero no me queda claro como solucionar el tema que una factura pueda tener N productos en la BD (máximo 20).
  #4 (permalink)  
Antiguo 09/11/2005, 08:09
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Creo que ninoroda quiere exponertelo de esta manera:
  • Tenes una tabla de inventario donde estan todos tus productos
  • Una tabla de factura la cual SOLAMENTE va a tener el número de factura (el cual debe ser único) el total, impuesto y total general.
  • Una tabla de detalle, la cual tendrá el detalle de los productos adquiridos por el cliente. En este caso, esta tabla DEBE tener una relación directa con la tabla de factura, tomando como relación el campo número de factura.

Conforme vayas agregando item en el detalle, vas acumulando montos los cuales se van a almacenar en la tabla de facturas. De esa forma tenes tu tabla dinámica y sin complicarte.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #5 (permalink)  
Antiguo 09/11/2005, 09:06
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 11 meses
Puntos: 11
Pues no se si te entiendo pero creo que tu problema se debe a que tienes una sola tabla... lo mejor es que hagas dos tablitas Factura Vr detalle y tal como te dice brujoNic; asi tienes un maestro detalle.

Ahora si tu problema es que por factura "solo" deseas 20 detalles pues eso lo deberas resolver a traves de programacion y no a traves de la BBDD
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #6 (permalink)  
Antiguo 10/11/2005, 09:02
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Reciví tu MP pero prefiero responder aquí para que otros puedan aportar y también para que si a alguien se le presenta un problema similar, pueda tener una guía:

A continuación voy a explicar una forma sencilla para referencia y luego agregas o quitas campos según tus necesidades. Lo que está en negro, son nombres de tablas, lo que está en rojo, son llaves primarias y lo que está en verde es llave secundaria o foránea.

FACTURA
id_factura
id_cliente
fecha
total
impueto
total_final

DETALLE
id_factura
id_producto
cantidad
precio

INVENTARIO
id_producto
descripcion
existencia
precio_compra
precio_venta

CLIENTE
id_cliente
nombre
direccion
telefono

Ok, cómo funciona esto?
Vas a tener una FACTURA con un número consecutivo UNICO en la cual va a estar relacionado con el id_cliente para sacar los datos que te interesen como el nombre, dirección, etc.

En la tabla DETALLE, vas a incluir la compra que va a realizar el cliente y es ahi donde la cantidad de productos por factura va a ser de n. Como podes ver, la llave primaria en DETALLE va estar conformada por id_factura y id_producto pero la relación entre FACTURA y DETALLE va a ser por id_factura, o sea, una relación de 1 a n pero SIN duplicar registros ya que la llave en DETALLE es compuesta. En detalle únicamente vas a hacer referencia al id_producto que se encuentra en la tabla de INVENTARIO y de ahi podes sacar la descripción del producto y el precio de venta. En la tabla de DETALLE debes guardar el precio del producto en el momento de la compra para que te sirva de histórico ya que los precios van a variar con el tiempo y necesitas saber a que precio se vendió un producto a una fecha determinada.

En INVENTARIO, vas a registrar tus productos y la relación que va a tener con DETALLE es por el campo id_producto. En esa tabla vas a tener precio_compra (precio a como te venden el producto tus proveedores) y precio_venta (el precio a como lo vas a vender). Otro dato importante es la cantidad en existencia para saber si tenes disponible en ese momento.

Por último CLIENTE, ahí simplemente vas a almacenar los datos de tus clientes y va a estar relacionado con FACTURA por id_cliente para obtener los datos del mismo.

Esto es un ejemplo sencillo de facturación pero funcional. Dependiendo de tus necesidades, esta puede crecer en cantidad de tablas o campos.

En la carrera de ingeniería de sistemas, hay un curso llamado BD en la cual te explican lo que es la normalización para evitar datos repetidos, atomicidad de datos y otros.

Si no estas llevando dicha carrera y estas interesado, te aconsejo que busques en internet NORMALIZACION DE BASES DE DATOS o FORMAS NORMALES.

Saludos y espero esta pequeña guía te oriente un poco más.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #7 (permalink)  
Antiguo 10/11/2005, 10:48
 
Fecha de Ingreso: agosto-2004
Ubicación: Stgo de Chile
Mensajes: 64
Antigüedad: 20 años, 3 meses
Puntos: 0
Muchas gracias a todos los que colaboraron, especialmente a ti BrujoNic, que has tenido la paciencia y la nobleza de ayudar a quienes nos falta.

Última edición por htmlPedrote; 10/11/2005 a las 13:02
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:13.