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

Post on 17-Apr-2015

113 views 1 download

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

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 ?

Zemaria@lia.ufc.br