MAIRA ALEXANDRA MOSQUERA PADILLA

VERONICA GIRALDO BARRIENTOS

LIZETH PALACIOS AMAYA

MARIANA POSADA PÉREZ

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;