-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Tempo de geração: 19/06/2026 às 19:22
-- Versão do servidor: 10.4.32-MariaDB
-- Versão do PHP: 8.2.12

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Banco de dados: `trabalhofinalana`
--

DELIMITER $$
--
-- Procedimentos
--
CREATE DEFINER=`root`@`localhost` PROCEDURE `verificaativocoletorana` (IN `p_idcoletora` INT, OUT `p_ativo` BOOLEAN)   BEGIN

SELECT ativo
INTO p_ativo
FROM coletorana
WHERE idcoletorana = p_idcoletora;

END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificaativomacana` (IN `p_idmac` VARCHAR(17), OUT `p_ativo` BOOLEAN)   BEGIN

SELECT ativo
INTO p_ativo
FROM macana
WHERE idmacana = p_idmac;

END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificaativosensorana` (IN `p_idsensor` INT, OUT `p_ativo` BOOLEAN)   BEGIN

SELECT ativo
INTO p_ativo
FROM sensorana
WHERE idsensorana = p_idsensor;

END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificalimitecoletorana` (IN `p_idcoletora` INT, OUT `p_contador` INT, OUT `p_limite` INT)   BEGIN

SELECT contador, limite
INTO p_contador, p_limite
FROM coletorana
WHERE idcoletorana = p_idcoletora;

END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificalimitemacana` (IN `p_idmac` VARCHAR(17), OUT `p_contador` INT, OUT `p_limite` INT)   BEGIN

SELECT contador, limite
INTO p_contador, p_limite
FROM macana
WHERE idmacana = p_idmac;

END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificalimitesensorana` (IN `p_idsensor` INT, OUT `p_contador` INT, OUT `p_limite` INT)   BEGIN

SELECT contador, limite
INTO p_contador, p_limite
FROM sensorana
WHERE idsensorana = p_idsensor;

END$$

DELIMITER ;

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

--
-- Estrutura para tabela `coletorana`
--

CREATE TABLE `coletorana` (
  `idcoletorana` 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;

--
-- Despejando dados para a tabela `coletorana`
--

INSERT INTO `coletorana` (`idcoletorana`, `nome`, `contador`, `ativo`, `limite`) VALUES
(1, 'Coletor Teste', 2, 1, 2),
(2, 'Coletor Alpha', 4, 1, 15),
(3, 'Coletor Beta', 7, 1, 20),
(4, 'Coletor Gamma', 0, 1, 10),
(5, 'Coletor Delta', 12, 1, 25);

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

--
-- Estrutura para tabela `leituraana`
--

CREATE TABLE `leituraana` (
  `idleituraana` int(10) UNSIGNED NOT NULL,
  `coletorana_idcoletorAna` int(10) UNSIGNED NOT NULL,
  `macana_idmacAna` varchar(17) NOT NULL,
  `sensorana_idsensorAna` 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;

--
-- Despejando dados para a tabela `leituraana`
--

INSERT INTO `leituraana` (`idleituraana`, `coletorana_idcoletorAna`, `macana_idmacAna`, `sensorana_idsensorAna`, `dataleitura`, `horaleitura`, `valor`) VALUES
(4, 1, '4', 1, '2026-06-19', '42:48:35', 11),
(6, 1, '2', 4, '2026-06-19', '14:45:38', 7),
(7, 1, '4', 2, '2026-06-19', '16:11:58', 7),
(9, 2, '2', 2, '2026-06-17', '42:48:35', 11);

--
-- Acionadores `leituraana`
--
DELIMITER $$
CREATE TRIGGER `TgDeleteLeituraana` AFTER DELETE ON `leituraana` FOR EACH ROW BEGIN

UPDATE macana
SET contador = contador - 1
WHERE idmacana = OLD.macana_idmacAna;

UPDATE coletorana
SET contador = contador - 1
WHERE idcoletorana = OLD.coletorana_idcoletorAna;

UPDATE sensorana
SET contador = contador - 1
WHERE idsensorana = OLD.sensorana_idsensorAna;

END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `TgInsertLeituraana` AFTER INSERT ON `leituraana` FOR EACH ROW BEGIN

UPDATE macana
SET contador = contador + 1
WHERE idmacana = NEW.macana_idmacAna;

UPDATE coletorana
SET contador = contador + 1
WHERE idcoletorana = NEW.coletorana_idcoletorAna;

UPDATE sensorana
SET contador = contador + 1
WHERE idsensorana = NEW.sensorana_idsensorAna;

END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_valida_coletorana` BEFORE INSERT ON `leituraana` FOR EACH ROW BEGIN
    DECLARE v_ativo TINYINT;
    DECLARE v_contador INT;
    DECLARE v_limite INT;

    SELECT ativo, contador, limite
    INTO v_ativo, v_contador, v_limite
    FROM coletorana
    WHERE idcoletorana = NEW.coletorana_idcoletorAna;

    IF v_ativo = 0 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Coletor inativo';
    END IF;

    IF v_contador >= v_limite THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Coletor atingiu o limite';
    END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_valida_macana` BEFORE INSERT ON `leituraana` FOR EACH ROW BEGIN
    DECLARE v_ativo TINYINT;
    DECLARE v_contador INT;
    DECLARE v_limite INT;

    SELECT ativo, contador, limite
    INTO v_ativo, v_contador, v_limite
    FROM macana
    WHERE idmacana = NEW.macana_idmacAna;

    IF v_ativo = 0 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Mac inativo';
    END IF;

    IF v_contador >= v_limite THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Mac atingiu o limite';
    END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_valida_sensorana` BEFORE INSERT ON `leituraana` FOR EACH ROW BEGIN
    DECLARE v_ativo TINYINT;
    DECLARE v_contador INT;
    DECLARE v_limite INT;

    SELECT ativo, contador, limite
    INTO v_ativo, v_contador, v_limite
    FROM sensorana
    WHERE idsensorana = NEW.sensorana_idsensorAna;

    IF v_ativo = 0 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Sensor inativo';
    END IF;

    IF v_contador >= v_limite THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Sensor atingiu o limite';
    END IF;
END
$$
DELIMITER ;

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

--
-- Estrutura para tabela `macana`
--

CREATE TABLE `macana` (
  `idmacana` 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;

--
-- Despejando dados para a tabela `macana`
--

INSERT INTO `macana` (`idmacana`, `nome`, `contador`, `ativo`, `limite`) VALUES
('1', 'Máquina Norte', 14, 1, 50),
('2', 'Máquina Sul', 10, 1, 40),
('3', 'Máquina Leste', 0, 0, 30),
('4', 'Máquina Oeste', 23, 1, 60);

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

--
-- Estrutura para tabela `sensorana`
--

CREATE TABLE `sensorana` (
  `idsensorana` 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;

--
-- Despejando dados para a tabela `sensorana`
--

INSERT INTO `sensorana` (`idsensorana`, `nome`, `ativo`, `limite`, `contador`, `unidade`, `sigla`) VALUES
(1, 'Sensor Teste', 1, 10, 1, 'Celsius', 'C'),
(2, 'Sensor Temperatura Externa', 1, 50, 14, 'Celsius', 'C'),
(3, 'Sensor Umidade Ambiente', 1, 100, 45, 'Percentual', '%'),
(4, 'Sensor Pressão Principal', 1, 200, 79, 'Pascal', 'Pa'),
(5, 'Sensor Fluxo de Água', 0, 150, 0, 'Litros/min', 'L/m');

--
-- Índices para tabelas despejadas
--

--
-- Índices de tabela `coletorana`
--
ALTER TABLE `coletorana`
  ADD PRIMARY KEY (`idcoletorana`);

--
-- Índices de tabela `leituraana`
--
ALTER TABLE `leituraana`
  ADD PRIMARY KEY (`idleituraana`),
  ADD KEY `leituraAluno_FKIndex1` (`coletorana_idcoletorAna`),
  ADD KEY `leituraAluno_FKIndex2` (`macana_idmacAna`),
  ADD KEY `leituraAluno_FKIndex3` (`sensorana_idsensorAna`);

--
-- Índices de tabela `macana`
--
ALTER TABLE `macana`
  ADD PRIMARY KEY (`idmacana`);

--
-- Índices de tabela `sensorana`
--
ALTER TABLE `sensorana`
  ADD PRIMARY KEY (`idsensorana`);

--
-- AUTO_INCREMENT para tabelas despejadas
--

--
-- AUTO_INCREMENT de tabela `coletorana`
--
ALTER TABLE `coletorana`
  MODIFY `idcoletorana` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT de tabela `leituraana`
--
ALTER TABLE `leituraana`
  MODIFY `idleituraana` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;

--
-- AUTO_INCREMENT de tabela `sensorana`
--
ALTER TABLE `sensorana`
  MODIFY `idsensorana` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

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

--
-- Restrições para tabelas `leituraana`
--
ALTER TABLE `leituraana`
  ADD CONSTRAINT `leituraana_ibfk_1` FOREIGN KEY (`coletorana_idcoletorAna`) REFERENCES `coletorana` (`idcoletorana`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituraana_ibfk_2` FOREIGN KEY (`macana_idmacAna`) REFERENCES `macana` (`idmacana`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituraana_ibfk_3` FOREIGN KEY (`sensorana_idsensorAna`) REFERENCES `sensorana` (`idsensorana`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
