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

START TRANSACTION;



--
-- Banco de dados: `bancoamanda`
--

DELIMITER $$
--
-- Procedimentos
--
CREATE DEFINER=`root`@`localhost` PROCEDURE `verificaativoamanda` (IN `$idmac` VARCHAR(17), OUT `$ativo` BOOLEAN)   BEGIN
SELECT ativo into $ativo
FROM mac WHERE idmac=$idmac;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificalimitealunoamanda` (IN `$idaluno` INT, OUT `$limitealuno` INT, OUT `$contadoraluno` INT)   begin
select limite into $limitealuno
from aluno
where idaluno+$idaluno;

select contador into $contadoraluno
from aluno
where idaluno=$idaluno;

end$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificalimitemacamanda` (IN `$idmac` VARCHAR(17), OUT `$limitemac` INT, OUT `$contadormac` INT)   begin
select limite into $limitemac
from mac
where idmac=$idmac;

select contador into $contadormac
from mac
where idmac=$idmac;

end$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificalimitesensoramanda` (IN `$idsensor` INT, OUT `$limitesensor` INT, OUT `$contadorsensor` INT)   begin
select limite into $limitesensor
from sensor
where idsensor=$idsensor;

select contador into $contadorsensor
from sensor
where idsensor=$idsensor;

end$$

DELIMITER ;

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

--
-- Estrutura para tabela `aluno`
--

CREATE TABLE `aluno` (
  `idaluno` int(10) UNSIGNED NOT NULL,
  `nome` varchar(45) DEFAULT NULL,
  `contador` int(10) UNSIGNED DEFAULT 0,
  `limite` int(10) UNSIGNED DEFAULT 200
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Despejando dados para a tabela `aluno`
--

INSERT INTO `aluno` (`idaluno`, `nome`, `contador`, `limite`) VALUES
(1, 'amanda siega', 5, 10);

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

--
-- Estrutura para tabela `leituraamanda`
--

CREATE TABLE `leituraamanda` (
  `idleituraamanda` int(10) UNSIGNED NOT NULL,
  `aluno_idaluno` int(10) UNSIGNED NOT NULL,
  `sensor_idsensor` int(10) UNSIGNED NOT NULL,
  `mac_idmac` varchar(17) NOT NULL,
  `dataleitura` date DEFAULT NULL,
  `horaleitura` time DEFAULT NULL,
  `valor` double DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Despejando dados para a tabela `leituraamanda`
--

INSERT INTO `leituraamanda` (`idleituraamanda`, `aluno_idaluno`, `sensor_idsensor`, `mac_idmac`, `dataleitura`, `horaleitura`, `valor`) VALUES
(1, 1, 1, '01:02:03:04', '2026-05-26', '16:15:36', 33),
(2, 1, 2, '38:2B:78:03:A5:7F', '2026-05-26', '16:15:36', 34),
(3, 1, 1, '01:02:03:04', '2026-05-26', '17:02:57', 33),
(4, 1, 1, '38:2B:78:03:A5:7F', '2026-06-10', '13:59:39', 123),
(5, 1, 2, ':50:E3:05:19:BA', '2026-06-10', '13:59:39', 123);

--
-- Acionadores `leituraamanda`
--
DELIMITER $$
CREATE TRIGGER `tgdeleteleituraamanda` AFTER DELETE ON `leituraamanda` FOR EACH ROW begin
update aluno
set contador=contador-1
where idaluno=old.aluno_idaluno;
update mac
set contador=contador-1
where idmac=old.mac._idmac;
update sensor
set contador=contador-1
where idsensor=old.sensor_idsensor;

end
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tginsertleituramanda` AFTER INSERT ON `leituraamanda` FOR EACH ROW BEGIN

UPDATE aluno
SET contador=contador+1
WHERE idaluno=new.aluno_idaluno;

UPDATE mac
SET contador=contador+1
WHERE idmac=new.mac_idmac;

UPDATE sensor
SET contador=contador+1
WHERE idsensor=new.sensor_idsensor;


END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgverificaativoamanda` BEFORE INSERT ON `leituraamanda` FOR EACH ROW BEGIN
CALL verificaativoamanda(new.mac_idmac,@$ativo);
IF @$ativo=0 then SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT= 'Esta placa está inativa';
END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgverificalimitealunoamanda` BEFORE INSERT ON `leituraamanda` FOR EACH ROW begin
CALL verificalimitealunoamanda(new.aluno_idaluno,@$limite,@$contador);
IF @$contador>=@$limite
THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT= 'Limite de gravações atingido!!';
END IF;
end
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgverificalimitemacamanda` BEFORE INSERT ON `leituraamanda` FOR EACH ROW begin
CALL verificalimitemacamanda(new.mac_idmac,@$limite,@$contador);
IF @$contador>=@$limite
THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT= 'Limite de gravações atingido!!';
END IF;
end
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgverificalimitesensoramanda` BEFORE INSERT ON `leituraamanda` FOR EACH ROW begin
CALL verificalimitesensoramanda(new.sensor_idsensor,@$limite,@$contador);
IF @$contador>=@$limite
THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT= 'Limite de gravações atingido!!';
END IF;
end
$$
DELIMITER ;

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

--
-- Estrutura para tabela `mac`
--

CREATE TABLE `mac` (
  `idmac` 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 200
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Despejando dados para a tabela `mac`
--

INSERT INTO `mac` (`idmac`, `nome`, `contador`, `ativo`, `limite`) VALUES
('01:02:03:04', 'Mac teste', 2, NULL, 200),
('38:2B:78:03:A5:7F', 'Murilo&Luiz', 2, 1, 200),
('38:2B:78:03:A8:38', 'Gabi&Julia', 0, 1, 200),
('38:2B:78:03:A9:1C', 'Gabi&Julia', 0, 1, 200),
('60:01:94:09:6B:B4', 'EspOled', 0, 1, 200),
('84:F3:EB:32:26:1D', 'Bruno&JoÃ£o', 0, 1, 200),
(':50:E3:05:19:BA', 'Mac aula do Miguel', 1, 1, 200),
('A8:48:FA:FF:AD:CD', 'Karol&Pedro', 0, 1, 200),
('B8:48:FA:FF:AD:CD', 'Mac aula do Miguel', 0, 1, 200),
('BC:DD:C2:55:C3:E8', 'Jollan', 0, 1, 200),
('BC:DD:C2:56:8B:1D', 'Karol&Pedro', 0, 1, 200),
('BC:ED:C2:56:8B:1D', 'Ana&Helo', 0, 1, 200),
('CC:50:E3:05:19:BA', 'JoÃ£o&Allan', 0, 1, 200),
('CC:50:E3:3B:FE:E9', 'Helo&Mar', 0, 1, 200),
('CC:50:E3:3C:25:ED', 'Ceci&Mi', 0, 1, 200),
('DC:4F:22:0D:61:3B', 'Helo&Ana', 0, 1, 200),
('E8:DB:84:98:B5:DA', 'Felipe&Artur', 0, 1, 200);

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

--
-- Estrutura para tabela `sensor`
--

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

--
-- Despejando dados para a tabela `sensor`
--

INSERT INTO `sensor` (`idsensor`, `nome`, `ativo`, `limite`, `contador`, `unidade`, `sigla`) VALUES
(1, 'LDR - luz', NULL, 200, 3, 'Luz', 'luz'),
(2, 'umidade solo', NULL, 200, 2, 'resistencia', 'res');

--
-- Índices para tabelas despejadas
--

--
-- Índices de tabela `aluno`
--
ALTER TABLE `aluno`
  ADD PRIMARY KEY (`idaluno`);

--
-- Índices de tabela `leituraamanda`
--
ALTER TABLE `leituraamanda`
  ADD PRIMARY KEY (`idleituraamanda`),
  ADD KEY `leituraamanda_FKIndex1` (`aluno_idaluno`),
  ADD KEY `leituraamanda_FKIndex2` (`mac_idmac`),
  ADD KEY `leituraamanda_FKIndex3` (`sensor_idsensor`);

--
-- Índices de tabela `mac`
--
ALTER TABLE `mac`
  ADD PRIMARY KEY (`idmac`);

--
-- Índices de tabela `sensor`
--
ALTER TABLE `sensor`
  ADD PRIMARY KEY (`idsensor`);

--
-- AUTO_INCREMENT para tabelas despejadas
--

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

--
-- AUTO_INCREMENT de tabela `leituraamanda`
--
ALTER TABLE `leituraamanda`
  MODIFY `idleituraamanda` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT de tabela `sensor`
--
ALTER TABLE `sensor`
  MODIFY `idsensor` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

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

--
-- Restrições para tabelas `leituraamanda`
--
ALTER TABLE `leituraamanda`
  ADD CONSTRAINT `leituraamanda_ibfk_1` FOREIGN KEY (`aluno_idaluno`) REFERENCES `aluno` (`idaluno`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituraamanda_ibfk_2` FOREIGN KEY (`mac_idmac`) REFERENCES `mac` (`idmac`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituraamanda_ibfk_3` FOREIGN KEY (`sensor_idsensor`) REFERENCES `sensor` (`idsensor`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;

