-- https://www.phpmyadmin.net/
--
-- Tempo de geração: 12/06/2026 às 19:18
-- Versão do servidor: 10.4.32-MariaDB
-- Versão do PHP: 8.2.12

START TRANSACTION;



--
-- Banco de dados: `trabalhofinallucas`
--

DELIMITER $$
--
-- Procedimentos
--
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_inserir_leitura` (IN `p_sensor` INT, IN `p_mac` VARCHAR(17), IN `p_coletor` INT, IN `p_valor` INT)   BEGIN
    INSERT INTO leituralucas(
        sensorlucas_idsensorlucas,
        maclucas_idmaclucas,
        coletorlucas_idcoletorlucas,
        dataleitura,
        horaleitura,
        valor
    )
    VALUES(
        p_sensor,
        p_mac,
        p_coletor,
        CURDATE(),
        CURTIME(),
        p_valor
    );
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_listar_leituras` ()   BEGIN
    SELECT *
    FROM leituralucas
    ORDER BY idleituralucas DESC;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_media_sensor` (IN `p_sensor` INT)   BEGIN
    SELECT
        AVG(valor) AS media
    FROM leituralucas
    WHERE sensorlucas_idsensorlucas = p_sensor;
END$$

DELIMITER ;

-- --------------------------------------------------------

--
-- Estrutura para tabela `coletorlucas`
--

CREATE TABLE `coletorlucas` (
  `idcoletorlucas` int(10) UNSIGNED NOT NULL,
  `nome` varchar(45) DEFAULT NULL,
  `contador` int(10) UNSIGNED DEFAULT 0,
  `ativo` tinyint(1) DEFAULT 1,
  `limite` int(10) UNSIGNED DEFAULT 100
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Estrutura para tabela `leituralucas`
--

CREATE TABLE `leituralucas` (
  `idleituralucas` int(10) UNSIGNED NOT NULL,
  `sensorlucas_idsensorlucas` int(10) UNSIGNED NOT NULL,
  `maclucas_idmaclucas` varchar(17) NOT NULL,
  `coletorlucas_idcoletorlucas` int(10) UNSIGNED NOT NULL,
  `dataleitura` date DEFAULT NULL,
  `horaleitura` time DEFAULT NULL,
  `valor` int(10) UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Acionadores `leituralucas`
--
DELIMITER $$
CREATE TRIGGER `trg_coletor_contador` AFTER INSERT ON `leituralucas` FOR EACH ROW BEGIN
    UPDATE coletorlucas
    SET contador = contador + 1
    WHERE idcoletorlucas = NEW.coletorlucas_idcoletorlucas;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_limite_sensor` AFTER INSERT ON `leituralucas` FOR EACH ROW BEGIN
    UPDATE sensorlucas
    SET ativo = 0
    WHERE idsensorlucas = NEW.sensorlucas_idsensorlucas
    AND contador >= limite;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_mac_contador` AFTER INSERT ON `leituralucas` FOR EACH ROW BEGIN
    UPDATE maclucas
    SET contador = contador + 1
    WHERE idmaclucas = NEW.maclucas_idmaclucas;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_sensor_contador` AFTER INSERT ON `leituralucas` FOR EACH ROW BEGIN
    UPDATE sensorlucas
    SET contador = contador + 1
    WHERE idsensorlucas = NEW.sensorlucas_idsensorlucas;
END
$$
DELIMITER ;

-- --------------------------------------------------------

--
-- Estrutura para tabela `maclucas`
--

CREATE TABLE `maclucas` (
  `idmaclucas` varchar(17) NOT NULL,
  `nome` varchar(45) DEFAULT NULL,
  `contador` int(10) UNSIGNED DEFAULT 0,
  `ativo` tinyint(1) DEFAULT 1,
  `limite` int(10) UNSIGNED DEFAULT 100
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- --------------------------------------------------------

--
-- Estrutura para tabela `sensorlucas`
--

CREATE TABLE `sensorlucas` (
  `idsensorlucas` int(10) UNSIGNED NOT NULL,
  `nome` varchar(45) DEFAULT NULL,
  `ativo` tinyint(1) DEFAULT 1,
  `limite` int(10) UNSIGNED DEFAULT 100,
  `contador` int(10) UNSIGNED DEFAULT 0,
  `unidade` varchar(10) DEFAULT NULL,
  `sigla` varchar(3) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Índices para tabelas despejadas
--

--
-- Índices de tabela `coletorlucas`
--
ALTER TABLE `coletorlucas`
  ADD PRIMARY KEY (`idcoletorlucas`);

--
-- Índices de tabela `leituralucas`
--
ALTER TABLE `leituralucas`
  ADD PRIMARY KEY (`idleituralucas`),
  ADD KEY `leitura_FKIndex1` (`maclucas_idmaclucas`),
  ADD KEY `leitura_FKIndex2` (`sensorlucas_idsensorlucas`),
  ADD KEY `leitura_FKIndex3` (`coletorlucas_idcoletorlucas`);

--
-- Índices de tabela `maclucas`
--
ALTER TABLE `maclucas`
  ADD PRIMARY KEY (`idmaclucas`);

--
-- Índices de tabela `sensorlucas`
--
ALTER TABLE `sensorlucas`
  ADD PRIMARY KEY (`idsensorlucas`);

--
-- AUTO_INCREMENT para tabelas despejadas
--

--
-- AUTO_INCREMENT de tabela `coletorlucas`
--
ALTER TABLE `coletorlucas`
  MODIFY `idcoletorlucas` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de tabela `leituralucas`
--
ALTER TABLE `leituralucas`
  MODIFY `idleituralucas` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT de tabela `sensorlucas`
--
ALTER TABLE `sensorlucas`
  MODIFY `idsensorlucas` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- Restrições para tabelas despejadas
--

--
-- Restrições para tabelas `leituralucas`
--
ALTER TABLE `leituralucas`
  ADD CONSTRAINT `leituralucas_ibfk_1` FOREIGN KEY (`maclucas_idmaclucas`) REFERENCES `maclucas` (`idmaclucas`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituralucas_ibfk_2` FOREIGN KEY (`sensorlucas_idsensorlucas`) REFERENCES `sensorlucas` (`idsensorlucas`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituralucas_ibfk_3` FOREIGN KEY (`coletorlucas_idcoletorlucas`) REFERENCES `coletorlucas` (`idcoletorlucas`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;

