Você está na página 1de 26

Curso Superior de Banco de Dados

Disciplina: Arquitetura e Modelagem de Banco de Dados

Prof. Emanuel Mineda Carneiro


emanuel.mineda@fatec.sp.gov.br
São José dos Campos - SP
Roteiro
• Auto-relacionamento
• Relacionamento Ternário
• Entidade Fraca
• Generalização/Especialização
• Entidade Associativa
• Aspecto Temporal
• Exemplos

Banco de Dados – Prof. Emanuel 2/26


Auto-relacionamento
• Ocorre quando uma entidade se relaciona consigo mesma
• Geralmente representa uma hierarquia
• A entidade pode assumir papéis diferentes em cada lado do
relacionamento
• Aceita apenas cardinalidade mínima 0 (senão provocaria um loop
infinito)

Banco de Dados – Prof. Emanuel 3/26


Auto-relacionamento
• Exemplo de especificação:
• “Um funcionário possui um PID único, um nome e um ramal. Um
funcionário pode chefiar vários outros funcionários. Um funcionário pode
possuir, no máximo, um único chefe."

• Leitura: Como Chefe, um Funcionário pode possuir vários Subordinados.


Como Subordinado, um Funcionário pode possuir, no máximo, um único
Chefe.

Banco de Dados – Prof. Emanuel 4/26


Auto-relacionamento
• Para uma situação onde um dado funcionário “f1” chefia dois
outros funcionários “f2” e “f3”, o diagrama de ocorrências seria:
Chefiar
Funcionario

f1
f1, f2
f2
f1, f3
f3

Banco de Dados – Prof. Emanuel 5/26


Auto-relacionamento
• Outro exemplo de especificação:
• “Um usuário da rede social pode ser amigo de outros usuários. É preciso
armazenar a data de aceitação do pedido de amizade."

• Nesse caso existe apenas uma leitura: Um Usuário pode ser amigo de
vários Usuários.

Banco de Dados – Prof. Emanuel 6/26


Relacionamento Ternário
• Envolve três entidades que se relacionam entre si

• É preciso fazer 3 leituras diferentes (e todas elas devem fazer


sentido). No exemplo:
• Um vendedor pode vender vários produtos de um fabricante
• Um produto de um determinado fabricante pode ser vendido por vários
vendedores
• Um vendedor pode vender um mesmo produto de vários fabricantes
diferentes

Banco de Dados – Prof. Emanuel 7/26


Entidade Fraca
• Entidades fracas não existem sem relacionamento e o utilizam
como parte de seu identificador
• Relacionamento Identificador (mais grosso)

• No exemplo:
• O atributo “Nome” não é suficiente como identificador de departamento,
porque mais de uma empresa pode possuir um departamento de mesmo
nome (Exemplo: RH)
• Como um departamento sempre se relaciona com uma, e somente uma,
empresa, ele pode utilizar os atributos identificadores de empresa para
compor seu identificador
• Identificador de Departamento agora é composto por “Nome” e “CNPJ”

Banco de Dados – Prof. Emanuel 8/26


Entidade Fraca
• Outro exemplo:

• Nesse caso, tanto Cliente como Funcionário possuem E-mail como


identificador.
• Todo Cliente/Funcionário é obrigatoriamente um Usuário.

Banco de Dados – Prof. Emanuel 9/26


Entidade Fraca
• Todo relacionamento pode ser representado como uma entidade
fraca:

Banco de Dados – Prof. Emanuel 10/26


Generalização/Especialização
• Representada por um triângulo que liga uma entidade pai a suas
entidades filhas, por meio de linhas
• Permite que uma entidade filha herde as propriedades e
identificadores da entidade pai
• Ocorre quando uma entidade pode assumir diferentes papéis e
cada papel possui características distintas
• Exemplo de especificação:
• “Um funcionário possui um PID único e um nome. Um funcionário pode ser
um coordenador ou um operador. Um coordenador possui um ramal. Um
coordenador coordena vários operadores. Um operador opera uma
máquina. Uma máquina possui um código único e um modelo. Uma
máquina pode ser operada por vários operadores.”

Banco de Dados – Prof. Emanuel 11/26


Generalização/Especialização
• Exemplo de especificação (cont.):

Banco de Dados – Prof. Emanuel 12/26


Generalização/Especialização
• Exemplo de especificação (cont.):

Banco de Dados – Prof. Emanuel 13/26


Generalização/Especialização
• Seguindo a ideia, o exemplo do Usuário/Cliente/Funcionário fica:

• É apenas uma forma simplificada de mostrar a mesma coisa!

Banco de Dados – Prof. Emanuel 14/26


Entidade Associativa
• Representada por um relacionamento envolvido por um retângulo
• Utilizada quando é necessário criar um relacionamento com um
relacionamento
• Exemplo:

Banco de Dados – Prof. Emanuel 15/26


Entidade Associativa
• Pode ser representada como uma entidade fraca:

Banco de Dados – Prof. Emanuel 16/26


Aspecto Temporal
• O modelo deve refletir o aspecto temporal
• Certos BDs exigem registros sobre alterações em atributos ou
relacionamentos
• Caso seja necessário manter um histórico sobre o valor de um
atributo, ele pode ser modelado como uma entidade fraca
• Exemplo de especificação:
• "Um produto, identificado por um id, possui nome, descrição e preço. Deseja-
se registrar o histórico de preços do produto."

Banco de Dados – Prof. Emanuel 17/26


Aspecto Temporal
• Exemplo de especificação:
• "Um produto, identificado por um id, possui nome, descrição e preço.
Deseja-se registrar o histórico de preços do produto."

• Com esse modelo é possível cadastrar diferentes preços para um mesmo


produto. O preço atual seria aquele com a maior data.

Banco de Dados – Prof. Emanuel 18/26


Aspecto Temporal
• Se um relacionamento entre as mesmas instâncias de duas
entidades pode ocorrer repetidas vezes em momentos diferentes,
pode-se acrescentar um atributo identificador ao relacionamento
• Exemplo de especificação:
• “Uma máquina pode ser operada várias vezes pelo mesmo operador, em
diferentes datas/horas.“

Banco de Dados – Prof. Emanuel 19/26


Aspecto Temporal
• Exemplo de especificação (cont.):
• Um relacionamento sem identificador permite uma única associação entre
as instâncias das entidades que ele une. Um identificador permite
diferenciar cada associação
Operador Opera Máquina

148 148, 1, 03/05/2018 10:00 1

148, 1, 03/05/2018 17:00

172 172, 2, 04/05/2018 09:00 2

Banco de Dados – Prof. Emanuel 20/26


Exemplos
• Exemplo 1:
• “Uma gerente deseja gerenciar seus compromissos. Um Compromisso,
identificado por um id, possui nome, observação e data/hora. Um
Compromisso pode possuir vários Participantes, ou nenhum. Um
Participante, identificado por um nome, possui uma observação e um
telefone de contato. Participantes podem estar associados a vários
compromissos, ou nenhum. Compromissos podem ser Presenciais ou por
Videoconferência. Compromissos Presenciais possuem um endereço físico.
Compromissos por Videoconferência possuem um endereço eletrônico,
uma chave de acesso e um indicador de privacidade (que indica se a sessão
é pública ou privada). Deseja-se também armazenar Observações dos
Participantes. Cada Participante pode fazer várias Observações, ou
nenhuma, durante um Compromisso. Uma Observação, identificadas por
um id, contém apenas um conteúdo. Uma dada Observação sempre
pertence a um único Participante, em um único Compromisso.”

Banco de Dados – Prof. Emanuel 21/26


Exemplos
• Exemplo 1 (cont.):

Banco de Dados – Prof. Emanuel 22/26


Exemplos
• Exemplo 2:
• “Deseja-se controlar as vendas de um armazém. Uma venda identificada
por um número de nota fiscal, possui data/hora e número de caixa. Uma
venda possui vários produtos, em diferentes quantidades. Um produto
possui código, nome e preço.”

Banco de Dados – Prof. Emanuel 23/26


Exemplos
• Exemplo 2 (cont.):

Banco de Dados – Prof. Emanuel 24/26


Bibliografia
• HEUSER, C. A. Projeto de Banco de Dados. 6.ed. Bookman, 2009

Banco de Dados – Prof. Emanuel 25/26


Dúvidas?

Banco de Dados – Prof. Emanuel 26/26

Você também pode gostar