MODELAGEM CONCEITUAL DE
SISTEMAS DE INFORMAÇÃO
Restrições de Cardinalidade
Cardinalidade
A
B
• a1
R
• b1
• a2
• b2
• a3
• b3
• a4
• b4
• a5
• b5
Tipos de Relacionamento Binário
Seja R(p1:E1, p2:E2)


a cardinalidade entre p1 e p2 em R
Card (p1; p2; R) = (min, max)
 onde min e max são os números mínimo e máximo de
entidades do tipo E2 que podem estar relacionadas em R
a qualquer entidade do tipo E1 a qualquer tempo


Card (p2; p1; R) é definida analogamente
obviamente:
 min ≥ 0
 max > 0 e max ≥ min
Cardinalidade
A
B
• a1
pA
R
pB
• b1
• a2
• b2
• a3
• b3
• a4
• b4
• a5
• b5
R(pA:A, pB,B)
Card(pA, pB, R) = (0, 3)
Card(pA, pB, R) = (1, 3)
Exemplo
Seja o tipo de relacionamento:

Lê(leitor: Pessoa, materialDeleitura: Livro)

cardinalidades
 Card (leitor; materialDeLeitura; Lê) = (0, 3)
 Card (materialDeLeitura; leitor; Lê) = (0, 1)
Definição formal
Seja R(p1:E1, p2:E2)
Card (p1; p2; R) = (min, max) ↔

E1(e1) → min ≤ | {e2 | R(e1, e2)}| ≤ max
Simplificações:


Cmin (p1; p2; R)
Cmax (p1; p2; R)
Resultado

Card (p1; p2) = (min, max) →
 min’ ≤ min e max’ ≥ max → Card (p1; p2) = (min’, max’)
Definições
Cmin (p1; p2; R) > 0 ↔ participação de E1 em R
com papel p1 é TOTAL ou MANDATÓRIA
Cmin (p1; p2; R) = 0 ↔ participação de E1 em R
com papel p1 é PARCIAL ou OPCIONAL
Cmax (p1; p2; R) = 1 ↔ há uma
DEPENDÊNCIA FUNCIONAL entre p1 e p2 ↔
{p1} → {p2}
Cmax (p1; p2; R) > 1 ↔ a correspondência é
NÃO FUNCIONAL
Cardinalidades não restritivas
Cmin (p1; p2; R) = 0
Cmax (p1; p2; R) = ∞
Card (p1; p2; R) = (0, ∞)
Representação
em
UML
Mora ►
pai(mãe)
0..2
*
filho(a)
1..* residente
Pessoa
{«permanente»}
*
nativo
*
Nasceu
1
localDeNascimento
1
trabalhador
localDeResidência
Cidade
{«permanente»}
0..1
localDeTrabalho
Trabalha
Card (p1; p2; R) = (min, max) representado na forma min..max próximo a p2
se min = max escreve-se um número
se max = ∞ então escreve-se max = *.
se min = 0 e max = ∞ então escreve-se apenas o *
Representação
em
UML
Mora ►
pai(mãe)
0..2
*
filho(a)
1..* residente
Pessoa
{«permanente»}
*
nativo
*
Nasceu
1
localDeNascimento
1
trabalhador
localDeResidência
Cidade
{«permanente»}
0..1
localDeTrabalho
Trabalha
uma pessoa pode ter de 0 a muitos filhos e de 0 a 2 pais.
todas as pessoas nasceram e moram numa cidade e opcionalmente trabalham
pelo menos uma pessoa mora numa cidade
pode ser que ninguém trabalhe nem seja nativo em alguma cidade
Representação
em
UML
Mora ►
pai(mãe)
0..2
*
filho(a)
1..* residente
Pessoa
{«permanente»}
*
nativo
*
Nasceu
1
localDeNascimento
1
trabalhador
localDeResidência
Cidade
{«permanente»}
0..1
localDeTrabalho
Trabalha
a participação de Pessoa e Cidade em Mora é total
a participação de Pessoa em Nasceu é total
há uma correspondência funcional entre Pessoa e Cidade em Mora,
Trabalha e Nasceu.
Atributos
Um atributo P(E1, E2) correspondente ao tipo de
relacionamento R(e1: E1, p:E2) é dito ser
monovalorado se a correspondência entre e1 e p
é funcional, ou seja Cmax (e1, p, R) = 1
Se Cmax (e1, p, R) > 1 o atributo P é dito ser
multivalorado
O atributo é total se a participação de de E1 em
R é total, ou seja Cmin (e1, p, R) = 1
Se Cmin (e1, p, R) = 0 o atributo é parcial.
Atributos
Em UML, a cardinalidade
é mostrada perto do
nome do atributo.
A cardinalidade default é
(1, 1), ou seja total e
funcional.
Pessoa
nome: String
hobby: String [*]
fone: String [0..1]
Tipos de Relacionamento n-ários
Seja o tipo de relacionamento:
 Usa(Programador, Linguagem, Projeto)
com o seguinte padrão de sentença:
 O programador <programador>usa a linguagem
<linguagem> no projeto <projeto>.
e a seguinte representação gráfica:
Programador
Usa
Projeto
Linguagem
Tipos de Relacionamento n-ários
Tipos ternários têm 12 cardinalidades.
1.
2.
3.
4.
5.
6.
Card
Card
Card
Card
Card
Card
(programador, linguagem)
(programador, projeto)
(linguagem, programador)
(linguagem, projeto)
(projeto, programador)
(projeto, linguagem)
Tipos de Relacionamento n-ários
7.
8.
9.
10.
11.
12.
Card
Card
Card
Card
Card
Card
(programador, linguagem; projeto)
(programador, projeto; linguagem)
(linguagem, projeto; programador)
(programador; projeto, linguagem)
(linguagem; programador; projeto)
(projeto; programador, linguagem)
Tipos de Relacionamento n-ários
7.
8.
9.
10.
11.
12.
Card
Card
Card
Card
Card
Card
(programador, linguagem; projeto)
(programador, projeto; linguagem)
(linguagem, projeto; programador)
(programador; projeto, linguagem)
(linguagem; programador; projeto)
(projeto; programador, linguagem)
representadas em UML
Definição formal
Card (p1; p2; R) = (min, max) ↔

E1(e1) → min ≤ | {e2 | R(e1, e2)}| ≤ max
Seja R(p1:E1,...,pn:En) e sejam p =
{p1,...,pi} e q = {pi+1,...,pk}
subconjuntos disjuntos dos papéis
{p1,...,pn}
Card (p; q; R) = (min, max) ↔

E1(e1) ... En(en) →

min  |{(ei+1,…,ek) | R(e1,…,ei.ei+1,…,ek,…,en)}|  max
Exemplos
1.
2.
3.
4.
5.
6.
7.
8.
Card
Card
Card
Card
Card
Card
(programador, linguagem) = (0,2)
(programador, projeto) = (0,5)
(linguagem, programador) = (0, ∞)
(linguagem, projeto) = (0, ∞)
(projeto, programador) = (1, ∞)
(projeto, linguagem) = (1, ∞)
Card (programador, linguagem; projeto) = (0,5)
Card (programador, projeto; linguagem) = (0,1)
Exemplos
9.
10.
11.
12.
Card (linguagem, projeto; programador) = (0, ∞)
Card (programador; projeto, linguagem) = (0, 5)
Card (linguagem; programador; projeto) = (0, ∞)
Card (projeto; programador, linguagem) = (1, ∞)
Cardinalidades insatisfatíveis
Gerencia
gerente
1
Empregado
0..1
subordinado
Cardinalidades insatisfatíveis
2..*
Pessoa
1
Trabalha 0..1
Éproprietário
1..*
Empresa
Outras notações
Notação original (Chen) - máximo



1:1
1:N
N:M
cardinalidade (máximo) e modalidade
(mínimo)
máximo 1: dependência funcional
1:1

(0,1): (0,1) – (0,1): (1,1) – (1,1): (0,1) –
(1,1): (1,1)
Download

Slides Aula 3