Académique Documents
Professionnel Documents
Culture Documents
Classificação de Atributos
Atributo Simples: não tem outros atributos aninhados, apenas o valor
Projeto de Chaves
Ex.: Nome
Atributo Composto: tem outros atributos aninhados (sub-atributos)
Ex.: Endereço ■ Chave: é um conjunto de um ou mais atributos que, tomados
coletivamente, permite-nos identificar unicamente uma entidade no
Atributo Monovalorado: um único valor para cada instância
Ex.: Nome conjunto-entidade
Atributo Multivalorado: mais de um valor para cada entidade
Ex.: Dependentes ■ Integridade de Entidade: Nenhum atributo que participe da chave de
um conjunto-entidade deve aceitar valores nulos
Atributo(s) Determinante(s) ou Chave: identifica unicamente cada entidade de um
conjunto-entidade
Ex.: Cod_Func
Aspectos Relevantes
Tipo de um Atributo: determina a natureza dos valores permitidos para um atributo
Ex.: inteiro, real, string, etc. ■ A questão fundamental do projeto de chaves é reduzir ao máximo os
Domínio de um Atributo: refina o conjunto de valores permitidos para o atributo efeitos de redundância
Ex.: Sexo {M, F}
■ A alteração dos valores de campos constituintes da chave primária ou
Atributo Derivado: o seu valor pode ser calculado a partir do valor de outro(s)
atributo(s) a remoção de uma entidade de um conjunto-entidade pode ocasionar
Ex.: idade (pode ser calculada a partir da data de nascimento) problemas de integridade referencial
Cod-Prod Preço
a1 d1
a2 d2
■ Entidade Fornecedor: Cod_Forn a3 d3
■ Entidade Produto: Cod_Prod
Aluno Disciplina
■ Relacionamento Pedido: Cod_Forn e Cod_Prod Matrícula
N N Projeto d1
Fornecedor d1
Pedido Produto
d2 d2
d3
Atributos de Relacionamento:
Peça
N N a1
Fornecedor Pedido Produto
a2
a3
Cod-Forn Cod-Forn Quantidade Cod-Prod Fornecedor Fornece
F1 P1
Funcionário
Funcionário F2
F1
F3 P2
F2
É Gerente É Gerenciado
F3 Funcionário Trabalha Projeto
1 N
N N
Gerencia Funcionário Trabalha Projeto
Gerencia
Quantidade
nome Cod-Proj nome
cod-forn
ender a1 d1
a2 d2
N N
Fornecedor Fornece Projeto a3 d3
Fornecedor Peça
Fornecer
Cod-Peça
N
a1 b1 b1
a1
a2 b2 b2
a3 b3 a2 b3
b4
Conjunto-Entidade A Conjunto-Entidade B
Conjunto-Entidade A Conjunto-Entidade B
1 1 1 N
Funcionário Gerencia Departamento Departamento Lotação Funcionário
Obs.: Chave estrangeira em uma das entidades. Obs.: Chave estrangeira na direção muitos.
O Modelo Entidade-Relacionamento Pag.: 19 O Modelo Entidade-Relacionamento Pag.: 20
c) Muitos-para-muitos: Uma entidade em A está associada a Participação Parcial: quando há um relacionamento entre
qualquer número de entidades em B, e uma entidade em B dois conjuntos-entidade A e B e alguma instância de
está associada a qualquer número de entidades em A. entidade de A pode existir sem se relacionar com nenhuma
instância de entidade de B.
a1 b1
a2 b2 F1
D1
a3 F2
b3
D2
F3
Conjunto-Entidade A Conjunto-Entidade B
Funcionário gerencia
Departamento
N N
Funcionário Trabalha Projeto
1 1
Funcionário Gerencia Departamento
(0,1) (0,1)
Obs.: Requer tabela extra para representa-lo.
O Modelo Entidade-Relacionamento Pag.: 21 O Modelo Entidade-Relacionamento Pag.: 22
Participação Total: quando todas as instâncias de uma Dependência Existencial e Entidades Fracas
entidade precisam estar associadas a alguma instância de
outra entidade através de um relacionamento. ■ Dependência existencial (ou de participação total) ocorre quando a
existência de uma determinada entidade está condicionada à existência
de uma outra entidade a ela relacionada.
D1
F1 1 N
F2 D2 Departamento trabalha Funcionário
F3 D3
Funcionário mantém Dependente ■ Uma entidade fraca não possui sequer identidade própria, sendo
sua chave primária composta pela chave estrangeira proveniente da
entidade “dona” concatenada a um identificador de si própria (que
pode repetir para diferentes instâncias da entidade dona).
1 N
Funcionário mantém Dependente 1
(1,1) (0,N) N
Funcionário mantém Dependente
■ Dependência Existencial N2
Peça
Este diagrama é equivalente ao anterior? E este diagrama? Em quais restrições difere dos anteriores?
Cod-Forn Cod-Proj
Cod-Forn Cod-Proj
Quantidade
N1’ N3
Fornecedor Fornece Projeto
pode
fornecer Cod-Peça usa
Cod-Peça
Peça
N2 N2’ Peça
Utiliza
N
Máquina
Generalização e Especialização
■ Usando Agregação
■ Existem casos em que um conjunto-entidade pode ser dividido em
categorias, cada qual com atributos específicos.
N Trabalha N Ex.:
Funcionário Projeto
Código
CIC
N
atributos e
Super-Classe relacionamentos total
genéricos parcial
Pessoa Pessoa
Motorista Secretária
Física Jurídica
Veículo
Pessoa Pessoa
exclusiva não-
d exclusiva
Terrestre Aquático
"!#$
%&
')(*
+,
.-""'/ 0+$
Funcionário Departamento
trabalha_para
cod_func nro_depto
nome_func nome_depto
sexo_func gerencia nro_func_depto
dta_nasc_func eh_gerente dta_ini_ger eh_gerenciado
salario_func
ender_func
controla
cidade_func
uf_func
supervisiona
Local
Projeto
eh_dependente cod_loc
nro_proj
nome_loc utiliza
nome_proj
cidade_loc
descr_proj
Dependente uf_loc
nro_depend
nome_depend
sexo_depend
dta_nasc_depend
parent_depend
12
12 ,
3)
.-""'2,0+$
3 4.0 1/
5 6&7 '/ 12
8
.-9:"'/ 0&$
Funcionário Departamento
trabalha_para FUNCIONARIO
cod_func nro_depto DEPARTAMENTO
COD_FUNC LongInteger
nome_func eh_gerente eh_gerenciado nome_depto NRO_DEPTO LongInteger
NRO_DEPTO = NRO_DEPTO NRO_DEPTO LongInteger
sexo_func nro_func_depto NOME_FUNC Text(25) NOME_DEPTO Text(20)
COD_FUNC = COD_FUNC NRO_DEPTO = NRO_DEPTO
NRO_FUNC_DEPTO LongInteger
dta_nasc_func SEXO_FUNC Text(1)
DTA_NASC_FUNC DateTime
salario_func SALARIO_FUNC Currency
ender_func ENDER_FUNC Text(35) GERENCIA
cidade_func CIDADE_FUNC Text(25) NRO_DEPTO LongInteger
gerencia UF_FUNC Text(2) COD_FUNC LongInteger
uf_func SUPERVISOR LongInteger DTA_INI_GER DateTime
supervisiona dta_ini_ger NRO_DEPTO = NRO_DEPTO
controla
eh_dependente SUPERVISOR = COD_FUNC
COD_FUNC = COD_FUNC
LOCAL PROJETO
COD_LOC Text(3) NRO_PROJ LongInteger
NOME_LOC Text(25) NRO_DEPTO LongInteger
Dependente CIDADE_LOC Text(25) NOME_PROJ Text(25)
nro_depend Local DEPENDENTE UF_LOC Text(2) DESCR_PROJ Memo
Projeto COD_FUNC LongInteger
nome_depend cod_loc NRO_DEPEND LongInteger
sexo_depend nome_loc nro_proj NOME_DEPEND Text(25)
utiliza SEXO_DEPEND Text(1)
UTILIZA
dta_nasc_depend cidade_loc nome_proj
DTA_NASC_DEPEND DateTime COD_LOC Text(3)
parent_depend uf_loc descr_proj PARENT_DEPEND Text(1)
COD_LOC = COD_LOC NRO_PROJ LongInteger NRO_PROJ = NRO_PROJ