Bases de Datos - Bases de datos relacional

 
Vista:

Bases de datos relacional

Publicado por Leidy Gonzalez (3 intervenciones) el 09/03/2011 05:10:40
Hola:
Estoy diseñando una base de datos para un supermercado, mi dua es la siguiente:
se necesita la informacon exacta de productos en el negocio el caso es que un mismo producto puede ser vendido de diferentes formas es decir puedo vender una caja completa pero tambien se puede vender este mismo articulo como una sola unidad, y bueno el problema es que debo dismimuir las unidades y las cajas cuando sea necesario, hasta ahora el modelo lo llevo asi

CREATE TABLE Codigos_de_barras (
Cod_barras INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Productos_has_Tipo_Tipo_idTipo INTEGER UNSIGNED NOT NULL,
Productos_has_Tipo_Productos_Cod_interno INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(Cod_barras),
INDEX Codigos_de_barras_FKIndex1(Productos_has_Tipo_Productos_Cod_interno, Productos_has_Tipo_Tipo_idTipo)
);

CREATE TABLE Fact_compra (
N_fact_comp INTEGER UNSIGNED NOT NULL,
Proveedores_Nit_prov INTEGER UNSIGNED NOT NULL,
Fecha DATE NULL,
Iva_comp INTEGER UNSIGNED NULL,
Total_fact INTEGER UNSIGNED NULL,
Fact_desc INTEGER UNSIGNED NULL,
PRIMARY KEY(N_fact_comp),
INDEX FACT_VENTA_FKIndex1(Proveedores_Nit_prov)
);

CREATE TABLE Fact_Productos (
Fact_compra_N_fact_comp INTEGER UNSIGNED NOT NULL,
Productos_Cod_interno INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(Fact_compra_N_fact_comp, Productos_Cod_interno),
INDEX Fact_compra_has_Productos_FKIndex1(Fact_compra_N_fact_comp),
INDEX Fact_compra_has_Productos_FKIndex2(Productos_Cod_interno)
);

CREATE TABLE Productos (
Cod_interno INTEGER UNSIGNED NOT NULL,
Prod_nombre VARCHAR NULL,
Prod_descr VARCHAR NULL,
Iva INTEGER UNSIGNED NULL,
Dept VARCHAR NULL,
Tipo VARCHAR NULL,
PRIMARY KEY(Cod_interno)
);

CREATE TABLE Productos_has_Tipo (
Productos_Cod_interno INTEGER UNSIGNED NOT NULL,
Tipo_idTipo INTEGER UNSIGNED NOT NULL,
Precio_vta INTEGER UNSIGNED NULL,
Precio_costo INTEGER UNSIGNED NULL,
Ult_prec_costo INTEGER UNSIGNED NULL,
Cant_disp INTEGER UNSIGNED NULL,
PRIMARY KEY(Productos_Cod_interno, Tipo_idTipo),
INDEX Productos_has_Tipo_FKIndex1(Productos_Cod_interno),
INDEX Productos_has_Tipo_FKIndex2(Tipo_idTipo)
);

CREATE TABLE Proveedores (
Nit_prov INTEGER UNSIGNED NOT NULL,
Prov_Nom VARCHAR NULL,
Prov_Direccion VARCHAR NULL,
Prov_telf VARCHAR NULL,
Prov_fax VARCHAR NULL,
Prov_Ciudad VARCHAR NULL,
PRIMARY KEY(Nit_prov)
);

CREATE TABLE Tipo (
idTipo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Nombre VARCHAR NULL,
PRIMARY KEY(idTipo)
);

Pero nose como hacer para que al momento de vender una caja que contiene por ejemplo 12 unidades pueda disminuir 1 caja y al mismo tiempo las 12 unidades que tiene la caja, tambien toca verificar que cuando se hayan vendido las unidades equivalentes a una caja se disminuya una cantidad a la caja, de ante mano gracias por la ayuda espero haya sido clara al explicar mi problema
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Bases de datos relacional

Publicado por luis horacio (8 intervenciones) el 09/03/2011 06:01:03
Buenas noches,

Para solucionar tut duda debes de probar manejando por ejemplo unidades de medida de los productos, asi le podras decir al sistema y a la BD cual estas vendiendo si por unidad o por caja. Por ejemplo en la tabla UnidadMedidaProducto guardarias ell ID de la unidad el ID del producto y la cantidad asi:

IdUnidad: 1(caja)
IdProducto: 101(crema dental)
cantidad: 12

Espero haberte ayudado.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Bases de datos relacional

Publicado por Leidy Gonzalez (3 intervenciones) el 09/03/2011 14:54:32
Hola,

muchas gracias por la sugerencia, me aclaro un poco las cosas pero sigo confundida a ver te cuento, el problema es que un producto ejemplo galletas existe de tres formas se puede vender un paquete de 6 unidades, se puede vender la caja que tiene 24 paquetes de 6 unidades y tambien se puede vender por unidad, cada una tiene un valor diferente y cada ves que se venda por ejemplo si vendo una unidad solo se disminuye una unidad pero si al venderla tuve que abrir un paquete debo entonces dismimuir la cantidad de paquetes.

tengo la tabla productos

CREATE TABLE Productos (
Cod_interno INTEGER UNSIGNED NOT NULL,
Prod_nombre VARCHAR NULL,
Prod_descr VARCHAR NULL,
Iva INTEGER UNSIGNED NULL,
Dept VARCHAR NULL,
PRIMARY KEY(Cod_interno)
);

como un mismo producto puede tener muchos codigos de barra hago una relacion con la tabla codigos de barra muchos a muchos

CREATE TABLE Codigos_barra (
Cod_barra INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY(Cod_barra)
);
CREATE TABLE Productos_has_Codigos_barra (
Productos_Cod_interno INTEGER UNSIGNED NOT NULL,
Codigos_barra_Cod_barra INTEGER UNSIGNED NOT NULL,
Und_medida_idUnd_medida INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(Productos_Cod_interno, Codigos_barra_Cod_barra),
INDEX Productos_has_Codigos_barra_FKIndex1(Productos_Cod_interno),
INDEX Productos_has_Codigos_barra_FKIndex2(Codigos_barra_Cod_barra),
INDEX Productos_has_Codigos_barra_FKIndex3(Und_medida_idUnd_medida)
);

CREATE TABLE Und_medida (
idUnd_medida INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Nombre VARCHAR NULL,
PRIMARY KEY(idUnd_medida)
);


esta tabla le coloco la undidad de medida como me lo sugeriste pero sigo sin poder determinar las cantidades de cada una de las presentaciones del producto (caja, paquete, unidadad).

Nuevamente gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Bases de datos relacional

Publicado por luis horacio (8 intervenciones) el 10/03/2011 05:39:20
Buenas noches,

Eso si se puede hacer si quieres me ads tu correo y te explico como. el email es [email protected]

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar