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
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
0