SCRIPT
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
--
-- Estructura de tabla para la tabla `Bodegas`
--
CREATE TABLE `Bodegas` (
`idBodega` int NOT NULL,
`Nombre` varchar(45) DEFAULT NULL,
`Dirección` varchar(45) DEFAULT NULL,
`Capacidad` varchar(45) DEFAULT NULL,
`idEmpresa` int NOT NULL,
`idCargoAutorizado` int NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `Cargos`
--
CREATE TABLE `Cargos` (
`idCargo` int NOT NULL,
`Nombre` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `CargosAutorizados`
--
CREATE TABLE `CargosAutorizados` (
`idCargoAutorizado` int NOT NULL,
`idCargo` int NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `Empleados`
--
CREATE TABLE `Empleados` (
`idEmpleado` int NOT NULL,
`Nombre` varchar(50) DEFAULT NULL,
`Identificación` varchar(20) DEFAULT NULL,
`Correo` varchar(45) DEFAULT NULL,
`Teléfono` varchar(45) DEFAULT NULL,
`idCargo` int NOT NULL,
`idIdentidadAutorizada` int NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `Empresas`
--
CREATE TABLE `Empresas` (
`idEmpresa` int NOT NULL,
`NombreE` varchar(50) DEFAULT NULL,
`Dirección` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `IdentidadAutorizada`
--
CREATE TABLE `IdentidadAutorizada` (
`idIdentidadAutorizada` int NOT NULL,
`idBodega` int NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `Movimientos`
--
CREATE TABLE `Movimientos` (
`idMovimiento` int NOT NULL,
`Fecha` date DEFAULT NULL,
`Hora` time DEFAULT NULL,
`Descripción` varchar(200) DEFAULT NULL,
`idEmpleado` int NOT NULL,
`idProductbode` int NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `Productbode`
--
CREATE TABLE `Productbode` (
`idProductbode` int NOT NULL,
`Cantidad` varchar(45) DEFAULT NULL,
`FechaV` date DEFAULT NULL,
`idBodega` int NOT NULL,
`idProducto` int NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `Productos`
--
CREATE TABLE `Productos` (
`idProducto` int NOT NULL,
`NombreP` varchar(60) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;
--
-- Índices para tablas volcadas
--
--
-- Indices de la tabla `Bodegas`
--
ALTER TABLE `Bodegas`
ADD PRIMARY KEY (`idBodega`),
ADD KEY `fk_Empresa` (`idEmpresa`),
ADD KEY `fk_CargoAutorizado` (`idCargoAutorizado`);
--
-- Indices de la tabla `Cargos`
--
ALTER TABLE `Cargos`
ADD PRIMARY KEY (`idCargo`);
--
-- Indices de la tabla `CargosAutorizados`
--
ALTER TABLE `CargosAutorizados`
ADD PRIMARY KEY (`idCargoAutorizado`),
ADD KEY `fk_Cargo` (`idCargo`);
--
-- Indices de la tabla `Empleados`
--
ALTER TABLE `Empleados`
ADD PRIMARY KEY (`idEmpleado`),
ADD KEY `fk_Cargo_1` (`idCargo`),
ADD KEY `fk_IdentidadAutorizada` (`idIdentidadAutorizada`);
--
-- Indices de la tabla `Empresas`
--
ALTER TABLE `Empresas`
ADD PRIMARY KEY (`idEmpresa`);
--
-- Indices de la tabla `IdentidadAutorizada`
--
ALTER TABLE `IdentidadAutorizada`
ADD PRIMARY KEY (`idIdentidadAutorizada`),
ADD KEY `fk_idBodega_1` (`idBodega`);
--
-- Indices de la tabla `Movimientos`
--
ALTER TABLE `Movimientos`
ADD PRIMARY KEY (`idMovimiento`),
ADD KEY `fk_Empleado` (`idEmpleado`),
ADD KEY `fk_Productbode` (`idProductbode`);
--
-- Indices de la tabla `Productbode`
--
ALTER TABLE `Productbode`
ADD PRIMARY KEY (`idProductbode`),
ADD KEY `fk_Bodega` (`idBodega`),
ADD KEY `fk_Producto` (`idProducto`);
--
-- Indices de la tabla `Productos`
--
ALTER TABLE `Productos`
ADD PRIMARY KEY (`idProducto`);
--
-- AUTO_INCREMENT de las tablas volcadas
--
--
-- AUTO_INCREMENT de la tabla `Bodegas`
--
ALTER TABLE `Bodegas`
MODIFY `idBodega` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT de la tabla `Cargos`
--
ALTER TABLE `Cargos`
MODIFY `idCargo` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT de la tabla `CargosAutorizados`
--
ALTER TABLE `CargosAutorizados`
MODIFY `idCargoAutorizado` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT de la tabla `Empleados`
--
ALTER TABLE `Empleados`
MODIFY `idEmpleado` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT de la tabla `Empresas`
--
ALTER TABLE `Empresas`
MODIFY `idEmpresa` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT de la tabla `IdentidadAutorizada`
--
ALTER TABLE `IdentidadAutorizada`
MODIFY `idIdentidadAutorizada` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT de la tabla `Movimientos`
--
ALTER TABLE `Movimientos`
MODIFY `idMovimiento` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT de la tabla `Productbode`
--
ALTER TABLE `Productbode`
MODIFY `idProductbode` int NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT de la tabla `Productos`
--
ALTER TABLE `Productos`
MODIFY `idProducto` int NOT NULL AUTO_INCREMENT;
--
-- Restricciones para tablas volcadas
--
--
-- Filtros para la tabla `Bodegas`
--
ALTER TABLE `Bodegas`
ADD CONSTRAINT `fk_CargoAutorizado` FOREIGN KEY (`idCargoAutorizado`) REFERENCES `CargosAutorizados` (`idCargoAutorizado`),
ADD CONSTRAINT `fk_Empresa` FOREIGN KEY (`idEmpresa`) REFERENCES `Empresas` (`idEmpresa`);
--
-- Filtros para la tabla `CargosAutorizados`
--
ALTER TABLE `CargosAutorizados`
ADD CONSTRAINT `fk_Cargo` FOREIGN KEY (`idCargo`) REFERENCES `Cargos` (`idCargo`);
--
-- Filtros para la tabla `Empleados`
--
ALTER TABLE `Empleados`
ADD CONSTRAINT `fk_Cargo_1` FOREIGN KEY (`idCargo`) REFERENCES `Cargos` (`idCargo`),
ADD CONSTRAINT `fk_IdentidadAutorizada` FOREIGN KEY (`idIdentidadAutorizada`) REFERENCES `IdentidadAutorizada` (`idIdentidadAutorizada`);
--
-- Filtros para la tabla `IdentidadAutorizada`
--
ALTER TABLE `IdentidadAutorizada`
ADD CONSTRAINT `fk_idBodega_1` FOREIGN KEY (`idBodega`) REFERENCES `Bodegas` (`idBodega`);
--
-- Filtros para la tabla `Movimientos`
--
ALTER TABLE `Movimientos`
ADD CONSTRAINT `fk_Empleado` FOREIGN KEY (`idEmpleado`) REFERENCES `Empleados` (`idEmpleado`),
ADD CONSTRAINT `fk_Productbode` FOREIGN KEY (`idProductbode`) REFERENCES `Productbode` (`idProductbode`);
--
-- Filtros para la tabla `Productbode`
--
ALTER TABLE `Productbode`
ADD CONSTRAINT `fk_Bodega` FOREIGN KEY (`idBodega`) REFERENCES `Bodegas` (`idBodega`),
ADD CONSTRAINT `fk_Producto` FOREIGN KEY (`idProducto`) REFERENCES `Productos` (`idProducto`);
COMMIT;
CONSULTAS
1.Enumere todos los empleados junto con sus respectivos puestos de trabajo:
SELECT e.idEmpleado, e.Nombre AS NombreEmpleado, c.Nombre AS Cargo
FROM tblEmpleados e
INNER JOIN tblCargos c ON e.idCargo = c.idCargo
ORDER BY e.idEmpleado ASC;
2.Recupera todos los productos almacenados en un almacén específico junto con sus cantidades y fechas de vencimiento
entre un rango de fechas establecido, ordenado por fecha desde la más proxima hasta la más lejana:
SELECT pb.idProductbode, p.NombreP AS NombreProducto, pb.Cantidad, pb.FechaV
FROM tblProductbode pb
INNER JOIN tblProductos p ON pb.idProducto = p.idProducto
WHERE pb.idBodega =
AND pb.FechaV BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'
ORDER BY pb.FechaV ASC;
3.Listar los movimientos de un productbode especifico con su respectiva fecha, hora, descripcion y nombre del empleado,
ordenados desde el más reciente hasta el más antiguo:
SELECT m.idMovimiento, m.Fecha, m.Hora, m.Descripción, e.Nombre AS NombreEmpleado
FROM tblMovimientos m
INNER JOIN tblEmpleados e ON m.idEmpleado = e.idEmpleado
INNER JOIN tblProductbode pb ON m.idProductbode = pb.idProductbode
WHERE pb.idProductbode = [ID_PRODUCTBODE]
ORDER BY m.Fecha DESC, m.Hora DESC;
4.Enumere todos los movimientos realizados por un empleado específico, mostrando la fecha, hora, descripcion y el producto,
entre un rango de fechas establecido:
SELECT m.Fecha, m.Hora, m.Descripción, p.NombreP AS NombreProducto
FROM tblMovimientos m
INNER JOIN tblEmpleados e ON m.idEmpleado = e.idEmpleado
INNER JOIN tblProductbode pb ON m.idProductbode = pb.idProductbode
INNER JOIN tblProductos p ON pb.idProducto = p.idProducto
WHERE e.idEmpleado =
AND m.Fecha BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'
ORDER BY m.Fecha ASC, m.Hora ASC;
5.Listar la capacidad acumulada total de las bodegas por cada una de las empresas, ordenadas de mayor a menor:
SELECT e.NombreE AS NombreEmpresa, SUM(b.Capacidad) AS CapacidadTotal
FROM tblBodegas b
INNER JOIN tblEmpresas e ON b.idEmpresa = e.idEmpresa
GROUP BY e.NombreE
ORDER BY CapacidadTotal DESC;
6.Emnumere todos los productos junto con los almacenes en los que se almacenan y el respectivo nombre de empresa:
SELECT p.idProducto, p.NombreP AS NombreProducto, b.Nombre AS NombreBodega, e.NombreE AS NombreEmpresa
FROM tblProductbode pb
INNER JOIN tblProductos p ON pb.idProducto = p.idProducto
INNER JOIN tblBodegas b ON pb.idBodega = b.idBodega
INNER JOIN tblEmpresas e ON b.idEmpresa = e.idEmpresa;
7.Recupera todos los movimientos realizados en una fecha especifica incluyendo el nombre del empleado,
la cantidad, fecha, hora y descripción:
SELECT m.idMovimiento, e.Nombre AS NombreEmpleado, m.Cantidad, m.Fecha, m.Hora, m.Descripción
FROM tblMovimientos m
INNER JOIN tblEmpleados e ON m.idEmpleado = e.idEmpleado
WHERE m.Fecha = 'YYYY-MM-DD';
8.Listar todos los productos junto con su respectivo almacen:
SELECT p.idProducto, p.NombreP AS NombreProducto, b.Nombre AS NombreBodega
FROM tblProductbode pb
INNER JOIN tblProductos p ON pb.idProducto = p.idProducto
INNER JOIN tblBodegas b ON pb.idBodega = b.idBodega;
9.Encuentre todos los movimientos que involucran un producto especifico dentro de un rango de fechas:
SELECT m.idMovimiento, m.idProductbode, m.Fecha
FROM tblMovimientos m
INNER JOIN tblProductbode pb ON m.idProductbode = pb.idProductbode
WHERE pb.idProducto =
AND m.Fecha BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD';
10.Recupera todos los movimientos realizados por un empleado especifico en una fecha particular:
SELECT m.idMovimiento, m.Fecha, m.Hora, m.Descripción
FROM tblMovimientos m
INNER JOIN tblEmpleados e ON m.idEmpleado = e.idEmpleado
WHERE e.idEmpleado =
AND m.Fecha = 'YYYY-MM-DD';
11.Listar todos los productos junto con sus cantidades almacenadas en cada almacen:
SELECT p.idProducto, p.NombreP AS NombreProducto, b.Nombre AS NombreBodega, pb.Cantidad
FROM tblProductbode pb
INNER JOIN tblProductos p ON pb.idProducto = p.idProducto
INNER JOIN tblBodegas b ON pb.idBodega = b.idBodega;