Rocío Romero
BASES DE DATOS
1. Identifica un problema de tu entorno que pueda resolverse a través de la implementación de una base de datos. 2. Una vez identificado el problema, diseña el diagrama de la base de datos, el cual debe contener cuando menos cuatro tablas. 3. Después de diseñar el diagrama, crea el esquema en MySQL, que contenga los siguientes aspectos: Al menos dos tablas tablas tipo MyISAM. MyISAM. Al menos dos tablas tablas tipo InnoDB. InnoDB. Llaves primarias y llaves foráneas. Al menos 6 tipos de datos distintos, distintos, de los los soportados soportados por MySQL. MySQL. 1.- En la oficina donde desempeño mis labores, trabaja una señora que se llama Verónica Valerio, es una secretaria que trabaja como secretaria y para obtener ingresos adicionales vende una gran cantidad de d e productos como Amway, Tupperware, Bestware, etc. El problema es que las ventas las lleva en una libreta que no tiene pies ni cabeza, el proyecto que decidí hacer es ayudarle con los registros de sus clientes y las ventas. Para ordenarle su mundo necesitamos cuatro tablas: La tabla de clientes: Nombre (obligatorio) Apellido Paterno (obligatorio) Apellido Materno (no obligatorio) Fecha Nacimiento (Felicitarlo en su cumpleaños) Direccción Teléfono Comentario “TEXT” (para cualquier aclaración o referencia) Motor de almacenamiento: InnoDB Para crear la tabla: CREATE TABLE Clientes ( IdCliente INT NOT NULL AUTO_INCREMENT, Nombre VARCHAR(50) NOT NULL, ApellidoP VARCHAR(20) NOT NOT NULL, ApellidoM VARCHAR(20), Fecha_Nacimiento DATE NOT NULL, Direccion VARCHAR(100), Telefono VARCHAR(15), Comentario TEXT, PRIMARY KEY (IdCliente) ) ENGINE= InnoDB;
La tabla de Ventas: Cliente (obligatorio, se liga con la tabla clientes) Fecha (obligatorio) Producto (se detalla en la tabla detalle_ventas) Motor de almacenamiento: MyISAM
Para crear la tabla: CREATE TABLE Ventas ( IdVenta INT NOT NULL AUTO_INCREMENT, Fecha DATE, IdCliente INT NOT NULL, PRIMARY KEY (IdVenta), CONSTRAINT IdCliente FOREIGN KEY (IdCliente) REFERENCES Clientes (IdCliente) ) ENGINE= MyISAM; La tabla de Productos: Nombre del producto (obligatorio) Precio (obligatorio) Motor de almacenamiento: InnoDB Para crear la tabla: CREATE TABLE Productos ( IdProducto INT NOT NULL AUTO_INCREMENT, Nombre VARCHAR(50) NOT NULL, Precio DECIMAL(10 , 2 ) NOT NULL, PRIMARY KEY (IdProducto) ) ENGINE= InnoDB; La tabla de Detalle_Ventas: Venta (Relaciona con la tabla Ventas) Producto (relaciona con la tabla productos) Cantidad (obligatorio) Descuento (no obligatorio) Motor de almacenamiento: MyISAM Para crear la tabla: CREATE TABLE Detalle_Ventas ( IdDetalle INT NOT NULL AUTO_INCREMENT , IdCliente INT NOT NULL, IdVenta INT NOT NULL , IdProducto INT NOT NULL , Cantidad INT NOT NULL , Descuento DECIMAL(10,2), PRIMARY KEY (IdDetalle) ,
CONSTRAINT IdVenta FOREIGN KEY (IdVenta) REFERENCES Ventas (IdVenta), CONSTRAINT IdProducto FOREIGN KEY (IdProducto) REFERENCES Productos (IdProducto) ) ENGINE=MyISAM; Cabe mencionar que si bien se usaron como motores de almacenamiento MyISAM e InooDB, por cuestiones de la actividad, en la práctica se podría utilizar solamente InooDB ya que si bien es más lento, con los adelantos en las tecnologías para los procesadores, sería prácticamente imperceptible la diferencia.
4. Una vez creado el esquema define 4 usuarios, que cumplan con las siguientes características: La función GRANT Se utiliza para crear usuarios y concederle previlegios. La sintaxis general del comando GRANT es: GRANT privilegios (columnas) ON base/tabla TO nombre_usuario IDENTIFIED BY 'contraseña'; La función REVOKE se utiliza para retirar privilegios a los usuarios. Su sintaxis es muy similar a la de GRANT: REVOKE privilegios ON base/tabla FROM nombre_usuario Así quitaríamos todos los permisos del usuario REVOKE ALL ON BD.* from USER@localhost
El usuario 1 sólo podrá consultar información de las tablas. GRANT SELECT ON Ventas_Veronica.* TO ‘Usuario1’@’localhost'’ IDENTIFIED BY ‘11111’;
El usuario 2 sólo podrá insertar y consultar información de las tablas. GRANT SELECT,INSERT ON Ventas_Veronica.* TO ‘Usuario2’@’localhost'’ IDENTIFIED BY ‘22222’;
El usuario 3 sólo podrá eliminar y consultar información de las tablas. GRANT SELECT, DELETE ON Ventas_Veronica.* TO ‘Usuario3’@’localhost'’ IDENTIFIED BY ‘33333’;
El usuario 4 podrá realizar todas las operaciones. GRANT ALL PRIVILEGES ON Ventas_Veronica.* IDENTIFIED BY ‘44444’;
TO
‘USUARIO4’@’localhost’