Realizar una base de datos de nombre tienda que se relacione con la
actividad de una pequea empresa que vende artculos (papelera) a clientes. La empresa debe almacenar informacin de cada uno de sus clientes. La empresa debe almacenar informacin de los artculos que vende. El negocio debe almacenar datos de las ventas que realiza Todas las ventas generan un ticket o nota de venta con su correspondiente detalle que describe el producto que se vende, la cantidad, el precio y el importe que el producto de precio X cantidad.
1. Crear base de datos tienda.
create database tienda; 2. Diseo de BD sugerida.
3. Cdigo SQL para crear tablas con sus correspondientes relaciones
entre las tablas que lo requieran: a. clientes: Tabla con llave primaria rfc b. productos: Tabla con llave primaria clave_producto c. ventas: Tabla con llave primaria no_venta y llave fornea rfc d. detalleventas: Tabla SIN llave primaria y dos forneas: no_venta y clave_producto. -- Eliminar en orden inverso a como se crean -- Por lo de las llaves FORANEAS drop drop drop drop
table table table table
detalleventas; ventas; clientes; productos;
create table productos
( clave_producto char(10) primary key not null, descripcion char(50) not null, costo float not null ); create table clientes ( rfc char(13) primary key not null, paterno char(50) not null, materno char(50) not null, nombre char(50) not null, calle_no char(60), colonia char(60), ciudad char(20), telefono char(10) not null );
-- La tabla ventas se relaciona por medio del RFC
-- con la tabla clientes es una llave FORANEA
create table ventas
( no_venta integer primary key not null, fecha date not null, rfc char(13) not null, total float, constraint fk_rfcclientes foreign key (rfc) references clientes(rfc) );
-----
La tabla detalleventas tiene el campo no_venta
que es LLAVE FORANEA y se asocia con ventas La tabla detalleventas tiene el campo clave_producto que es LLAVE FORANEA y se asocia con productos
5. Script SQL para agregar 10 productos [10 insert].
Nota slo se muestran 9 registros para efectos de prctica. delete from productos;
insert into productos (clave_producto, descripcion, costo)
values ('LIB100X', 'LIBRETA MARCA X', 56.70); insert into productos (clave_producto, descripcion, costo) values ('PLU100X', 'PLUMA MARCA X', 5.00); insert into productos (clave_producto, descripcion, costo) values ('GOMAX', 'GOMA MARCA X', 2); insert into productos (clave_producto, descripcion, costo) values ('LIB100Y', 'LIBRETA MARCA Y', 76.90); insert into productos (clave_producto, descripcion, costo) values ('PLU100Y', 'PLUMA MARCA Y', 5.60); insert into productos (clave_producto, descripcion, costo) values ('GOMAY', 'GOMA MARCA Y', 4); insert into productos (clave_producto, descripcion, costo) values ('LIB100Z', 'LIBRETA MARCA Z', 89.90); insert into productos (clave_producto, descripcion, costo) values ('PLU100Z', 'PLUMA MARCA Z', 7.60); insert into productos (clave_producto, descripcion, costo) values ('GOMAZ', 'GOMA MARCA Z', 6.50); select * from productos;
6. Script SQL para agregar 5 ventas incluyendo su detalle. [5 insert]
Nota : slo se agregan 2 ventas incluyendo su detalle para efectos de prctica delete from detalleventas; delete from ventas;
-- Primera Venta Incluyendo su Detalle
start transaction; -- Se agrega una nueva venta -- El valor a campo total queda pendiente ... -- deber ser la suma de todos los importes de dicho -- nmero de venta. insert into ventas (no_venta, fecha, rfc) values (100, '2010-03-04','LALO101010'); -- se detalla la venta nmero 100 -- se compraron 2 productos diferentes -- 5 y 10 cantidades de cada uno insert into detalleventas (no_venta, clave_producto, cantidad, precio, importe) values (100, 'LIB100X', 5, 65.90, cantidad * precio); insert into detalleventas (no_venta, clave_producto, cantidad, precio, importe) values (100, 'PLU100Z', 10, 9.90, cantidad * precio); commit;
-- Segunda Venta Incluyendo su Detalle
start transaction; -- Se agrega una nueva venta -- El valor a campo total queda pendiente ... -- deber ser la suma de todos los importes de dicho -- nmero de venta. insert into ventas (no_venta, fecha, rfc) values (101, '2010-06-07','GALO101010');
-- se detalla la venta nmero 100
-- se compraron 3 productos diferentes -- LINRETA, PLUMA Y GOMA DE LA MARCA "Y" -- 2, 4, y 6 cantidades de cada uno insert into detalleventas (no_venta, clave_producto, cantidad, precio, importe) values (101, 'LIB100Y', 2, 86.90, cantidad * precio); insert into detalleventas (no_venta, clave_producto, cantidad, precio, importe) values (101, 'PLU100Y', 4, 7.90, cantidad * precio); insert into detalleventas (no_venta, clave_producto, cantidad, precio, importe) values (101, 'GOMAY', 6, 6.50, cantidad * precio); commit; -- Notas: -- POR LAS REGLAS DE RELACION O DE INTEGRIDAD REFERENCIAL -- Es necesario capturar clientes de aquellos que existan en tabla clientes; -- De igual forma es necesario capturar productos (las clavbes) de aquellos -- productos que esxistan en tabla productos.} select * from ventas; select * from detalleventas; Las transacciones en base de datos significan que se hace todas las instrucciones o no se hace nada. Sirve para asegurarse que se realice todas las operaciones para en caso de que exista algn error, se guarde consistencia en la BD.
7. Script SQL para hacer eliminaciones de registros [5 delete]
Nota: Slo se muestra un delete. Eliminar datos de un cliente que exista: delete from clientes where rfc = ALGO;
8. Script SQL para hacer modificaciones [5 update]
Nota: Slo se muestra un update. Modificar datos de un ciente. update clientes set paterno = nuevo, materno = nuevo where rfc = 'LALO101010'; 9. Script SQL para hacer consultas varias. [10 select] a. Lista de todos los clientes b. Lista de productos c. Los datos de un cliente d. Datos del costo que tiene un producto en particular e. Quienes viven en la Cd. de DURANGO f. Cul es el detalle de una venta en particular por ejemplo la venta 100. g. Lista de todas las ventas (SIN DETALLE) h. Lista de los clientes con algn apellido. i. Lista de los datos de un producto buscados por su descripcin. j. Informacin de la venta que se la ha hecho a un cliente por ejemplo a 'LALO101010'.