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

START TRANSACTION;



--
-- Banco de dados: `projetofinal`
--

DELIMITER $$
--
-- Procedimentos
--
CREATE DEFINER=`root`@`localhost` PROCEDURE `verificaativomacjulia` (IN `$idmac` VARCHAR(17), OUT `$ativo` TINYINT)   BEGIN
SELECT ativo into $ativo from mac
Where idmac=$idmac;
End$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificaativomajulia` (IN `p_idmajulia` VARCHAR(17))   BEGIN
    DECLARE v_ativo BOOL;

    SELECT ativo
    INTO v_ativo
    FROM majulia
    WHERE idmajulia = p_idmajulia;

    IF v_ativo = FALSE THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Maquina inativa';
    END IF;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificaativosensorjulia` (IN `p_idsensor` INT)   BEGIN
    DECLARE v_ativo BOOL;

    SELECT ativo
    INTO v_ativo
    FROM sensorjulia
    WHERE idsensorjulia = p_idsensor;

    IF v_ativo = FALSE THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Sensor inativo';
    END IF;
END$$

DELIMITER ;

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

--
-- Estrutura para tabela `coletorjulia`
--

CREATE TABLE `coletorjulia` (
  `idcoletorjulia` 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 `leiturajulia`
--

CREATE TABLE `leiturajulia` (
  `idleiturajulia` int(10) UNSIGNED NOT NULL,
  `sensorjulia_idsensorjulia` int(10) UNSIGNED NOT NULL,
  `coletorjulia_idcoletorjulia` int(10) UNSIGNED NOT NULL,
  `macjulia_idmacjulia` varchar(17) 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 `leiturajulia`
--
DELIMITER $$
CREATE TRIGGER `tgdeletejulia` AFTER DELETE ON `leiturajulia` FOR EACH ROW BEGIN
UPDATE macjulia
SET contador=contador-1
WHERE 
idmacjulia=old.macjulia_idmacjulia;
UPDATE macjulia
  SET contador=contador-1
  WHERE idmacjulia=OLD.macjulia_idmacjulia;

  UPDATE coletorjulia
  SET contador=contador-1
  WHERE idcoletorjulia=OLD.coletorjulia_idcoletorjulia;

  UPDATE sensorjulia
  SET contador=contador-1
  WHERE idsensorjulia=OLD.sensorjulia_idsensorjulia;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tginsertleiturajulia` AFTER INSERT ON `leiturajulia` FOR EACH ROW BEGIN
UPDATE macjulia
SET contador=contador+1
WHERE idmacjulia=new.macjulia_idmacjulia;

UPDATE macjulia
  SET contador=contador+1
  WHERE idmacjulia=NEW.macjulia_idmacjulia;

  UPDATE coletorjulia
  SET contador=contador+1
  WHERE idcoletorjulia=NEW.coletorjulia_idcoletorjulia;

  UPDATE sensorjulia
  SET contador=contador+1
  WHERE idsensorjulia=NEW.sensorjulia_idsensorjulia;
  
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgverificaativojulia` BEFORE INSERT ON `leiturajulia` FOR EACH ROW BEGIN

    CALL validaativo(
        NEW.macjulia_idmacjulia,
        NEW.sensorjulia_idsensorjulia,
        NEW.coletorjulia_idcoletorjulia,
        @ativomac,
        @ativosensor,
        @ativocoletor
    );

    IF @ativomac = 0 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Mac inativa';
    END IF;

    IF @ativosensor = 0 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Sensor inativo';
    END IF;

    IF @ativocoletor = 0 THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Coletor inativo';
    END IF;

END
$$
DELIMITER ;

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

--
-- Estrutura para tabela `macjulia`
--

CREATE TABLE `macjulia` (
  `idmacjulia` 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 `sensorjulia`
--

CREATE TABLE `sensorjulia` (
  `idsensorjulia` 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 `coletorjulia`
--
ALTER TABLE `coletorjulia`
  ADD PRIMARY KEY (`idcoletorjulia`);

--
-- Índices de tabela `leiturajulia`
--
ALTER TABLE `leiturajulia`
  ADD PRIMARY KEY (`idleiturajulia`),
  ADD KEY `leitura_FKIndex1` (`macjulia_idmacjulia`),
  ADD KEY `leitura_FKIndex2` (`sensorjulia_idsensorjulia`),
  ADD KEY `leitura_FKIndex3` (`coletorjulia_idcoletorjulia`);

--
-- Índices de tabela `macjulia`
--
ALTER TABLE `macjulia`
  ADD PRIMARY KEY (`idmacjulia`);

--
-- Índices de tabela `sensorjulia`
--
ALTER TABLE `sensorjulia`
  ADD PRIMARY KEY (`idsensorjulia`);

--
-- AUTO_INCREMENT para tabelas despejadas
--

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

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

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

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

--
-- Restrições para tabelas `leiturajulia`
--
ALTER TABLE `leiturajulia`
  ADD CONSTRAINT `leiturajulia_ibfk_1` FOREIGN KEY (`macjulia_idmacjulia`) REFERENCES `macjulia` (`idmacjulia`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leiturajulia_ibfk_2` FOREIGN KEY (`sensorjulia_idsensorjulia`) REFERENCES `sensorjulia` (`idsensorjulia`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leiturajulia_ibfk_3` FOREIGN KEY (`coletorjulia_idcoletorjulia`) REFERENCES `coletorjulia` (`idcoletorjulia`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;

