Você está na página 1de 7

Modelo relacional

Cardinalidade (0,1) x (0,1)

 As entidades em um nível logico viram tabelas e seus atributos viram colunas.


 Os atributos identificadores viram chaves.

CP MODE MARC
NOME SEXO C_COD COD P_CPF
F LO A
OU
11 1A NoteBook Apple 111
ANA F 1A
1 2B Desktop Dell 222
22 3C Desktop IBM 333
BETO M 2B
2 4D NoteBook HP 444
33
LIA F 3C
3 Devido a cardinalidade ser (0,1) x (0,1) ... (obrigatoriedade, máximo),
44 podemos fazer nossa restrição de integridade referencial (chave
CAIO M NULL
4 estrangeira) tanto em uma tabela quanto em outra. Ou em uma, ou em
outra.

Cardinalidade (1,1) x (0,1) e (0,1) x (1,1)

Agora mudamos a regra de negócio, onde a cardinalidade mínima se tornou obrigatória. O computador só
entra no sistema de ele estiver obrigatoriamente associado a uma pessoa.

Nesse caso o melhor lugar para se colocar a chave estrangeira será na tabela computador.

CP MODE MARC
NOME SEXO COD P_CPF
F LO A
11 1A NoteBook Apple 111
ANA F
1 2B Desktop Dell 222
22 3C Desktop IBM 333
BETO M
2
33
LIA F
3
44
4
CAIO M 1
Nesse caso definiremos também o campo P_CPF como NOT NULL pra assim garantirmos a regra de negócio
onde a cardinalidade mínima é 1.

Outra solução para essa cardinalidade mínima é 1, ou seja, a nossa cardinalidade máxima é 1 para 1 e pelo
menos um dos dois lados da cardinalidade do relacionamento é obrigatório, fazemos a fusão de tabelas.

Tbl_pessoa_computador

CP
NOME SEXO COD MODELO MARCA
F
11
ANA F 1A NoteBook Apple
1
22
BETO M 2B Desktop Dell
2
33
LIA F 3C Desktop IBM
3
 A chave primaria vai ser quem
44
sempre CAIO M NULL NULL NULL aparece, nesse caso será
4
PESSOA, porque sua obrigatoriedade
é opcional, logo, ela poderá existir mesmo estando associada a ‘zero’ computadores.
 As mesmas regras se aplicam tanto em uma relação (1,1) x (0,1), quanto para (0,1) x (1,1). Claro que na
ordem inversa.

Cardinalidade (1,1) x (1,1)

Nesse caso podemos usar a chave estrangeira, porem estamos atrás de uma melhor solução que seria a fusão
de tabelas.

CP NOM SEX CO MARC


MODELO
F E O D A
11 NoteBoo
ANA F 1A Apple
1 k
22
BETO M 2B Desktop Dell
2
33
LIA F 3C Desktop IBM
3
44 NoteBoo
CAIO M 4D HD
4 k
 Para uma pessoa entrar, ela tem que estar obrigatoriamente associada a um computador.
 Por outro lado, para um computador entrar, obrigatoriamente tem que estar associado a uma pessoa.
 Ou seja, sempre todas as colunas do resultado da fusão das entidades.

2
Um erro comum nesse tipo de fusão é a nomeação das chaves primarias. Normalmente seriam usados o CPF
e o COD como chaves primarias, mas seria um erro.

Estaríamos ferindo assim um dos princípios das chaves primarias que seria a irredutibilidade. Como a PESSOA e o
COMPUTADOR só aparecem uma vez, eu vou ter como chave primaria o CPF ou o COD, mas não os dois juntos. Por
que basta o CPF ou o COD para ser chave primaria.

Cardinalidade (0,1) x (0,n)

Essa leitura seria:

 Uma pessoa pode ter 0 a n computadores.


 Um computador pode ter 0 a 1 pessoa relacionado a ele.

CP MODE MARC
NOME SEXO COD P_CPF
F LO A
11 1A NoteBook Apple 111
ANA F
1 2B Desktop Dell 222
22 3C Desktop IBM 333
BETO M
2 4D NoteBook HP NULL
33
LIA F
3 Quando tivermos um relacionamento máximo de 1 para n, o relacionamento vai
se 44 transformar em uma chave estrangeira que vai estar no lado da cardinalidade n
CAIO M
do 4 relacionamento. Essa seria a nossa generalização da regra.

Cardinalidade (1,1) x (0,n)

Nesse caso um computador pode estar associado a uma pessoa e no máximo a uma pessoa, então todo
computador que entrar em nossa base de dados obrigatoriamente tem que estar relacionado a uma pessoa

CP MODE MARC
NOME SEXO COD P_CPF
F LO A
11 1A NoteBook Apple 111
ANA F
1 2B Desktop Dell 222
22 3C Desktop IBM 333
BETO M
2 4D NoteBook HP NULL
33
LIA F
3
44
CAIO M
3
4
Esse campo não pode ter valor NULL, por que todo computador tem que um CPF associado e a restrição de
integridade referencial vai obrigar a existência desse CPF na chave primaria de PESSOA. Então vamos acrescentar a
restrição NOT NULL a esse campo.

Vamos acrescentar um atributo ao relacionamento (1,1) x (0,n)

CO MARC P_CP DATA


MODELO
D A F
NoteBoo 01-jan-2011
1A Apple 111
k
2B Desktop Dell 222 02-fev-2018
03-mar-
3C Desktop IBM 333
2013
NoteBoo 04-abr-2014
4D HP 222
k

 Quando tivermos um relacionamento máximo de 1 para n, o relacionamento vai se transformar em


uma chave estrangeira que vai estar no lado da cardinalidade n do relacionamento.
 Quanto temos um atributo do relacionamento, esse atributo acompanha a chave estrangeira.

Relacionamento identificador – entidade fraca (0,1) x (0,n)

CP NOM P_CPF
NOME SEXO NrSeq
F E
11 1 Igor 111
ANA F
1 2 Maria 111
22 1 André 333
BETO M
2 1 João 222
33
LIA F
3
44
CAIO M
4 4
 Embora o NrSeq esteja marcado como atributo identificador, ele não é capaz de diferenciar um registro
dos demais por que na verdade ele se repete. Por isso dizemos que esse relacionamento é um
relacionamento identificador, por que o NrSeq não é capaz de identificar sozinho a unicidade dá
ocorrência na tabela.
 Então a nossa chave estrangeira vai compor também a chave primaria, criando uma chave primaria
composta.
 Nesse caso a entidade DEPENDENTE é chamada de entidade fraca por depender da existência da
entidade PESSOA.
 NrSeq é chamada de uma chave parcial, ela não é capaz de diferenciar os registros sozinha
necessitando do auxílio da chave estrangeira.
 A chave primaria é composta de NrSeq mais P_CPF.

Auto Relacionamento
Normalmente um relacionamento associa entidades diferentes. Há um caso especial em que há um
relacionamento entre a mesma entidade.

Nesta situação, surge o conceito de “PAPEL” que identificara o relacionamento

CP P_CPF_Ger
NOME SEXO
F
11 Sem repetições (unique)
ANA F
1
22 111
BETO M
2
33 222
 Nesse caso a chave LIA F estrangeira P_CPF_Ger não vai
3
poder ter repetições, devido ao relacionamento máximo
44 333
de 1 para 1 (0,1) x (0,1). CAIO M
4

A leitura seria.

 Uma pessoa pode ser gerente de n funcionário.


 Um funcionário pode ter apenas um gerente.

5
CP P_CPF_Ger
NOME SEXO
F
Pode ter repetições
11
ANA F
1
22 111
BETO M
2
33 111
LIA F
3
44 333
CAIO M
4

Nesse caso temos o relacionamento muitos para muitos (n x n) e nesse relacionamento não podemos criar chave
estrangeira, temos que criar uma tabela a parte.

CP P_CPF_Su
NOME SEXO P_CPF_Ger
F b
11 111 222
ANA F
1 111 333
22 222 333
BETO M
2 333 444
33 Temo um auto relacionamento onde foi preciso criar uma tabela a parte,
LIA F
3
composta de duas chaves estrangeiras que apontam para a mesma chave
44
CAIO M primaria.
4

RECAPITULANDO....

Obrigatoriedade (opcional = 0 / obrigatório = 1) Cardinalidade (máximo de 1 / máximo de


n = muitos)

(1,1)

6
7