MODELAGEM CONCEITUAL DE SISTEMAS DE INFORMAÇÃO Reificação EXEMPLO Pessoa 1..* membro ParticipaDe * Comissão ParticipaDe (membro: Pessoa, Comissão) A pessoa <Pessoa> participa da comissão <Comissão>. Cardinalidades Card (Pessoa, Comissão, ParticipaDe) = (0..∞ ) Card (Comissão, Pessoa, ParticipaDe) = (1, ∞ ) Reificação ParticipaDe (membro: Pessoa, Comissão) Uma instância de ParticipaDe é um relacionamento que representa o fato de que uma pessoa é membro de uma comissão. O mesmo fato pode ser visto como uma entidade. Se visto como entidade, dizemos que a entidade reifica o relacionamento. EXEMPLO R1 Participação Pessoa ParticipaDe α P1 Participação Pessoa Comissão β P1 α P1 C1 γ P2 β R2 P1 C2 γ Participação Commissão P2 C1 α C1 β C2 γ C1 ParticipaDe(membro: Pessoa, Comissão) Participação EXEMPLO ParticipaDe Pessoa Comissão P1 C1 P1 C2 P2 C1 R1 Participação Pessoa α P1 Participação β P1 α γ P2 β R2 γ Participação Commissão α C1 β C2 γ C1 Cada instância de ParticipaDe está associada a uma e apenas uma instância de Participação Relacionamentos intrínsecos: R1 (Participação, Pessoa) e R2 (Participação, Comissão) As instâncias de ParticipaDe podem ser obtidas a partir das instâncias de Participação, R1 e R2 EXEMPLO ParticipaDe Pessoa Comissão P1 C1 P1 C2 P2 C1 R1 Participação Pessoa α P1 Participação β P1 α γ P2 β R2 γ Participação Commissão α C1 β C2 γ C1 A reificação não acrescenta conhecimento ao esquema mas é necessária se precisamos registrar fatos adicionais Por exemplo, para registrar a data na qual uma pessoa tornou-se membro da comissão, ou sua função (presidente, vice), etc. Tipos de Relacionamento de Dependência Existencial R(p1:E1, p2:E2) é um Tipo de Relacionamento de Dependência Existencial e E1 é Dependente Existencialmente de E2 ↔ Card (p1, p2, R) = (1, 1) R é constante com relação a p1 Exemplo: Nasceu (nativo: Pessoa, localDeNascimento: Cidade) é um TR de Dependência Existencial e Pessoa é Dependente Existencialmente de Cidade: cada instância de Pessoa tem um e apenas um localDeNascimento, o localDeNascimento é sempre o mesmo DEFINIÇÃO A reificação de um Tipo de Relacionamento R(p1:E1,…,pn:En) é um Tipo de Entidade E e n Tipos de Relacionamentos Binários intrínsecos Ri(p:E, pi:Ei), (i=1,…,n) com as seguintes propriedades: 1. 2. 3. Os Ri são TRs de dependência existencial, ou seja, eles são constantes com relação a p e Card (p;pi;Ri) = (1,1), ou seja, {p} → {pi} Card (pi;p,Ri) = Card (pi; p1,…,pi-1,pi+1,..,pn;R) Há uma correspondência biunívoca entre R e E: R (e1,…,en) → ! e (E(e) ˄ R1(e,e1) ˄ … ˄ Rn(e,en)) R1(e,e1) ˄ … ˄ Rn(e,en) → R (e1,…,en) EXEMPLO A reificação de ParticipaDe(membro: Pessoa, Comissão) é o Tipo de Entidade Participação e os dois Tipos de Relacionamentos intrínsecos R1 (Participação, Pessoa) e R2 (Participação, Comissão), com as seguintes propriedades: EXEMPLO ParticipaDe Pessoa Comissão P1 C1 P1 C2 P2 C1 1. R1 Participação Pessoa α P1 Participação β P1 α γ P2 β R2 γ Participação Commissão α C1 β C2 γ C1 R1 e R2 são TRs de dependência existencial: eles são constantes com relação a participação e Card (participação; pessoa; R1) = Card (participação; comissão; R2) = (1,1) EXEMPLO Pessoa 2. Se 1..* membro ParticipaDe * Comissão Card (pessoa; comissão; ParticipaDe) = (0, ∞) Card (comissão; pessoa: ParticipaDe) = (1, ∞ ) então Card (pessoa; participação; R1) = (0, ∞) Card (comissão; participação; R2) = (1, ∞ ) EXEMPLO ParticipaDe Pessoa Comissão P1 C1 P1 C2 P2 C1 3. R1 Participação Pessoa α P1 Participação β P1 α γ P2 β R2 γ Participação Commissão α C1 β C2 γ C1 Há uma correspondência biunívoca entre ParticipaDe e Participação: ParticipaDe (p, c) → ! m (Participação (m) ˄ R1 (m, p) ˄ R2 (m, c) R1 (m, p) ˄ R2 (m, c) → ParticipaDe (p, c) Representação em UML – TR binário Pessoa * Comissão 1..* membro Participação papel: Papel Classe associativa (Tipo de Entidade, Tipo de Relacionamento) Os Tipos de Relacionamento intrínsecos não são mostrados Classes associativas podem ter atributos e podem estar relacionadas com outros tipos de entidade Representação em UML – TR n-ário timeDeCasa 0..1 Time visitante 0..1 * Data jogadoEm Jogo * 1 Estádio resultado: Resultado [0..1] espectadores: Natural [0..1] O time de casa <Time> joga contra o time visitante <Time> em <Data> Reificação Implícita (binária) Pessoa Comissão membro 1 1 1..* * Participação [«constante»] [«constante»] papel: Papel Seja o Tipo de Relacionamento R Defina o Tipo de Entidade E (que reifica R) Defina os Tipos de Relacionamento Intrínsecos Defina a restrição de unicidade da reificação qualquer par (pessoa, comissão) está associado a, no máximo, uma instância de Participação Opcionalmente, defina R como um tipo derivado Reificação Implícita (n-ária) Time timeDeCasa 1 visitante 1 1 {«constante»} * * {«constante»} Data * {«constante»} jogadoEm Jogo * 1 Estádio resultado: Resultado [0..1] espectadores: Natural [0..1] As cardinalidades são perdidas na reificação implícita n-ária; por exemplo: Card (timeDeCasa, data; visitante) = (0, 1) Card (visitante, data; timeDaCasa) = (0, 1) A reificação implícita mostra três cardinalidades não restritivas. A restrição de unicidade da reificação impõe que para cada tupla (timeDeCasa, visitante, data) haja, no máximo, um jogo. Reificação Implícita A reificação implícita permite transformar qualquer Tipo de Relacionamento em um conjunto de Tipos de Relacionamento de dependência existencial. A entrada da transformação é o Tipo de Relacionamento R com suas cardinalidades O resultado da transformação é: O novo Tipo de Entidade E Os tipos de Relacionamento intrínsecos com suas cardinalidades Um conjunto de restrições de cardinalidade (as não incluídas no ítem 2. A restrição de unicidade de reificação