BASE DE DATOS: VENTAS.
CLV MV4 CP5 DRV TEC MOU CDX
PRODUCTO DESCRIPCION MONITOR VGA CPU PENTIUM 166 DRIVE DE 1.44 TECLADO MOUSE CD-ROM
FACVEN NoFAC FECVEN RFCCLI 1 2-ene-98 MKS 2 15-ene-98 RQH 3 31-ene-98 LYT 4 5-feb-98 RQH 5 23-feb-98 LYT
FACCOM PROV FECCOM NoFACC A 2-ene-98 123 B 25-ene464 98 MOVEN NoFAC CLV CANT 1 MV4 1 CP5 2 DRV 3 TEC 3 DRV 3 CDX 4 MV4 4 TEC 5 MOU 5 CP5 PRECIO 1 1990 1 2810 1 245 2 165 2 245 2 830 1 1990 1 165 2 119 1 2810 MOVCOM NOFACC PROV CLV CANT COSTO 123 A MV4 5 1630 123 A CP5 3 2480 123 A DRV 1 210 123 A TEC 2 110 123 A CDX 2 756 464 B MOU 8 97 464 B DRV 3 214 464 B TEC 2 160
TABLAS DE VENTAS. CREATE DATABASE ventas; USE ventas; CREATE TABLE producto ( ClvProd VARCHAR (10) NOT NULL, Descrip VARCHAR (40) NOT NULL, PRIMARY KEY (ClvProd) ) ENGINE=InnoDB;
CREATE TABLE Proveedor( ClvProvee VARCHAR(10) NOT NULL, NombreProvee VARCHAR(50) NOT NULL, PRIMARY KEY(ClvProvee) ) ENGINE=InnoDB; CREATE TABLE cliente( RfcCliente VARCHAR(13) NOT NULL, NombreCliente VARCHAR(100) NOT NULL, PRIMARY KEY(RfcCliente) ) ENGINE=InnoDB; CREATE TABLE Faccom ( NfacC INT (6) NOT NULL, ClvProvee VARCHAR(10) NOT NULL, Feccom DATE NOT NULL, PRIMARY KEY(NfacC,ClvProvee), FOREIGN KEY(ClvProvee) REFERENCES proveedor(ClvProvee) ON DELETE RESTRICT ON UPDATE CASCADE ) ENGINE=InnoDB; CREATE TABLE Facven ( NfacV INT (2) NOT NULL, Fecven DATE NOT NULL, RfcCliente VARCHAR (13) NOT NULL, PRIMARY KEY (NfacV), FOREIGN KEY(RfcCliente) REFERENCES cliente(RfcCliente) ON DELETE RESTRICT ON UPDATE CASCADE ) ENGINE=InnoDB;
CREATE TABLE moven ( NfacV INT (2) NOT NULL, ClvProd VARCHAR (10) NOT NULL, Cant INT (5) NOT NULL, PrecioVent DECIMAL (10,2) NOT NULL, PRIMARY KEY (NfacV, ClvProd), FOREIGN KEY (NfacV) REFERENCES Facven (NfacV) ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY (ClvProd) REFERENCES producto (ClvProd) ON DELETE RESTRICT ON UPDATE CASCADE ) ENGINE=InnoDB; CREATE TABLE movcom ( NfacC INT (6) NOT NULL, ClvProvee VARCHAR (10) NOT NULL, ClvProd VARCHAR (10), Cant INT (5) NOT NULL, PrecioC DECIMAL (10,2) NOT NULL, PRIMARY KEY (NfacC, ClvProvee ,ClvProd ), FOREIGN KEY (NfacC) REFERENCES Faccom (NfacC) ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY(ClvProvee) REFERENCES proveedor(ClvProvee) ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY (ClvProd) REFERENCES Producto (ClvProd) ON DELETE RESTRICT ON UPDATE CASCADE ) ENGINE=InnoDB;
INSERCION
-INSERT INTO producto(ClvProd,Descrip) VALUES ('MV4','MONITOR VGA'), ('CP5','CPU PENTIUM 166'), ('DRV','DRIVE DE 1.44'), ('TEC','TECLADO'), ('MOU','MOUSE'), ('CDX','CD-ROM'), ('LKM','CAMARA'); -INSERT INTO proveedor(ClvProvee,NombreProvee) VALUES ('A','SURTIDORA PARA COMPUTO'), ('B','PROVEDORA DE COMPUTO'); -INSERT INTO cliente(RfcCliente,NombreCliente) VALUES ('MKS','MARCOS KIROZ SANTOYO'), ('RQH','RENE QUIONEZ HERNENADEZ'), ('LYT','LAURA YUEZ TOLEDO'); -INSERT INTO Facven(NfacV,Fecven,RfcCliente) VALUES (1,'1998-01-02','MKS'), (2,'1998-01-15','RQH'), (3,'1998-01-31','LYT'), (4,'1998-02-05','RQH'), (5,'1998-02-23','LYT'); -INSERT INTO moven(NfacV,ClvProd,Cant,PrecioVent) VALUES(1,'MV4',1,1990), (1,'CP5',1,2810), (2,'DRV',1,245.00), (3,'TEC',2,165.00), (3,'DRV',2,245.00), (3,'CDX',2,830.00), (4,'MV4',1,1990.00), (4,'TEC',1,165.00), (5,'MOU',2,119.00), (5,'CP5',1,2810.00); -INSERT INTO faccom(NfacC,ClvProvee,Feccom) VALUES(123,'A','1998-01-02'), (464,'B','1998-01-25'); -INSERT INTO movcom(NfacC,ClvProvee,ClvProd,Cant,PrecioC) VALUES(123,'A','MV4',5,1630.00), (123,'A','CP5',3,2480.00), (123,'A','DRV',1,210.00), (123,'A','TEC',2,110.00), (123,'A','CDX',2,756.00),
(464,'B','LKM',3,145.00);
En base a las tablas anteriores escriba las expresiones del algebra relacional que produzcan los resultados pedidos a continuacin 1.- clave, descripcin cantidad, precio, fecha y rfccli de los productos vendidos en una factura x 2.- clave, descripcin cantidad y costo de los productos comprados entre dos fecha f1 y f2 3.- clave, descripcin, cantidad, precio, y fechas de venta de los productos vendidos a un cliente m. 4.- una relacin que contenga clv, descripcin no_fac y precio de los productos que se hubieran vendido en el mes de febrero con un precio menor de $1000 5.- una relacin que contenga clv y descripcin de los productos que tuvieron ventas y compras en todo el ejercicio 6.- una relacin que contenga clv, descripcin de los productos que tuvieron compras pero no ventas en el mes de enero 7.- clave, descripcin, de los producto que hayan sido comprados pero no se halla vendido ninguno NOTA: para hacer tus pruebas puedes tomar los siguientes valores: x =1, f1=1ene-98, f2=15-ene-98
/*1.- clave, descripcin cantidad, precio, fecha y rfc_cli de los productos vendidos en una factura x*/ use ventas; select B.ClvProd, C.Descrip, B.Cant, B.PrecioVent, A.Fecven, A.RfcCliente,A.NfacV from Facven A, moven B, producto C where A.NfacV=1 and A.NfacV=B.NfacV and B.ClvProd=C.ClvProd; /*2 */ use ventas; select A.NfacC, B.ClvProvee, B.NombreProvee, C.ClvProd, D.Descrip, C.Cant,C.PrecioC,A.Feccom from Faccom A, Proveedor B, movcom C, producto D where A.ClvProvee= B.ClvProvee and A.ClvProvee=C.ClvProvee and A.NfacC=C.NfacC and C.ClvProd=D.ClvProd and (A.Feccom>='1998-01-01' and A.Feccom<='1998-01-15');
/*3*/ use ventas; select B.ClvProd, C.Descrip, B.Cant, B.PrecioVent, A.Fecven,A.Nfacv, A.RfcCliente from Facven A, moven B, producto C, cliente D where A.RfcCliente='LYT' and A.Nfacv=B.Nfacv and B.ClvProd=C.ClvProd and A.RfcCliente=D.RfcCliente; /*4*/ use ventas; select B.ClvProd, C.Descrip, B.Cant, B.PrecioVent, A.Fecven,A.NFacv, A.RfcCliente from Facven A, moven B, producto C, cliente D where B.PrecioVent<1000 AND MONTH(A.Fecven)=2 and A.NFacv=B.NFacv and B.ClvProd=C.ClvProd and A.RfcCliente=D.RfcCliente; /* 5 */ use ventas; select distinct B.ClvProd, B.Descrip from moven A, producto B, movcom C where B.ClvProd=A.ClvProd and B.ClvProd=C.ClvProd; /*6*/ use ventas; select A.NFacC, B.ClvProvee, B.NombreProvee, C.ClvProd, D.Descrip, C.Cant,C.PrecioC,A.Feccom from Faccom A, Proveedor B, movcom C, producto D where A.ClvProvee= B.ClvProvee and A.ClvProvee=C.ClvProvee and A.NFacC=C.NFacC and C.ClvProd=D.ClvProd and C.ClvProd in(select N.ClvProd from Facven M, moven N, producto O, cliente P where M.NfacV=N.NfacV and N.ClvProd=O.ClvProd and M.RfcCliente=P.RfcCliente and MONTH(M.Fecven)=2 and (select count(*) from Facven E, moven F, producto G, cliente H where E.NfacV=F.NfacV and F.ClvProd=G.ClvProd and E.RfcCliente=H.RfcCliente and MONTH(E.Fecven)=1 AND N.ClvProd=F.ClvProd)=0);
/*7*/ use ventas; select A.NFacC, B.ClvProvee, B.NombreProvee, C.ClvProd, D.Descrip, C.Cant,C.PrecioC,A.Feccom from Faccom A, proveedor B, movcom C, producto D where A.ClvProvee= B.ClvProvee and A.ClvProvee=C.ClvProvee and A.NFacC=C.NFacC and C.ClvProd=D.ClvProd and (select count(*) from Facven E, moven F, producto G, cliente H where E.NfacV=F.NfacV and F.ClvProd=G.ClvProd and E.RfcCliente=H.RfcCliente AND C.ClvProd=F.ClvProd)=0;
*NOTA: Para esta ltima pregunta, tuvimos que agregar un artculo que no se haya vendido pero si comprado. INSERT INTO producto(ClvProd,Descrip) VALUES ('LKM','CAMARA');