Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facturacin
Disear Base De Datos De Un Sistema De
Facturacin
James Revelo julio 24, 2014 Datos 30 Comments
Los Sistemas de facturacin estn en la mayora de Tiendas, Supermercados, Almacenes, y
otras Organizaciones comerciales, para Optimizar el Proceso de Venta y los Reportes de
flujo de ingresos. Este tipo de sistemas se caracterizan por almacenar los datos de los clientes
que compran en la empresa, emitir facturas generadas en base a la cantidad de productos que
han sido comprados por los clientes, manejar inventarios y muchas funciones mas.
En este artculo estudiaremos el diseo de una base de datos para un sistema de facturacin, a
travs de un enfoque generalizado. Veremos que entidades, atributos y relaciones existen y
como normalizar las anomalas ocurrentes.
Registrar para los productos la siguiente informacin: Cdigo, Nombre, Precio, Nmero
de Existencias y Categora a la que pertenece.
Se debe especificar en la factura los Datos del cliente y una tabla que muestre la
Especificacin del tipo de producto comprado, su precio, la cantidad suministrada y el
Un cliente puede pagar con las siguientes formas de pago: Efectivo, Tarjeta de crdito,
Tarjeta dbito, Paypal y Neteller.
Un cliente puede generar varias facturas debido a sus distintas compras, pero jams una
misma factura podr haber sido generada por ms de un cliente.
En una factura pueden contener varios productos vinculados, al igual que todos los
productos estn posibilitados a aparecer en todas las facturas.
Un cliente puede pagar el monto total de una factura con varios mtodos de pago.
Estas condiciones pueden cambiar dependiendo de las necesidades del cliente, ya que pueden
variar sus procesos de facturacin o aadir ms atributos relevantes para ellos. Pero para los
objetivos de este articulo usaremos solo las caractersticas esenciales.
Crear el Modelo
Requerimientos
Relacional
partir
de
los
Bueno, es sencillo pensar en que primero estn las personas que dan vida al negocio, es decir,
la entidad CLIENTE. Luego viene la satisfaccin de las necesidades del cliente a travs del
PRODUCTO. Y tambin es necesario entregar una FACTURA para constatar la entrega del
producto.
Por el momento CLIENTE, FACTURA y PRODUCTO son las entidades ms relevantes, cuya
informacin debe ser almacenada en la base de datos. Veamos el Diagrama Relacional
preliminar
para
comprender
este
caso:
He puesto los signos de interrogacin en las llaves forneas de FACTURA y PRODUCTO debido
a que esta relacin muchos a muchos es compleja. Para entenderla quiero mostrarte las
partes de una factura con un sencillo diseo perteneciente a una Tienda de artculos para
Computadoras.
id_factura
id_producto
cantidad
precio
101
SDA
101
SDB
102
SDA
103
SDC
Fjate que en la factura 101 podemos distinguir que el primer item registrado es el producto con
cdigo SDA, ya que num_detalle es igual a 1. Y que el producto con cdigo SDB esta
ubicado en el segundo rengln detallado de la factura.
Si la clave primaria fuera id_factura + id_producto no tendramos claro el orden de los
productos comprados. Es por eso que agregar el atributo num_detalle es tan beneficioso para
nosotros.
Precio = 10USD
Unidades vendidas = 200
Ingresos por ventas esperados = 2000USD
Precio = 12USD
Unidades vendidas = 250
Ingresos por ventas esperados = 3000USD
Los resultados anteriores seran los resultados ideales, pero al no incluir el precio del artculo en
la tabla DETALLE, suceder lo siguiente a la hora de calcular los ingresos totales:
Clculo de los ingresos con el precio actual
ARTICULO.precio = 12USD
Unidades vendidas = 450
Ingresos totales por ventas = 450 x 12USD = 5400USD
Son 400USD de ms!, es decir, tu Software est produciendo un error del 8% en el ingreso total
por ventas. Algo desastroso para tu reputacin. Al no incluir este atributo has calculado los
ingresos con el precio actual que refleja ARTICULO.precio, por lo cual todas las unidades
valen lo mismo.
No obstante, si incluyes el precio en DETALLE suceder lo siguiente:
Calculo de los ingresos con el precio de la ocasin
DETALLE.precio= 10USD
Unidades vendidas =200
Ingresos parciales por venta = 2000USD
DETALLE.precio = 12USD
Unidades vendidas = 350
Ingresos parciales por venta = 3000USD
Con esta redundancia inducida puedes tener el clculo exacto para cada producto en el
momento actual, porque DETALLE cumple la funcin de mantener el mismo estado para cada
rengln en la factura a lo largo del tiempo.
nombre
precio
stock
categora
SDA
X-box 360
500
100
TECNO
SDB
Caja de huevos
230
COMIDA
SDC
Aceite de girasol
219
COMIDA
SDD
Coca-cola 200ml
2,3
341
BEBIDA
De los 4 hay 2 que repiten la categora COMIDA. Que tal si hubiesen 1000 productos?, la
cantidad de espacio usado para almacenar VARCHARS repetidos sera muy grande.
La solucin es sencilla, expandiremos nuestro diagrama para quitar el atributo categora de la
entidad PRODUCTO y agregaremos una nueva tabla llamada CATEGORIA. Esta modificacin
aadir una relacin uno a muchos entre producto y categora, por lo cual incluiramos la llave
fornea de categora.
Ventajas?
Economizar espacio en disco. Rinde mejor el valor de una llave fornea 1 que el nombre
de la categora COMIDA.
Si el cliente decidiera que sus productos pueden pertenecer a ms de una categora, entonces
ya sabes que debes crear una tabla intermedia por la relacin muchos a muchos que se genera.
Con la solucin implementada, las tablas quedaran as:
id_producto
nombre
precio
stock
id_categora
SDA
X-box 360
500
100
SDB
Caja de huevos
230
SDC
Aceite de girasol
219
SDD
Coca-cola 200ml
2,3
341
id_categora
nombre
TECNO
COMIDA
BEBIDA
Podemos notar que un cliente tiene posibilitado pagar con varias formas de pago su compra, por
lo cual creamos una relacin uno a muchos entre MODO_PAGO y la factura.
James Revelo julio 24, 2014 Datos 30 Comments
Los Sistemas de facturacin estn en la mayora de Tiendas, Supermercados, Almacenes, y
otras Organizaciones comerciales, para Optimizar el Proceso de Venta y los Reportes de
flujo de ingresos. Este tipo de sistemas se caracterizan por almacenar los datos de los clientes
que compran en la empresa, emitir facturas generadas en base a la cantidad de productos que
han sido comprados por los clientes, manejar inventarios y muchas funciones mas.
En este artculo estudiaremos el diseo de una base de datos para un sistema de facturacin, a
travs de un enfoque generalizado. Veremos que entidades, atributos y relaciones existen y
como normalizar las anomalas ocurrentes.
Registrar para los productos la siguiente informacin: Cdigo, Nombre, Precio, Nmero
de Existencias y Categora a la que pertenece.
Se debe especificar en la factura los Datos del cliente y una tabla que muestre la
Especificacin del tipo de producto comprado, su precio, la cantidad suministrada y el
total parcial. Al final de la factura debe calcularse el valor antes de impuestos y
descuentos, y luego calcular el valor total de la compra.
Un cliente puede pagar con las siguientes formas de pago: Efectivo, Tarjeta de crdito,
Tarjeta dbito, Paypal y Neteller.
Un cliente puede generar varias facturas debido a sus distintas compras, pero jams una
misma factura podr haber sido generada por ms de un cliente.
En una factura pueden contener varios productos vinculados, al igual que todos los
productos estn posibilitados a aparecer en todas las facturas.
Un cliente puede pagar el monto total de una factura con varios mtodos de pago.
Estas condiciones pueden cambiar dependiendo de las necesidades del cliente, ya que pueden
variar sus procesos de facturacin o aadir ms atributos relevantes para ellos. Pero para los
objetivos de este articulo usaremos solo las caractersticas esenciales.
Crear el Modelo
Requerimientos
Relacional
partir
de
los
Bueno, es sencillo pensar en que primero estn las personas que dan vida al negocio, es decir,
la entidad CLIENTE. Luego viene la satisfaccin de las necesidades del cliente a travs del
PRODUCTO. Y tambin es necesario entregar una FACTURA para constatar la entrega del
producto.
Por el momento CLIENTE, FACTURA y PRODUCTO son las entidades ms relevantes, cuya
informacin debe ser almacenada en la base de datos. Veamos el Diagrama Relacional
preliminar
para
comprender
este
caso:
He puesto los signos de interrogacin en las llaves forneas de FACTURA y PRODUCTO debido
a que esta relacin muchos a muchos es compleja. Para entenderla quiero mostrarte las
partes de una factura con un sencillo diseo perteneciente a una Tienda de artculos para
Computadoras.
id_factura
id_producto
cantidad
precio
101
SDA
101
SDB
102
SDA
103
SDC
Fjate que en la factura 101 podemos distinguir que el primer item registrado es el producto con
cdigo SDA, ya que num_detalle es igual a 1. Y que el producto con cdigo SDB esta
ubicado en el segundo rengln detallado de la factura.
Si la clave primaria fuera id_factura + id_producto no tendramos claro el orden de los
productos comprados. Es por eso que agregar el atributo num_detalle es tan beneficioso para
nosotros.
Precio = 10USD
Unidades vendidas = 200
Ingresos por ventas esperados = 2000USD
Precio = 12USD
Unidades vendidas = 250
Ingresos por ventas esperados = 3000USD
Los resultados anteriores seran los resultados ideales, pero al no incluir el precio del artculo en
la tabla DETALLE, suceder lo siguiente a la hora de calcular los ingresos totales:
Clculo de los ingresos con el precio actual
ARTICULO.precio = 12USD
Unidades vendidas = 450
Ingresos totales por ventas = 450 x 12USD = 5400USD
Son 400USD de ms!, es decir, tu Software est produciendo un error del 8% en el ingreso total
por ventas. Algo desastroso para tu reputacin. Al no incluir este atributo has calculado los
ingresos con el precio actual que refleja ARTICULO.precio, por lo cual todas las unidades
valen lo mismo.
No obstante, si incluyes el precio en DETALLE suceder lo siguiente:
Calculo de los ingresos con el precio de la ocasin
DETALLE.precio= 10USD
Unidades vendidas =200
Ingresos parciales por venta = 2000USD
DETALLE.precio = 12USD
Unidades vendidas = 350
Ingresos parciales por venta = 3000USD
Con esta redundancia inducida puedes tener el clculo exacto para cada producto en el
momento actual, porque DETALLE cumple la funcin de mantener el mismo estado para cada
rengln en la factura a lo largo del tiempo.
nombre
precio
stock
categora
SDA
X-box 360
500
100
TECNO
SDB
Caja de huevos
230
COMIDA
SDC
Aceite de girasol
219
COMIDA
SDD
Coca-cola 200ml
2,3
341
BEBIDA
De los 4 hay 2 que repiten la categora COMIDA. Que tal si hubiesen 1000 productos?, la
cantidad de espacio usado para almacenar VARCHARS repetidos sera muy grande.
La solucin es sencilla, expandiremos nuestro diagrama para quitar el atributo categora de la
entidad PRODUCTO y agregaremos una nueva tabla llamada CATEGORIA. Esta modificacin
aadir una relacin uno a muchos entre producto y categora, por lo cual incluiramos la llave
fornea de categora.
Ventajas?
Economizar espacio en disco. Rinde mejor el valor de una llave fornea 1 que el nombre
de la categora COMIDA.
Si el cliente decidiera que sus productos pueden pertenecer a ms de una categora, entonces
ya sabes que debes crear una tabla intermedia por la relacin muchos a muchos que se genera.
Con la solucin implementada, las tablas quedaran as:
id_producto
nombre
precio
stock
id_categora
SDA
X-box 360
500
100
SDB
Caja de huevos
230
SDC
Aceite de girasol
219
SDD
Coca-cola 200ml
2,3
341
id_categora
nombre
TECNO
COMIDA
BEBIDA
Podemos notar que un cliente tiene posibilitado pagar con varias formas de pago su compra, por
lo cual creamos una relacin uno a muchos entre MODO_PAGO y la factura.