Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/05/2016, 05:08
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, 5 meses
Puntos: 2658
Respuesta: Ejemplo BD relacional

Bueno, estás más cerca, pero tu esquema tiene aún muchos errores, algunos bastante importantes...

Más allá de los atributos faltantes en tu descripción para el Cliente, que sin duda tiene mas que esos dos, estás definiendo un "ID" a la factura que es un VARCHAR, y usualmente una factura se numera, y los números JAMAS se almacenan en campos de tipo caracter como ese.
Si el caso es que tienes que guardar un tipo de factura alfanumérico, como A, B, C, X, o lo que sea, mas un numero de punto de venta, y además el numero de la factura de ESE punto de venta, eso son TRES columnas, cada una dedicada a uno de esos atributos.

Los Productos no pueden diferenciarse sólo por nombre. Eso es insuficiente. Los productos deben diferenciarse por un identificador absolutamente único y que no permita que un data-entry meta la pata, registrando el mismo producto con nombres similares o abreviados.
Imagina que pone "pantalones marrones jersey" en un registro y "pantalones jersey marrones" en otro, e incluso "pant. marr. jersey".
¿Te das cuenta que podrían ser el mismo producto?
Por eso usualmente se utilizan los números de producto utilizados en los códigos de barras, si los tienen, o una codificación numérica o alfanumérica propia de la empresa. En este ultimo caso debe existir una funcionalidad que permita hacer altas de productos y stock, con las pertinentes validaciones.

Además de eso, el producto tiene que relacionarse con su precio, o de lo contrario no puede automatizarse la emisión de la factura. Sea que lo haga en una lista de precios por producto (otra tabla), o que el precio unitario esté en la misma tabla de Producto, o incluso que haya una tabla de Stock, vinculada al producto, el precio debe existir.

En el caso de tu tabla FacturaProductos, le faltan al menos dos columnas: El id de la linea de detalle (una por cada producto vendido en la misma factura) y además la cantidad de unidades del producto que vendes. ASí como la tienes se infiere que sólo venderás un
único producto por cada factura emitida.
Pero por sobre todo hay un error gravísimo en esa tabla: No tiene primary key, y es o es simplemente inaceptable. Es OBLIGATORIO que tenga una PK, sea esta de un único campo o una PK compuesta. Tiene que tenerla, y no la has definido.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)