José Maria MonteiroMestrado em Computação - UFC
Modelo Entidade-Relacionamento
Modelo de dados baseado na percepção do mundo real que consiste em um conjunto de objetos básicos chamados entidades e nos relacionamentos entre esses objetos.
Modelo Entidade-Relacionamento
Foi desenvolvido para facilitar o projeto de banco de dados.
Um esquema neste modelo especifica a estrutura lógica geral do banco de dados.
Entidades e Conjuntos-Entidade
Entidade
É um objeto que existe e é distinguível dos outros objetos. Ex: O Zé com CPF 87464553-8 é uma entidade, pois identifica unicamente uma pessoa particular no universo.
Conjunto-Entidade
Conjunto de entidades do mesmo “tipo”. Ex: O conjunto de todas as pessoas com conta num banco pode ser definido como o conjunto-entidade cliente.
Entidades e Conjuntos-Entidade
Uma entidade é representada por um conjunto de atributos.
Para cada atributo existe um conjunto de valores possíveis (Domínio).
Formalmente, um atributo é uma função que mapeia um conjunto de entidades em um domínio. Então, toda entidade é descrita por um conjunto de pares (atributo,valor), um para cada atributo do conjunto-entidade.
Entidades e Conjuntos-Entidade
Um banco de dados inclui uma coleção de conjuntos-entidade, cada qual contendo qualquer número de entidades do mesmo tipo.
Relacionamentos e Conjuntos-Relacionamento
Relacionamento
É uma associação entre diversas entidades. Ex: O Zé é um cliente com conta bancária número 401.
Conjunto-Relacionamento
Conjunto de relacionamentos do mesmo “tipo”. Ex: O conjunto de todos os relacionamentos entre clientes e suas respectivas contas.
Entidades e Conjuntos-Entidade
Formalmente, um conjunto-relacionamento, é a relação matemática em n 2 conjuntos-entidade. Se E1, E2 , ... , En são conjuntos-entidade então o conjunto-relacionamento R é um subconjunto de {(e1 , e2 , ... , en) e1 E1 , ... en En } onde (e1 , e2 , ... , en) é um relacionamento.
O papel que uma entidade exerce num relacionamento é chamada de função.
Entidades e Conjuntos-Entidade
Um relacionamento pode também ter atributos descritivos. Ex: A data pode ser um atributo do conjunto relacionamento ClienteConta, a fim de indicar a última data na qual o cliente acessou a sua conta.
Restrições de Mapeamento
Podemos definir certas restrições com as quais o conteúdo do banco de dados tem de estar de acordo.
Uma restrição importante é o mapeamento de cardinalidade, que expressa o número de entidades as quais outra entidade pode ser associada via um conjunto-relacionamento.
Restrições de Mapeamento
Um-para-um
Uma entidade em A está associada no máximo a uma entidade em B, e uma entidade em B está associada no máximo a uma entidade em A.
Um-para-muitos
Uma entidade em A está associada a qualquer número de entidades em B. Uma entidade em B, entretanto, está associada a no máximo uma entidade em A.
NB. Consideremos um conjunto-relacionamento R (Binário) entre os conjuntos-entidade A e B.
Restrições de Mapeamento
Muitos-para-um
Uma entidade em A está associada no máximo a uma entidade em B, e uma entidade em B está associada a qualquer número de entidades em A.
Muitos-para-muitos
Uma entidade em A está associada a qualquer número de entidades em B. Uma entidade em B está associada a qualquer número de entidades em A.
Restrições de Mapeamento
Se a existência da entidade x depende da existência da entidade y, então x é dito existente-dependente de y. A entidade Y é chamada de entidade dominante, e x é chamada de entidade subordinada.
A dependência de existência forma uma outra importante classe de restrições.
Conjunto-Entidade Fraco X Conjunto-Entidade Forte
Conjunto-Entidade Fraco
Quando o conjunto-entidade não tem atributos suficientes para formar uma chave primária.
Conjunto-Entidade Forte
Conjunto-entidade que possui uma chave primária.
Um membro de um conjunto-entidade forte é por definição uma entidade dominante, enquanto um membro de um conjunto-entidade fraco é uma entidade subordinada.
Diagrama Entidade-Relacionamento (DER)
A estrutura lógica geral de um banco de dados pode ser expressa graficamente por um diagrama E-R.
Retângulos : Representam Conjuntos-Entidades Fortes
Retângulo com Duplo Contorno: Representam Conjuntos-Entidades Fracos.
Elipses: Representam Atributos.
Losangos: Representam Conjuntos-Relacionamentos
Linhas: Ligam Atributos a Conjunto-Entidade, Atributos a Conjunto-Relacionamento e Conjunto-Entidade a Conjuntos-Relacionamentos.
Label sobre uma Linha: Representa Indicadores de Papéis.
Diagrama Entidade-Relacionamento (DER)
cliente conta
cliente conta
nome
CPF
rua
cidade numero
saldodata
DER - Generalização
conta
numero saldo
É UM
Conta-poupança Conta-corrente
taxa-juros bonus
trabalhofuncion. projeto
nomeid
numerohoras
maquinaria
usa
id
DER - Agregação
Não é possível expressar
relacionamentos entre relacionamentos.
DER - Agregação
trabalhofuncion. projeto
nomeid
numerohoras
maquinaria
usa
id
Agregação é uma abstração através da qual
relacionamentos são tratados como entidades.
Entidade de nível superior chamada trabalho.
Modelo Entidade-Relacionamento
Conclusões
O modelo de dados entidade-relacionamento fornece um alto grau de flexibilidade no projeto de um banco de dados para modelar um determinado empreendimento.
Modelo Entidade-Relacionamento
Exercícios
produto departamento
descriçãoid id
Diagrama Entidade-Relacionamento
valor
unidade
quant.
q.min.
q.max
descrição
loc. estoque
id descrição
Diagrama Entidade-Relacionamento
pessoa
nome endereço
É UM
fornecedor funcionário
nm. contatosalário
cliente
cpf
cgc
sexoe. civil
dt. nasc.
fonetp. pessoaé de
id
descrição
1N
tel contato
tel contatonm. contato
Diagrama Entidade-Relacionamento
pessoa
É UM
pessoa física Pessoa jurídica
É UM
cliente funcionário
É UM
fornecedor
nome endereço
fone
cpf
sexoe. civil
dt. nasc.cgc
razão
Diagrama Entidade-Relacionamento
funcionário departamentotrabalha 1N
cargo
ocupa
id descrição
salário base
1
N
horas
Diagrama Entidade-Relacionamento
produto loc. estoquearmazena NN
quant.
cliente comprafaz N1
Diagrama Entidade-Relacionamento
produto
inclui
N
N
id
desconto
quant
vl.unit.
fornecedor vendafaz N1
produto
inclui
N
N
id
desconto
quant
vl.unit.
Diagrama Entidade-Relacionamento
pessoa movimentaçãofaz N1
produto
inclui
N
N
id
desconto
quant
vl.unit.
Diagrama Entidade-Relacionamento
tipo
Mapeamento ER-Relacional
Primeiro Passo
produto
descriçãoid valorunidade quant. q.min. q.max
departamento
descriçãoid
local de estoque
descriçãoid
tipo pessoa
descriçãoid
pessoa
cpfid nomecgc e. civil sexo dt. nasc.
Mapeamento ER-Relacional
Primeiro Passo
funcionário
salárioid
cliente
nm contatoid
fornecedor
nm contatoid
compra
descontoid
venda
descontoid
Mapeamento ER-Relacional
Segundo Passo
Mapeamento ER-Relacional
Terceiro Passo
Mapeamento ER-Relacional
Quarto Passo
pessoa
cpfid nomecgc e. civil sexo dt. nasc. id tp. pessoa
funcionário
salárioid id depart. horas id cargo
descontoid
venda
descontoid
compra
id cliente
id fornecedor
Mapeamento ER-Relacional
Quinto Passo
estoque
id prod. id loc. est. quant.
compra itens
id compra id prod.. quant. vl. unit.
venda itens
id venda id prod.. quant. vl. unit.
Mapeamento ER-Relacional
Sexto Passo
endereço
id pessoa rua cep cidade bairro uf país
telefone
id pessoa ddd fone
Mapeamento ER-Relacional
Sétimo Passo
Microsoft SQL Server
Triggers (Gatilhos)
Um trigger é um tipo especial de stored procedure que é invocado (disparado) quando ocorre uma tentativa de modificação nos dados da tabela (relação) à qual ele está associado (vinculado). Isto ocorre quando modificações são feitas na tabela usando-se as cláusulas (operações) INSET, UPDATE ou DELETE.
Microsoft SQL Server
Triggers (Gatilhos)
Os triggers são usados para garantir regras de negócio e integridade dos dados, ou para ações complexas, tais como automaticamente atualizar um resumo dos dados.
Caso a execução de um trigger possa violar alguma restrição então ele não será executado.
São automaticamente disparados pelo SQL Server
Não podem ser executados diretamente por um usuário
Microsoft SQL Server
Triggers (Gatilhos)
Não podem ultrapassar 16 níveis
Cada tabela tem no máximo 3 triggers (para ações de INSERT, DELETE e UPDATE)
Triggers não podem ser criados sobre visões ou tabelas temporárias
Um trigger não pode incluir cláusulas SELECT que retornem resultado para o usuário
Microsoft SQL Server
Triggers (Gatilhos)
Não podem ser executados em um trigger: Todos os “CREATE” Todos os “DROP” Alter Table e Alter Database Select Into (Pois este comando cria uma tabela
temporária)
Microsoft SQL Server
Triggers (Gatilhos)
CREATE TRIGGER load_insert
ON loan
FOR INSERT
AS
UPDATE Copy
SET on_loan = ‘Y’
FROM copy, inserted
WHERE copy.isbn = inserted.isbn
AND copy.copy_no = inserted.copy_no
Microsoft SQL Server
Triggers (Gatilhos)
Quando um UPDATE é executado sobre uma tabela que possui um UPDATE TRIGGER, as tuplas originais são movidas para uma DELETE TABLE, enquanto as tuplas atualizadas (com os novos valores) são inseridas em uma INSERTED TABLE, só então a tabela começa a ser atualizada.
Microsoft SQL Server
Triggers (Gatilhos)
CREATE TRIGGER member_update
ON member
FOR UPDATE
AS
IF UPDATE (member_no)
BEGIN
RAISERROR(‘Tabela não pode ser atualizada’)
ROLLBACK TRANSACTION
END
Microsoft SQL Server
Triggers (Gatilhos)CREATE TRIGGER adult_insert
ON adult
FOR INSERT
AS
IF (SELECT COUNT(*)
FROM member, inserted
WHERE member.member_no = inserted.member_no) =0
BEGIN
PRINT ‘A atualização não pode ser executada’
PRINT ‘Nenhuma entidade em MEMBER para este ADULT’
ROLLBACK TRANSACTION
END
Microsoft SQL Server
Triggers (Gatilhos)
CREATE TRIGGER member_delete
ON member FOR DELETE
AS
IF (SELECT COUNT(*)
FROM loan, deleted
WHERE loan.member_no = deleted.member_no) > 0
BEGIN
PRINT ‘A transação não pode ser executada.’
PRINT ‘Este membro possui livro não devolvido’
ROLLBACK TRANSACTION
END
Microsoft SQL Server
Triggers (Gatilhos)
ELSE
DELETE reservation
FROM reservation, deleted
WHERE reservation.member_no = deleted.member_no
Microsoft SQL Server
Stored Procedures
São cláusulas SQL pré-compiladas e armazenadas no servidor
São invocadas por uma aplicação ou usuário e não automaticamente pelo SQL Server
Microsoft SQL Server
Stored Procedures
CREATE PROC count_loanlist
AS
SELECT COUNT(*) FROM loanlist
> EXEC count_loanlist
Microsoft SQL Server
Stored ProceduresCREATE PROCedure book_res
@member_no smallint,
@title normstring = ‘%’
AS
SELECT m.member_no, m.lastname, title.log_date, r.isbn
FROM member m, title t, item i, reservation r
WHERE m.member_no = r.member_no
AND r.isbn = i.isbn
AND i.title_no = t.title_no
AND t.title LIKE @title
AND m.member_no = @member_no
GO
Microsoft SQL Server
Stored Procedures
> EXEC book_res 7498, ‘clock%’
Microsoft SQL Server
Stored Procedures
CREATE PROCEDURE mathtutor
@m1 smallint,
@m2 smallint,
@result smallint OUTPUT
AS
SELECT @result = @m1 * @m2
GO
Microsoft SQL Server
Stored Procedures
DECLARE @guess smaliint
SELECT @guess = 50
EXECUTE mathtutor 5, 6, @guess OUTPUT
SELECT ‘O resultado é ‘, @guess
GO
Perguntas ?