José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

53
José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento

Transcript of José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Page 1: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

José Maria MonteiroMestrado em Computação - UFC

Modelo Entidade-Relacionamento

Page 2: José Maria Monteiro Mestrado 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.

Page 3: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 4: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 5: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 6: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 7: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 8: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 9: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 10: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-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.

Page 11: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 12: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 13: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 14: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 15: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Diagrama Entidade-Relacionamento (DER)

cliente conta

cliente conta

nome

CPF

rua

cidade numero

saldodata

Page 16: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

DER - Generalização

conta

numero saldo

É UM

Conta-poupança Conta-corrente

taxa-juros bonus

Page 17: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

trabalhofuncion. projeto

nomeid

numerohoras

maquinaria

usa

id

DER - Agregação

Não é possível expressar

relacionamentos entre relacionamentos.

Page 18: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 19: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 20: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Modelo Entidade-Relacionamento

Exercícios

Page 21: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

produto departamento

descriçãoid id

Diagrama Entidade-Relacionamento

valor

unidade

quant.

q.min.

q.max

descrição

loc. estoque

id descrição

Page 22: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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

Page 23: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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

Page 24: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Diagrama Entidade-Relacionamento

funcionário departamentotrabalha 1N

cargo

ocupa

id descrição

salário base

1

N

horas

Page 25: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Diagrama Entidade-Relacionamento

produto loc. estoquearmazena NN

quant.

Page 26: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

cliente comprafaz N1

Diagrama Entidade-Relacionamento

produto

inclui

N

N

id

desconto

quant

vl.unit.

Page 27: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

fornecedor vendafaz N1

produto

inclui

N

N

id

desconto

quant

vl.unit.

Diagrama Entidade-Relacionamento

Page 28: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

pessoa movimentaçãofaz N1

produto

inclui

N

N

id

desconto

quant

vl.unit.

Diagrama Entidade-Relacionamento

tipo

Page 29: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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

Page 30: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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

Page 31: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Mapeamento ER-Relacional

Segundo Passo

Page 32: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Mapeamento ER-Relacional

Terceiro Passo

Page 33: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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

Page 34: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 35: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Mapeamento ER-Relacional

Sexto Passo

endereço

id pessoa rua cep cidade bairro uf país

telefone

id pessoa ddd fone

Page 36: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Mapeamento ER-Relacional

Sétimo Passo

Page 37: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 38: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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

Page 39: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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

Page 40: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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)

Page 41: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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

Page 42: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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.

Page 43: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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

Page 44: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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

Page 45: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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

Page 46: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Microsoft SQL Server

Triggers (Gatilhos)

ELSE

DELETE reservation

FROM reservation, deleted

WHERE reservation.member_no = deleted.member_no

Page 47: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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

Page 48: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Microsoft SQL Server

Stored Procedures

CREATE PROC count_loanlist

AS

SELECT COUNT(*) FROM loanlist

> EXEC count_loanlist

Page 49: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

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

Page 50: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Microsoft SQL Server

Stored Procedures

> EXEC book_res 7498, ‘clock%’

Page 51: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Microsoft SQL Server

Stored Procedures

CREATE PROCEDURE mathtutor

@m1 smallint,

@m2 smallint,

@result smallint OUTPUT

AS

SELECT @result = @m1 * @m2

GO

Page 52: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Microsoft SQL Server

Stored Procedures

DECLARE @guess smaliint

SELECT @guess = 50

EXECUTE mathtutor 5, 6, @guess OUTPUT

SELECT ‘O resultado é ‘, @guess

GO

Page 53: José Maria Monteiro Mestrado em Computação - UFC Modelo Entidade-Relacionamento.

Perguntas ?

[email protected]