Banco de dados

Boa tarde galera !
Sou estudante de ads, principiante em banco de dados e java, tenho um exercicio que pede para entregar um diagrama de banco de dados de uma empresa, onde alem de muitas outras coisas tenho que avisar de forma automática quando um produto estiver chegando perto do limite mínimo de quantidade no estoque. Ou seja Quando a quantidade do produto atingir o limite mínimo,um pedido de compra deve ser disparado de forma automática pelo sistema.
Como posso fazer isso ? Usando um trigger? e se utilizo um trigger como implementar ele em um diagrama ?
Estou muito perdida, por favor me ajudeem !!!

Então, que eu saiba, triggers não são representadas em um MER/DER, pois como o próprio nome indica, modela e diagrama entidades e seus relacionamentos, coisa que uma trigger não é. Isso pode ser feito usando uma linguagem de programação, em vez de trigger, embora seja mais trabalhoso. Poste o enunciado do exercício/trabalho na íntegra para melhor podermos ajudar, pois de acordo com o que tu passou, não se tem as informações a serem persistidas no BD.

Então…

Logo será o DER.

Subentende-se se tratar de uma trigger, mas trigger não faz parte de um mER e, portanto, não ‘aparece’ em um DER. Entendo disso que, você fará o sistema funcionar (implementará a trigger), mas só entregará o DER obtido.

Para você ter uma ideia das entidades envolvidas, preste atenção aos substantivos. Por exemplo:

1 - Empresa;
2 - Nota Fiscal;
3 - Consumidor/Cliente;
4 - Estoque;
5 - Item;
5.1 - Mercadoria;
5.2 - Produto;
6 - Fornecedor;
7 - Etc.

Com base nisso, você deve verificar quais dessas entidades realmente farão parte do MER e, consequentemente irão aparecer no DER. Daí basta modelar, criar a(s) trigger(s) e testar…

1 curtida

Entao no DER a ser entregue nao ficaria visivel a trigger? ela só aparece quando eu implementar o sistema no script?

Muito obrigada pelos seus comentarios, me ajudaram muito mesmo !!

Isso. Veja, como eu disse antes:

1 - MER = Modelo de Entidade-Relacionamento; a grosso modo pode ser entendido como: abstração que identifica as entidades (tabelas) de uma base de dados e como elas se relacionam (relacionamentos).
2 - DER = Diagrama de Entidade-Relacionamento: é a realização visual do modelo, ou seja, a implementação do modelo usando elementos gráficos.

Como se vê só se pode modelar e diagramar entidades (tabelas) e relacionamentos. Uma trigger por sua vez, é um tipo de procedimento armazenado (stored procedure) e, portanto, um recurso provido por SGBDs. Uma trigger permite realizar uma operação em um determinada tabela quanto um evento ocorrer em uma segunda tabela.
Exemplo:

CREATE DATABASE EstudoTrigger;
USE EstudoTrigger;

CREATE TABLE IF NOT EXISTS Produtos (
	codigo_produto INT NOT NULL AUTO_INCREMENT,
	referencia VARCHAR(5) NOT NULL,
	descricao VARCHAR(50) NOT NULL,
	estoque INT NOT NULL DEFAULT 0,
	CONSTRAINT pk_cod_produto PRIMARY KEY(codigo_produto)
);

CREATE TABLE IF NOT EXISTS ItensVenda (
	codigo_item_venda INT NOT NULL AUTO_INCREMENT,
	venda INT NOT NULL,
	produto INT NOT NULL,
	quantidade INT NOT NULL,
	CONSTRAINT pk_cod_item_venda PRIMARY KEY(codigo_item_venda)
);

DELIMITER $

CREATE TRIGGER efetuar_devolucao AFTER INSERT ON ItensVenda
FOR EACH ROW
BEGIN
	UPDATE Produtos SET estoque = estoque - NEW.quantidade 
	WHERE codigo_produto = NEW.produto;
END$

DELIMITER ;

Tendo dados na tabela Produtos, ao se inserir dados na tabela, depois de se inserir dados na tabela ItensVenda

AFTER INSERT ON ItensVenda

é disparado uma operação de atualização na tabela Produtos.

Para mais detalhes sobre trigger, sugiro a seguinte série de vídeos: Bóson Treinamentos - Curso de MySQL. Na aula 44 ele trata de triggers: MySQL - Triggers - Definição, Sintaxe e Criação - 44. Estou sugerindo esses vídeos porque a explanação é bem simples e tem exercícios.

1 curtida

Valeu, muito obrigada ! Estava super perdida, sua ajuda me deu uma luz no fim do tunel… :wink: