230 likes | 323 Views
MODELAGEM CONCEITUAL DE SISTEMAS DE INFORMAÇÃO. Restri ções de Cardinalidade. Cardinalidade. A. B. R. a1 a2 a3 a4 a5. b1 b2 b3 b4 b5. Tipos de Relacionamento Binário. Seja R(p 1 :E 1 , p 2 :E 2 ) a cardinalidade entre p 1 e p 2 em R
E N D
MODELAGEM CONCEITUAL DE SISTEMAS DE INFORMAÇÃO Restrições de Cardinalidade
Cardinalidade A B R • a1 • a2 • a3 • a4 • a5 • b1 • b2 • b3 • b4 • 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 R pA pB • a1 • a2 • a3 • a4 • a5 • b1 • b2 • b3 • b4 • 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 ► • 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 * pai(mãe) 1 1..* residente localDeResidência 0..2 Nasceu * Pessoa {«permanente»} nativo localDeNascimento Cidade {«permanente»} * 1 filho(a) * trabalhador 0..1 localDeTrabalho Trabalha
Representação em UML Mora ► • 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 pai(mãe) 1 1..* residente localDeResidência 0..2 Nasceu * Pessoa {«permanente»} nativo localDeNascimento Cidade {«permanente»} * 1 filho(a) * trabalhador 0..1 localDeTrabalho Trabalha
Representação em UML Mora ► • 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. pai(mãe) 1 1..* residente localDeResidência 0..2 Nasceu * Pessoa {«permanente»} nativo localDeNascimento Cidade {«permanente»} * 1 filho(a) * trabalhador 0..1 localDeTrabalho Trabalha
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: Usa Programador Linguagem Projeto
Tipos de Relacionamento n-ários • Tipos ternários têm 12 cardinalidades. • Card (programador, linguagem) • Card (programador, projeto) • Card (linguagem, programador) • Card (linguagem, projeto) • Card (projeto, programador) • Card (projeto, linguagem)
Tipos de Relacionamento n-ários • Card (programador, linguagem; projeto) • Card (programador, projeto; linguagem) • Card (linguagem, projeto; programador) • Card (programador; projeto, linguagem) • Card (linguagem; programador; projeto) • Card (projeto; programador, linguagem)
Tipos de Relacionamento n-ários • Card (programador, linguagem; projeto) • Card (programador, projeto; linguagem) • Card (linguagem, projeto; programador) • Card (programador; projeto, linguagem) • Card (linguagem; programador; projeto) • Card (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 • Card (programador, linguagem) = (0,2) • Card (programador, projeto) = (0,5) • Card (linguagem, programador) = (0, ∞) • Card (linguagem, projeto) = (0, ∞) • Card (projeto, programador) = (1, ∞) • Card (projeto, linguagem) = (1, ∞) • Card (programador, linguagem; projeto) = (0,5) • Card (programador, projeto; linguagem) = (0,1)
Exemplos • 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 1 gerente 0..1 Empregado subordinado
Cardinalidades insatisfatíveis 2..* Trabalha 0..1 Pessoa Empresa Éproprietário 1 1..*
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)