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

START TRANSACTION;



--
-- Banco de dados: `bancomurilo`
--

DELIMITER $$
--
-- Procedimentos
--
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_delete_coletormurilo` (IN `p_id` INT)   BEGIN
    DELETE FROM coletormurilo
     WHERE idcoletormurilo = p_id;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_delete_leituramurilo` (IN `p_id` INT)   BEGIN
    DELETE FROM leituramurilo
     WHERE idleituramurilo = p_id;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_delete_macmurilo` (IN `p_idmacmurilo` VARCHAR(17))   BEGIN
    DELETE FROM macmurilo
     WHERE idmacmurilo = p_idmacmurilo;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_delete_sensormurilo` (IN `p_id` INT)   BEGIN
    DELETE FROM sensormurilo
     WHERE idsensormurilo = p_id;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insert_coletormurilo` (IN `p_nome` VARCHAR(45), IN `p_limite` INT)   BEGIN
    INSERT INTO coletormurilo (
        nome,
        contador,
        ativo,
        limite
    )
    VALUES (
        p_nome,
        0,
        1,
        p_limite
    );
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insert_leituramurilo` (IN `p_sensor` INT, IN `p_mac` VARCHAR(17), IN `p_coletor` INT, IN `p_data` DATE, IN `p_hora` TIME, IN `p_valor` INT)   BEGIN
    INSERT INTO leituramurilo (
        sensormurilo_idsensorMurilo,
        macmurilo_idmacMurilo,
        coletormurilo_idcoletorMurilo,
        dataleitura,
        horaleitura,
        valor
    )
    VALUES (
        p_sensor,
        p_mac,
        p_coletor,
        p_data,
        p_hora,
        p_valor
    );
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insert_macmurilo` (IN `p_idmacmurilo` VARCHAR(17), IN `p_nome` VARCHAR(45), IN `p_limite` INT)   BEGIN
    INSERT INTO macmurilo (
        idmacmurilo,
        nome,
        contador,
        ativo,
        limite
    )
    VALUES (
        p_idmacmurilo,
        p_nome,
        0,
        1,
        p_limite
    );
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insert_sensormurilo` (IN `p_nome` VARCHAR(45), IN `p_limite` INT, IN `p_unidade` VARCHAR(10), IN `p_sigla` VARCHAR(3))   BEGIN
    INSERT INTO sensormurilo (
        nome,
        ativo,
        limite,
        contador,
        unidade,
        sigla
    )
    VALUES (
        p_nome,
        1,
        p_limite,
        0,
        p_unidade,
        p_sigla
    );
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_update_coletormurilo` (IN `p_id` INT, IN `p_nome` VARCHAR(45), IN `p_ativo` BOOLEAN, IN `p_limite` INT)   BEGIN
    UPDATE coletormurilo
       SET nome = p_nome,
           ativo = p_ativo,
           limite = p_limite
     WHERE idcoletormurilo = p_id;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_update_leituramurilo` (IN `p_id` INT, IN `p_sensor` INT, IN `p_mac` VARCHAR(17), IN `p_coletor` INT, IN `p_data` DATE, IN `p_hora` TIME, IN `p_valor` INT)   BEGIN
    UPDATE leituramurilo
       SET sensormurilo_idsensorMurilo = p_sensor,
           macmurilo_idmacMurilo = p_mac,
           coletormurilo_idcoletorMurilo = p_coletor,
           dataleitura = p_data,
           horaleitura = p_hora,
           valor = p_valor
     WHERE idleituramurilo = p_id;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_update_macmurilo` (IN `p_idmacmurilo` VARCHAR(17), IN `p_nome` VARCHAR(45), IN `p_ativo` BOOLEAN, IN `p_limite` INT)   BEGIN
    UPDATE macmurilo
       SET nome = p_nome,
           ativo = p_ativo,
           limite = p_limite
     WHERE idmacmurilo = p_idmacmurilo;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_update_sensormurilo` (IN `p_id` INT, IN `p_nome` VARCHAR(45), IN `p_ativo` BOOLEAN, IN `p_limite` INT, IN `p_unidade` VARCHAR(10), IN `p_sigla` VARCHAR(3))   BEGIN
    UPDATE sensormurilo
       SET nome = p_nome,
           ativo = p_ativo,
           limite = p_limite,
           unidade = p_unidade,
           sigla = p_sigla
     WHERE idsensormurilo = p_id;
END$$

DELIMITER ;

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

--
-- Estrutura para tabela `coletormurilo`
--

CREATE TABLE `coletormurilo` (
  `idcoletormurilo` 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;

--
-- Acionadores `coletormurilo`
--
DELIMITER $$
CREATE TRIGGER `trg_coletor_ad` AFTER DELETE ON `coletormurilo` FOR EACH ROW BEGIN
    INSERT INTO log_coletor (
        idcoletor,
        nome,
        data_exclusao
    )
    VALUES (
        OLD.idcoletormurilo,
        OLD.nome,
        NOW()
    );
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_coletor_bi` BEFORE INSERT ON `coletormurilo` FOR EACH ROW BEGIN
    IF NEW.contador IS NULL THEN
        SET NEW.contador = 0;
    END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_coletor_bu` BEFORE UPDATE ON `coletormurilo` FOR EACH ROW BEGIN
    IF NEW.contador < 0 THEN
        SET NEW.contador = 0;
    END IF;
END
$$
DELIMITER ;

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

--
-- Estrutura para tabela `leituramurilo`
--

CREATE TABLE `leituramurilo` (
  `idleituramurilo` int(10) UNSIGNED NOT NULL,
  `sensormurilo_idsensorMurilo` int(10) UNSIGNED NOT NULL,
  `macmurilo_idmacMurilo` varchar(17) NOT NULL,
  `coletormurilo_idcoletorMurilo` int(10) UNSIGNED NOT NULL,
  `dataleitura` date DEFAULT NULL,
  `horaleitura` time DEFAULT NULL,
  `valor` int(10) UNSIGNED ZEROFILL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Acionadores `leituramurilo`
--
DELIMITER $$
CREATE TRIGGER `trg_leitura_ad` AFTER DELETE ON `leituramurilo` FOR EACH ROW BEGIN
    UPDATE macmurilo
       SET contador = contador - 1
     WHERE idmacmurilo = OLD.macmurilo_idmacMurilo;

    UPDATE sensormurilo
       SET contador = contador - 1
     WHERE idsensormurilo = OLD.sensormurilo_idsensorMurilo;

    UPDATE coletormurilo
       SET contador = contador - 1
     WHERE idcoletormurilo = OLD.coletormurilo_idcoletorMurilo;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_leitura_ai` AFTER INSERT ON `leituramurilo` FOR EACH ROW BEGIN
    UPDATE macmurilo
       SET contador = contador + 1
     WHERE idmacmurilo = NEW.macmurilo_idmacMurilo;

    UPDATE sensormurilo
       SET contador = contador + 1
     WHERE idsensormurilo = NEW.sensormurilo_idsensorMurilo;

    UPDATE coletormurilo
       SET contador = contador + 1
     WHERE idcoletormurilo = NEW.coletormurilo_idcoletorMurilo;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_leitura_au` AFTER UPDATE ON `leituramurilo` FOR EACH ROW BEGIN

    /* MAC */
    IF OLD.macmurilo_idmacMurilo <> NEW.macmurilo_idmacMurilo THEN

        UPDATE macmurilo
           SET contador = contador - 1
         WHERE idmacmurilo = OLD.macmurilo_idmacMurilo;

        UPDATE macmurilo
           SET contador = contador + 1
         WHERE idmacmurilo = NEW.macmurilo_idmacMurilo;

    END IF;

    /* SENSOR */
    IF OLD.sensormurilo_idsensorMurilo <> NEW.sensormurilo_idsensorMurilo THEN

        UPDATE sensormurilo
           SET contador = contador - 1
         WHERE idsensormurilo = OLD.sensormurilo_idsensorMurilo;

        UPDATE sensormurilo
           SET contador = contador + 1
         WHERE idsensormurilo = NEW.sensormurilo_idsensorMurilo;

    END IF;

    /* COLETOR */
    IF OLD.coletormurilo_idcoletorMurilo <> NEW.coletormurilo_idcoletorMurilo THEN

        UPDATE coletormurilo
           SET contador = contador - 1
         WHERE idcoletormurilo = OLD.coletormurilo_idcoletorMurilo;

        UPDATE coletormurilo
           SET contador = contador + 1
         WHERE idcoletormurilo = NEW.coletormurilo_idcoletorMurilo;

    END IF;

END
$$
DELIMITER ;

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

--
-- Estrutura para tabela `macmurilo`
--

CREATE TABLE `macmurilo` (
  `idmacmurilo` 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;

--
-- Acionadores `macmurilo`
--
DELIMITER $$
CREATE TRIGGER `trg_macmurilo_ad` AFTER DELETE ON `macmurilo` FOR EACH ROW BEGIN
    INSERT INTO log_macmurilo (
        idmacmurilo,
        nome,
        data_exclusao
    )
    VALUES (
        OLD.idmacmurilo,
        OLD.nome,
        NOW()
    );
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_macmurilo_bi` BEFORE INSERT ON `macmurilo` FOR EACH ROW BEGIN
    IF NEW.contador IS NULL THEN
        SET NEW.contador = 0;
    END IF;

    IF NEW.ativo IS NULL THEN
        SET NEW.ativo = 1;
    END IF;

    IF NEW.limite IS NULL THEN
        SET NEW.limite = 100;
    END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_macmurilo_bu` BEFORE UPDATE ON `macmurilo` FOR EACH ROW BEGIN
    IF NEW.contador < 0 THEN
        SET NEW.contador = 0;
    END IF;
END
$$
DELIMITER ;

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

--
-- Estrutura para tabela `sensormurilo`
--

CREATE TABLE `sensormurilo` (
  `idsensormurilo` 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;

--
-- Acionadores `sensormurilo`
--
DELIMITER $$
CREATE TRIGGER `trg_sensormurilo_ad` AFTER DELETE ON `sensormurilo` FOR EACH ROW BEGIN
    INSERT INTO log_sensormurilo (
        idsensormurilo,
        nome,
        data_exclusao
    )
    VALUES (
        OLD.idsensormurilo,
        OLD.nome,
        NOW()
    );
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_sensormurilo_bi` BEFORE INSERT ON `sensormurilo` FOR EACH ROW BEGIN
    IF NEW.contador IS NULL THEN
        SET NEW.contador = 0;
    END IF;

    IF NEW.ativo IS NULL THEN
        SET NEW.ativo = 1;
    END IF;

    IF NEW.limite IS NULL THEN
        SET NEW.limite = 100;
    END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_sensormurilo_bu` BEFORE UPDATE ON `sensormurilo` FOR EACH ROW BEGIN
    IF NEW.contador < 0 THEN
        SET NEW.contador = 0;
    END IF;

    IF NEW.limite < 0 THEN
        SET NEW.limite = 0;
    END IF;
END
$$
DELIMITER ;

--
-- Índices para tabelas despejadas
--

--
-- Índices de tabela `coletormurilo`
--
ALTER TABLE `coletormurilo`
  ADD PRIMARY KEY (`idcoletormurilo`);

--
-- Índices de tabela `leituramurilo`
--
ALTER TABLE `leituramurilo`
  ADD PRIMARY KEY (`idleituramurilo`),
  ADD KEY `leitura_FKIndex1` (`macmurilo_idmacMurilo`),
  ADD KEY `leitura_FKIndex2` (`sensormurilo_idsensorMurilo`),
  ADD KEY `leitura_FKIndex3` (`coletormurilo_idcoletorMurilo`);

--
-- Índices de tabela `macmurilo`
--
ALTER TABLE `macmurilo`
  ADD PRIMARY KEY (`idmacmurilo`);

--
-- Índices de tabela `sensormurilo`
--
ALTER TABLE `sensormurilo`
  ADD PRIMARY KEY (`idsensormurilo`);

--
-- AUTO_INCREMENT para tabelas despejadas
--

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

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

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

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

--
-- Restrições para tabelas `leituramurilo`
--
ALTER TABLE `leituramurilo`
  ADD CONSTRAINT `leituramurilo_ibfk_1` FOREIGN KEY (`macmurilo_idmacMurilo`) REFERENCES `macmurilo` (`idmacmurilo`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituramurilo_ibfk_2` FOREIGN KEY (`sensormurilo_idsensorMurilo`) REFERENCES `sensormurilo` (`idsensormurilo`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituramurilo_ibfk_3` FOREIGN KEY (`coletormurilo_idcoletorMurilo`) REFERENCES `coletormurilo` (`idcoletormurilo`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;

