Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
UML: <strong>Diagramas</strong> <strong>de</strong> <strong>Classes</strong><br />
Desenho <strong>de</strong> Bases <strong>de</strong> Dados Relacionais com UML<br />
Fundamentos <strong>de</strong> Bases <strong>de</strong> Dados<br />
(FBD)<br />
Licenciatura em<br />
Engenharia <strong>de</strong> Telecomunicações e Informática (ETI)<br />
Autoria:<br />
Pedro Ramos, José Farinha<br />
Docente:<br />
José Farinha
Conceitos Básicos<br />
Associações<br />
<strong>Classes</strong> Associativas<br />
Agregações<br />
Composições<br />
Generalizações<br />
<strong>Diagramas</strong> <strong>de</strong> <strong>Classes</strong> UML<br />
Atributos vs. Associações<br />
N-para-1<br />
Índice<br />
Associações n-árias<br />
Associações singulares<br />
(uma classe)<br />
Relações <strong>de</strong> Dependência<br />
Roles<br />
Navegação<br />
Packages<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 2
Objectos<br />
Objecto: Qualquer coisa ou acontecimento do universo que queremos<br />
registar e que tem:<br />
– Uma i<strong>de</strong>ntificação<br />
• Valor que permite diferenciar o objecto <strong>de</strong> todos os outros<br />
– Um estado<br />
• Conjunto <strong>de</strong> valores que nos dão informação acerca das características do objecto<br />
– Comportamento<br />
• Conjunto <strong>de</strong> acções que o objecto sabe realizar<br />
Objecto: Cliente José Silva<br />
É distinto <strong>de</strong> todos os outros clientes da<br />
empresa pois tem o número 484848<br />
Tem o nome “José Silva”, morada “R. <strong>de</strong><br />
cima…”, nº contribuinte “8242424”, ...<br />
Operações: encomendar produto, pagar<br />
factura, alterar morada, ...<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 3
Objectos<br />
Não têm necessariamente que correspon<strong>de</strong>r a<br />
entida<strong>de</strong>s com representação física<br />
Um conceito abstracto (p.ex, um <strong>de</strong>partamento)<br />
po<strong>de</strong> ser um objecto, <strong>de</strong>s<strong>de</strong> que seja relevante para<br />
o domínio em causa.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 4
<strong>Classes</strong><br />
Classe: conjunto <strong>de</strong> objectos que partilham o mesmo<br />
meio <strong>de</strong> i<strong>de</strong>ntificação, proprieda<strong>de</strong>s <strong>de</strong> estado,<br />
comportamento, relações e semântica.<br />
Classe dos clientes<br />
Todos distintos uns dos outros<br />
Todos têm nome, morada, nº contribuinte, ...<br />
Todos estão aptos para realizar as mesmas acções:<br />
encomendar produto, pagar factura, alterar morada, ...<br />
Todos se relacionam com os mesmos tipos <strong>de</strong><br />
objectos (p.ex, com os produtos que adquirem).<br />
Representam a realida<strong>de</strong>s da mesma natureza (tem a<br />
mesma semântica)<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 5
Classe: Representação gráfica<br />
Classe dos clientes<br />
Cliente<br />
Nr. contribuinte<br />
Nome<br />
Morada<br />
Encomendar produto ( )<br />
Pagar factura ( )<br />
Mudar <strong>de</strong> morada ( )<br />
Nome (único no domínio)<br />
Atributos<br />
Operações<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 6
Atributos<br />
Um atributo numa classe representa uma<br />
característica típica dos objectos <strong>de</strong>ssa classe<br />
Po<strong>de</strong> assumir qualquer valor, se não houver mais<br />
nenhuma especificação relativamente ao atributo<br />
Po<strong>de</strong> especificar-se um tipo <strong>de</strong><br />
dados para um atributo<br />
– Neste caso, os valores que po<strong>de</strong>m<br />
ser atribuídos ao atributo estão<br />
condicionados à compatibilida<strong>de</strong><br />
com o tipo<br />
Factura<br />
Nr. Factura: Integer<br />
Data: Date<br />
Estado: String<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 7
Atributos: obrigatorieda<strong>de</strong> <strong>de</strong> preenchimento<br />
Em UML, um atributo é <strong>de</strong> preenchimento opcional:<br />
– Em cada novo objecto que seja criado, o dito atributo<br />
po<strong>de</strong>rá ser ou não preenchido.<br />
Em <strong>de</strong>senho <strong>de</strong> base <strong>de</strong> dados é importante<br />
i<strong>de</strong>ntificar a obrigatorieda<strong>de</strong> <strong>de</strong> preenchimento<br />
– Normalmente feito apenas sobre o mo<strong>de</strong>lo relacional<br />
– Se for consi<strong>de</strong>rado muito relevante colocar essa<br />
informação no diagrama <strong>de</strong> classes UML, indicar em<br />
caixa <strong>de</strong> comentário UML<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 8
Atributos: valor por omissão<br />
Em UML po<strong>de</strong> especificar-se um valor por omissão (<strong>de</strong>fault value)<br />
para um atributo<br />
Mais a<strong>de</strong>quado para aplicar em situações em que existe um valor<br />
inicial<br />
Segurado<br />
Nome<br />
Morada<br />
Tipo = “Limpo”<br />
Os novos segurados começam<br />
por não ter participações.<br />
Requisição<br />
Nr. requisição<br />
Data<br />
Estado = “Por aprovar”<br />
Uma requisição é criada por um<br />
subordinado e mais tar<strong>de</strong> aprovada<br />
pela chefia<br />
Jogo <strong>de</strong> futebol<br />
Data<br />
Golos visitado = 0<br />
Golos visitante = 0<br />
Neste caso, torna-se não<br />
necessário fornecer o número <strong>de</strong><br />
golos quando se cria o jogo.<br />
Não é muito a<strong>de</strong>quado para mo<strong>de</strong>lar o conceito <strong>de</strong> valor mais<br />
frequente<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 9
Atributos <strong>de</strong> i<strong>de</strong>ntificação 1<br />
Ao <strong>de</strong>finir os atributos <strong>de</strong> uma classe, <strong>de</strong>verá incluirse<br />
sempre um (ou mais) atributo(s) que possa(m)<br />
funcionar como mecanismo <strong>de</strong> i<strong>de</strong>ntificação dos<br />
objectos <strong>de</strong>ssa classe.<br />
Isto é, um (ou mais) atributo(s) para o(s) qual(is):<br />
– todos os objectos têm valor;<br />
– o valor nesse atributo (ou conjunto <strong>de</strong> atributos)<br />
garantidamente não se repete em quaisquer dois<br />
objectos.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 10
Atributos <strong>de</strong> i<strong>de</strong>ntificação 2<br />
Em certas classes, não se conseguem apurar atributos naturais para este efeito.<br />
Especificamos um atributo adicional, cujos valores serão “artificialmente” atribuídos a<br />
cada objecto, sem causar repetições;<br />
Este atributo diz-se um I<strong>de</strong>ntificador Interno, I<strong>de</strong>ntificador Único ou I<strong>de</strong>ntificador<br />
<strong>de</strong> Objecto (OI, Object I<strong>de</strong>ntifier) e é frequente receber nomes do género:<br />
Número [<strong>de</strong> ...]<br />
Código [<strong>de</strong> ...]<br />
Id<br />
Por razões <strong>de</strong> performance, no mo<strong>de</strong>lo lógico e/ou físico da base <strong>de</strong> dados po<strong>de</strong>rá<br />
introduzir-se um atributo <strong>de</strong>stes mesmo que exista uma forma <strong>de</strong> i<strong>de</strong>ntificação<br />
natural na classe<br />
Num diagrama <strong>de</strong> classes UML um atributo <strong>de</strong>ste género apenas <strong>de</strong>verá ser<br />
indicado se não existir uma forma <strong>de</strong> i<strong>de</strong>ntificação natural na classe<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 11
Atributos enumerados<br />
Atributos que apenas po<strong>de</strong>m assumir valores entre<br />
um certo conjunto <strong>de</strong> opções<br />
Exº <strong>de</strong> especificação na própria classe<br />
Peça <strong>de</strong> vestuário<br />
Código <strong>de</strong> barras<br />
Designação<br />
Tamanho: {“XL”, “L”, “M”, “S”, “XS”}<br />
O tamanho <strong>de</strong> uma peça <strong>de</strong> vestuário apenas po<strong>de</strong> ser<br />
preenchida por um dos valores indicados<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 12
Atributos enumerados<br />
Se o conjunto <strong>de</strong> opções é<br />
usado em mais que uma<br />
classe<br />
...ou mesmo se o conjunto<br />
<strong>de</strong> opções é muito<br />
extenso, tornando a<br />
representação gráfica da<br />
classe muito larga<br />
Po<strong>de</strong> <strong>de</strong>finir-se um tipo <strong>de</strong><br />
dados enumerado, que<br />
po<strong>de</strong> ser partilhado por<br />
vários atributos<br />
Representação gráfica:<br />
«Enumeration»<br />
Tamanho <strong>de</strong> vestuário<br />
Peça <strong>de</strong> vestuário<br />
Código <strong>de</strong> barras<br />
Designação<br />
Tamanho: Tamanho <strong>de</strong> vestuário<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 13<br />
XL<br />
L<br />
M<br />
S<br />
XS
Desusos <strong>de</strong> UML para <strong>de</strong>senho <strong>de</strong> bases <strong>de</strong><br />
dados relacionais<br />
Para efeitos <strong>de</strong> <strong>de</strong>senho <strong>de</strong> base <strong>de</strong><br />
dados relacional:<br />
– Não se especificam as visibilida<strong>de</strong>s –<br />
público/protegido/privado – dos atributos:<br />
todos se assumem públicos;<br />
Se pretendêssemos <strong>de</strong>senhar uma base <strong>de</strong><br />
dados orientada por objectos, tal já seria<br />
especificado;<br />
– Relativamente a um atributo, não se faz<br />
especificação <strong>de</strong> multiplicida<strong>de</strong>s<br />
superiores a 1, pois:<br />
• O mo<strong>de</strong>lo relacional não permite que, num<br />
registo, um atributo possua mais do que um<br />
valor<br />
• Não se preten<strong>de</strong> obter um mo<strong>de</strong>lo puramente<br />
orientado por objectos<br />
+ Nome<br />
+ Morada<br />
- Rua<br />
- Porta<br />
Cliente<br />
Cliente<br />
Não se coloca<br />
Nome: String<br />
Morada: String<br />
Telefone [ 0 .. 3 ]: Int<br />
Não se usa<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 14
Desusos <strong>de</strong> UML em FBD<br />
Não se especificam as operações das classes<br />
Mas po<strong>de</strong>rá fazer-se, para especificação <strong>de</strong> stored procedures ou<br />
triggers muito directamente relacionados com <strong>de</strong>terminada classe<br />
Nome<br />
Morada<br />
Cliente<br />
Encomendar_produto ( )<br />
Pagar_factura ( )<br />
Mudar_morada ( )<br />
Não se faz em FBD<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 15
Relações 1<br />
Em qualquer sistema existem objectos que se relacionam entre si.<br />
– Sistema universitário<br />
• Objectos: alunos, cursos, exames;<br />
• os alunos relacionam-se com os cursos que frequentam e com os exames que<br />
fazem.<br />
– Sistema bancário<br />
• objectos – clientes, contas, balcões;<br />
• os clientes relacionam-se com as contas que possuem e as contas com os balcões<br />
em que estão sediadas.<br />
As ligações entre objectos relacionados também são informação<br />
Quando há interesse em conhecer as ligações entre os objectos<br />
do sistema, especificam-se relações entre as classes <strong>de</strong>sses<br />
objectos<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 16
Relações 2<br />
Em UML existem os seguintes tipos <strong>de</strong> relações, que<br />
expressam diferentes semânticas <strong>de</strong> interligação<br />
entre classes:<br />
– Associação<br />
Tem dois casos especiais:<br />
– Agregação<br />
– Composição<br />
– Generalização<br />
– Relação <strong>de</strong> <strong>de</strong>pendência<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 17
Associações<br />
Uma associação é uma relação que permite especificar<br />
que objectos <strong>de</strong> uma dada classe se relacionam com<br />
objectos <strong>de</strong> outra classe, sendo importante saber<br />
para cada objecto quais os objectos que lhe estão<br />
associados.<br />
Cliente<br />
Nr contribuinte<br />
Nome<br />
1 0…*<br />
Factura<br />
Nr factura<br />
Data<br />
Valor<br />
...<br />
Um cliente po<strong>de</strong> estar associado a várias facturas ou a nenhuma.<br />
Uma factura está sempre associada a um cliente.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 18
Multiplicida<strong>de</strong> das Associações<br />
X<br />
0 ... 3<br />
Indica quantos objectos da classe X...<br />
...po<strong>de</strong>m estar ligados a um objecto da classe Y<br />
0...1 zero ou 1<br />
Algumas hipóteses:<br />
0...* zero ou vários,<br />
sem limitação <strong>de</strong> quantida<strong>de</strong><br />
0...3 <strong>de</strong> zero a três<br />
1...1 um e apenas um<br />
1...* no mínimo 1<br />
1...3 <strong>de</strong> 1 a 3<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 19<br />
Y<br />
po<strong>de</strong> representar-se: 1
Multiplicida<strong>de</strong> das Associações<br />
... infinitas combinações possíveis que são vulgar <strong>de</strong>signarem-se como:<br />
X<br />
X<br />
X<br />
0 ... 1<br />
1 ... 1<br />
0 ... *<br />
0 ... *<br />
0 ... 1<br />
0 ... *<br />
Y<br />
Y<br />
Y<br />
Um-para-muitos<br />
...ou Um-para-N<br />
Um-para-um<br />
Muitos-para-muitos<br />
...ou M-para-N<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 20
Curso<br />
Associação um-para-muitos 1<br />
Nome 0 ... 1 0 … *<br />
Gestão<br />
Informática<br />
Direito<br />
Sociologia<br />
Nr aluno<br />
Nome<br />
Aluno<br />
João<br />
Ana<br />
Luís<br />
Joana<br />
Semântica<br />
– Um aluno po<strong>de</strong> estar<br />
associado a (inscrito em)<br />
um e apenas um curso<br />
– A um curso po<strong>de</strong>m-se<br />
associar vários ou nenhum<br />
aluno.<br />
Funcional<br />
– Dado um aluno é possível<br />
<strong>de</strong>terminar em que curso<br />
está inscrito, e<br />
– Dado um curso é possível<br />
i<strong>de</strong>ntificar os seus alunos.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 21
Departamento<br />
Associação um-para-muitos 2<br />
Nome 1 0 … *<br />
Produção<br />
Comercial<br />
Financeiro<br />
Informática<br />
Funcionário<br />
Nr mecanográfico<br />
Nome<br />
João<br />
Ana<br />
Luís<br />
Joana<br />
Semântica<br />
– Um funcionário tem<br />
necessariamente que estar<br />
associado a um <strong>de</strong>partamento<br />
Funcional<br />
Não é possível introduzir um<br />
funcionário no sistema sem que<br />
seja indicado o <strong>de</strong>partamento a<br />
que pertence<br />
– Dado um funcionário é possível<br />
<strong>de</strong>terminar em que<br />
<strong>de</strong>partamento ele trabalha, e<br />
– Dado um <strong>de</strong>partamento é<br />
possível i<strong>de</strong>ntificar os seus<br />
funcionários.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 22
Aluno<br />
Nr aluno<br />
Nome<br />
João<br />
Ana<br />
Luís<br />
Joana<br />
Associação muitos-para-muitos 3<br />
0 ... * 0 … *<br />
A mesma ligação<br />
Nome<br />
Disciplina<br />
Matemática<br />
Direito<br />
Marketing<br />
Informática<br />
Um objecto não po<strong>de</strong> estar<br />
duplamente associado a outro<br />
objecto (Joana / Marketing).<br />
À semelhança das classes (em que<br />
os objectos são distintos), as<br />
associações também têm que ter<br />
ocorrências distintas.<br />
–Não há nada que distinga as duas<br />
ligações entre Joana e Marketing;<br />
–O sistema <strong>de</strong> base <strong>de</strong> dados <strong>de</strong>verá<br />
consi<strong>de</strong>rar a 2ª ligação como<br />
redundante: Não interessa registar<br />
duas vezes que Joana e Marketing<br />
estão ligados<br />
–Se interessa, então a associação<br />
muitos-para-muitos não é<br />
representação correcta<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 23
Factura<br />
Nr factura<br />
Data emissão<br />
Valor<br />
Nr recibo<br />
Associação um-para-um<br />
1 0…1<br />
Recibo<br />
Nr recibo<br />
Data pagamento<br />
Nr cheque<br />
Banco<br />
É a associação que atribui um<br />
número <strong>de</strong> recibo à factura.<br />
– Caso contrário, uma factura<br />
po<strong>de</strong>ria ficar associada a dois<br />
números <strong>de</strong> recibo (o indicado no<br />
atributo da factura e o indicado no<br />
objecto Recibo ao qual a factura<br />
estivesse ligada).<br />
– O atributo Nr <strong>de</strong> recibo na classe<br />
Factura é redundante – não <strong>de</strong>ve<br />
ser especificado<br />
Apesar <strong>de</strong> haver uma<br />
correspondência um a um, não<br />
se <strong>de</strong>ve especificar apenas<br />
uma classe, pois cada classe<br />
representa uma realida<strong>de</strong><br />
– Inclusive, <strong>de</strong>via haver a classe<br />
Cheque.<br />
– Mais alguma?<br />
Pelas multiplicida<strong>de</strong>s percebese<br />
que uma factura será<br />
necessariamente introduzida<br />
antes do respectivo recibo<br />
(quanto muito,<br />
simultaneamente)<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 24
Nomes <strong>de</strong> associações 1<br />
As associações po<strong>de</strong>m (e <strong>de</strong>vem) ter nomes<br />
– Substantivo<br />
– Verbo<br />
Indicar sempre o<br />
sentido <strong>de</strong> leitura<br />
Indispensável quando há<br />
duas associações entre as<br />
mesmas classes<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 25<br />
Aluno<br />
Aluno<br />
Cliente<br />
0 ... *<br />
0 ... *<br />
0 ... *<br />
inscrição<br />
inscrito em<br />
0 ... *<br />
0 ... *<br />
titularida<strong>de</strong><br />
0 ... * 0 ... *<br />
autorização <strong>de</strong> movimentação<br />
0 ... *<br />
Disciplina<br />
Disciplina<br />
Conta
Nomes <strong>de</strong> associações 2<br />
Em UML puro, duas<br />
associações po<strong>de</strong>m ter o<br />
mesmo nome <strong>de</strong>s<strong>de</strong> que sejam<br />
entre classes diferentes<br />
Algumas ferramentas impõem<br />
restrições mesmo que as<br />
associações sejam entre duas<br />
classes diferentes ⇒ duas<br />
associações não <strong>de</strong>vem ter<br />
nome igual<br />
– É o caso da ferramenta<br />
PowerDesigner, usada nos<br />
laboratórios: associações com<br />
nomes iguais originam<br />
posteriormente duplicação <strong>de</strong><br />
i<strong>de</strong>ntificadores na base <strong>de</strong><br />
dados.<br />
Seminário<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 26<br />
0 ... *<br />
0 ... *<br />
Inscrição<br />
Inscrição<br />
0 ... *<br />
0 ... *<br />
Professor<br />
Aluno
Atributo enumerado vs. vs. Associação N-para-1<br />
Problema:<br />
Numa base <strong>de</strong> dados bancária, preten<strong>de</strong>-se guardar informação sobre cada<br />
conta, incluindo o seu tipo <strong>de</strong> conta.<br />
Conta<br />
Tipo <strong>de</strong> conta: { À or<strong>de</strong>m, A prazo, CPH, CPA }<br />
Atributo enumerado: Deve usar-se<br />
apenas se, previsivelmente, as<br />
opções serão sempre as mesmas<br />
Associação: Deve usar-se se as opções po<strong>de</strong>m<br />
mudar e queremos possibilitar que seja o<br />
utilizador a gerir essas opções<br />
– Se a quantida<strong>de</strong> <strong>de</strong> opções po<strong>de</strong> mudar.<br />
– Se po<strong>de</strong>m mudar <strong>de</strong> <strong>de</strong>signação.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 27<br />
Conta<br />
0 ... *<br />
tipificação<br />
1<br />
Tipo <strong>de</strong> conta<br />
Designação
0... vs. vs. 1...<br />
Usar o 1...* quando, <strong>de</strong> todo, não se quer a informação do<br />
lado muitos sem a informação do lado 1. Quando não tem<br />
utilida<strong>de</strong> sem a informação do lado 1. Mesmo que na<br />
realida<strong>de</strong> a multiplicida<strong>de</strong> seja 1...*.<br />
– Exemplo:<br />
• Um curso tem pelo menos uma disciplina (portanto, na realida<strong>de</strong>: 1...*).<br />
• Mas po<strong>de</strong>mos querer manter informação acerca do curso sem ainda<br />
termos indicado as suas disciplinas – logo: 0...*<br />
– Exemplo:<br />
• Uma receita médica prescreve um ou mais medicamentos.<br />
• O médico não <strong>de</strong>ve po<strong>de</strong>r guardar a receita sem ter indicado um dos<br />
medicamentos.<br />
• Sem pelo menos um medicamento, a informação sobre a receita não tem<br />
qualquer utilida<strong>de</strong> – logo: 1...*.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 28
São associações que se<br />
“transformam” em classes…<br />
… quando :<br />
<strong>Classes</strong> associativas<br />
– É necessário colocar atributos<br />
na associação:<br />
– É necessário associar uma<br />
classe a uma associação<br />
Encomenda<br />
Nr Encomenda<br />
Quantida<strong>de</strong><br />
0...* 0...*<br />
Item <strong>de</strong> encomenda<br />
Quantida<strong>de</strong><br />
Morada<br />
Contacto<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 29<br />
0...*<br />
Produto<br />
Código<br />
Quantida<strong>de</strong><br />
Local<br />
Entrega<br />
1
As classes associativas<br />
são mais frequentemente<br />
necessárias nas<br />
associações muitos para<br />
muitos.<br />
<strong>Classes</strong> associativas<br />
Mas, em casos mais raros,<br />
fazem também sentido em<br />
associações <strong>de</strong> outras<br />
cardinalida<strong>de</strong>s.<br />
Nome<br />
Morada<br />
Pessoa<br />
Nome<br />
Morada<br />
Núm. <strong>de</strong> beneficiário<br />
Pessoa<br />
0...* 0...1<br />
Sistema <strong>de</strong> saú<strong>de</strong><br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 30<br />
0...*<br />
Benefíciário<br />
0...1<br />
Núm. <strong>de</strong> beneficiário<br />
Sistema <strong>de</strong> saú<strong>de</strong><br />
Nome<br />
Nome
Classe associativa vs.<br />
Classe com duas associações muitos-para-um<br />
Classe associativa<br />
– Não permite ligar duas vezes os<br />
mesmos dois objectos;<br />
– No exemplo: Po<strong>de</strong> registar-se<br />
apenas umas vez que <strong>de</strong>terminado<br />
colaborador participou em<br />
<strong>de</strong>terminado projecto;<br />
Classe com duas associações<br />
– Permite ligar várias vezes os<br />
mesmos dois objectos;<br />
– No exemplo: Po<strong>de</strong>m registar-se<br />
várias participações do mesmo<br />
colaborador no mesmo projecto<br />
Projecto<br />
Projecto<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 31<br />
0...*<br />
0 ... *<br />
Participação<br />
Data <strong>de</strong> início<br />
Data <strong>de</strong> fim<br />
0 ... *<br />
0...*<br />
Colaborador<br />
Colaborador<br />
1 Participação<br />
1<br />
Data <strong>de</strong> início<br />
Data <strong>de</strong> fim
Agregações<br />
As Agregações são associações que se utilizam quando se<br />
preten<strong>de</strong> representar a noção <strong>de</strong> Todo/Parte (um todo<br />
constituído por partes).<br />
Holding<br />
Nome 0...1 0 … *<br />
Empresa<br />
Nome<br />
Morada<br />
Uma holding é constituída por empresas.<br />
Uma empresa po<strong>de</strong> estar incluída numa holding.<br />
Automóvel<br />
Matrícula<br />
Marca<br />
Mo<strong>de</strong>lo<br />
1 4<br />
Um automóvel inclui 4 rodas e 1 volante,<br />
nem mais nem menos.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 32<br />
1<br />
Roda<br />
Nº <strong>de</strong> série<br />
Tipo <strong>de</strong> pneu<br />
Tipo <strong>de</strong> jante<br />
Volante<br />
Nº <strong>de</strong> série<br />
Material<br />
As agregações são representadas graficamente por uma linha<br />
adornada com losângulo branco no extremo correspon<strong>de</strong>nte ao todo.
Composições<br />
As composições são um caso especial <strong>de</strong> agregações<br />
Isto é, tal como as agregações, representam situações em que um objecto <strong>de</strong> uma<br />
classe (composição) inclui um conjunto <strong>de</strong> objectos <strong>de</strong> outra classe (componentes)...<br />
...mas têm semântica adicional:<br />
Os componentes apenas existem no contexto do todo.<br />
Factura<br />
Número<br />
Data<br />
1 0 … *<br />
Linha <strong>de</strong> factura<br />
Produto<br />
Quantida<strong>de</strong><br />
Preço unitário<br />
Uma factura é uma composição <strong>de</strong> linhas:<br />
- A factura é constituída por linhas;<br />
- As linhas não existem senão <strong>de</strong>ntro da factura.<br />
Graficamente, o losângulo é<br />
preenchido a cheio quando a<br />
associação é do tipo<br />
composição.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 33
Composições<br />
O facto <strong>de</strong> numa composição os objectos componentes apenas<br />
existirem no contexto do objecto composto significa:<br />
– Quando se remove o objecto composto, todos os seus componentes<br />
são automaticamente removidos<br />
– Os objectos componente incluem no seu mecanismo <strong>de</strong> i<strong>de</strong>ntificação<br />
o mecanismo <strong>de</strong> i<strong>de</strong>ntificação do objecto composto<br />
• Uma linha <strong>de</strong> factura só se po<strong>de</strong> i<strong>de</strong>ntificar univocamente se também<br />
mencionarmos a i<strong>de</strong>ntificação da factura a que diz respeito<br />
• Os nome dos <strong>de</strong>partamentos po<strong>de</strong>m repetir-se entre empresas – se não<br />
juntarmos o nome da empresa não conseguiremos distinguir certos<br />
<strong>de</strong>partamentos que possuam idêntica <strong>de</strong>signação em empresas distintas<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 34
Factura nº 123 Data: 12/12/1999<br />
Cliente: João Silva Nº Cont. 1234567<br />
Linha Produto Quant. P. Unit Total<br />
1 Produto A 2 5000 € 10000 €<br />
2 Produto B 1 3000 € 3000 €<br />
3 Produto X 3 2000 € 6000 €<br />
Total 19000 €<br />
Composições<br />
Linhas <strong>de</strong> factura diferentes, apesar <strong>de</strong><br />
possuírem os mesmo valores.<br />
Factura nº 100 Data: 12/10/1999<br />
Cliente: Ana Silva Nº Cont. 1234568<br />
Linha Produto Quant. P. Unit Total<br />
1 Produto X 2 5000 € 10000 €<br />
2 Produto B 1 3000 € 3000 €<br />
3 Produto Y 3 2000 € 6000 €<br />
Total 19000 €<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 35
Problema:<br />
Preten<strong>de</strong>-se base <strong>de</strong><br />
dados para sítio <strong>de</strong> Web<br />
com serviço <strong>de</strong> reserva <strong>de</strong><br />
bilhetes para vários<br />
cinemas.<br />
Solução:<br />
Reserva<br />
Data<br />
Hora da sessão<br />
Nome da pessoa<br />
1 0 … *<br />
Composições<br />
Nome<br />
Código<br />
Cinema<br />
1<br />
1…*<br />
1<br />
1…*<br />
1<br />
1…*<br />
Sala<br />
Designação<br />
Fila<br />
Ca<strong>de</strong>ira<br />
Nr. <strong>de</strong> ca<strong>de</strong>ira<br />
<br />
<br />
<br />
Não conseguimos i<strong>de</strong>ntificar uma<br />
sala <strong>de</strong> cinema se não dissermos<br />
em que cinema está incluída<br />
Não conseguimos i<strong>de</strong>ntificar<br />
uma fila se não dissermos a que<br />
sala pertence<br />
Não conseguimos i<strong>de</strong>ntificar<br />
uma ca<strong>de</strong>ira se não dissermos<br />
a que fila pertence<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 36
Composições vs. vs. Agregações<br />
Apesar da obrigatorieda<strong>de</strong> existir em ambas as associações<br />
seguintes, são situações com semânticas distintas:<br />
Departamento<br />
Designação<br />
Factura<br />
Número<br />
Data<br />
1 0…*<br />
1 0…*<br />
Funcionário<br />
BI<br />
Nome<br />
Salário<br />
Linha <strong>de</strong> factura<br />
Produto<br />
Quantida<strong>de</strong><br />
Preço unitário<br />
• Significa que um funcionário que não trabalhe num<br />
<strong>de</strong>partamento não é relevante para o domínio em causa<br />
(se o seu <strong>de</strong>partamento for removido ele terá que ser<br />
excluído ou reposicionado em outro <strong>de</strong>partamento).<br />
• No entanto, o funcionário existe per si, não necessita<br />
<strong>de</strong> estar associado a um <strong>de</strong>partamento para ser<br />
referido/i<strong>de</strong>ntificado<br />
A Linha da factura só po<strong>de</strong> ser referida (distinguida das<br />
restantes) se for indicada a factura correspon<strong>de</strong>nte.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 37
A Composição como conceito <strong>de</strong> i<strong>de</strong>ntificação<br />
Em <strong>de</strong>senho <strong>de</strong> base <strong>de</strong><br />
dados, <strong>de</strong>signam-se por<br />
entida<strong>de</strong>s fracas aquelas<br />
entida<strong>de</strong>s que <strong>de</strong>pen<strong>de</strong>m <strong>de</strong><br />
outras para se i<strong>de</strong>ntificar<br />
A composição é a figura que<br />
em UML permite representar<br />
entida<strong>de</strong>s fracas.<br />
Mesmo que não haja<br />
semântica <strong>de</strong> todo-parte, <strong>de</strong>ve<br />
usar-se uma composição nas<br />
situações em que haja<br />
semântica <strong>de</strong> entida<strong>de</strong> fraca.<br />
Exemplo:<br />
Preten<strong>de</strong>-se manter numa base <strong>de</strong><br />
dados informação acerca <strong>de</strong> todas<br />
as cobranças <strong>de</strong> portagem nas<br />
auto-estradas nacionais.<br />
Como i<strong>de</strong>ntificar cada uma das<br />
cobranças?<br />
Não há semântica <strong>de</strong> todoparte.<br />
Apenas <strong>de</strong> entida<strong>de</strong> fraca: as<br />
cobranças i<strong>de</strong>ntificam-se<br />
através do dia e hora e da<br />
cabine on<strong>de</strong> ocorreram.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 38
Generalização<br />
Generalização é uma relação<br />
que permite representar a<br />
noção <strong>de</strong> subdivisão e<br />
especificida<strong>de</strong> em conjuntos <strong>de</strong><br />
objectos<br />
Todos os sócios partilham<br />
características comuns<br />
– Nome, morada, telefone, valor<br />
<strong>de</strong> quotização, etc.<br />
Mas há subgrupos com<br />
especificida<strong>de</strong>s<br />
– Individuais: Ida<strong>de</strong><br />
– Organizações: Número <strong>de</strong><br />
elementos<br />
Sócios<br />
Individuais<br />
Organizações<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 39
Generalização<br />
Porque têm atributos específicos<br />
Porquê distingui-los?<br />
exº: O CAE (Código <strong>de</strong> Activida<strong>de</strong> Económica) nas Organizações, a Ida<strong>de</strong> nos Individuais<br />
Porque têm associações específicas<br />
exº: Mercados on<strong>de</strong> as Organizações actuam<br />
Ou apenas porque se quer dar relevo a um subconjunto do domínio<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 40
O que é<br />
específico<br />
dos sócios<br />
individuais<br />
O que é<br />
comum a<br />
todos os<br />
sócios<br />
Individual<br />
Ida<strong>de</strong><br />
Profissão<br />
Generalização<br />
Sócio<br />
Nome<br />
Morada<br />
Telefone<br />
Organização<br />
São relações um-para-um: um sócio sócios apenas organização<br />
po<strong>de</strong> correspon<strong>de</strong>r a uma organização<br />
e uma organização correspon<strong>de</strong> (obrigatoriamente) a um sócio;<br />
Um Sócio não po<strong>de</strong> ser simultaneamente Individual e Organização;<br />
Um Sócio po<strong>de</strong> não ser nem Individual nem Organização;<br />
CAE<br />
0...* 1<br />
O que é específico dos<br />
Honorário<br />
Mercado<br />
Designação<br />
Um Sócio po<strong>de</strong> ser Honorário e Individual ou Honorário e Organização;<br />
As subclasses herdam todos os atributos da supraclasse/superclasse.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 41
Generalização vs. associação N-para-1<br />
Conta à<br />
or<strong>de</strong>m<br />
Conta bancária<br />
NIB<br />
Saldo<br />
C. Poupança<br />
Habitação<br />
...<br />
C. Poupança<br />
Reforma<br />
Se o conjunto <strong>de</strong> opções é imutável<br />
Se as diferentes opções têm especificida<strong>de</strong>s<br />
(atributos ou associações próprias)<br />
Se algumas opções irão ter um tratamento especial –<br />
por exemplo, permissões <strong>de</strong> acesso especiais<br />
Se as opções realçam conceitos importantes, por<br />
exemplo, se transmitem terminologia própria do<br />
domínio aplicacional<br />
ou<br />
?<br />
Conta bancária<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 42<br />
NIB<br />
Saldo<br />
0...* 1<br />
Tipo <strong>de</strong> conta<br />
Designação<br />
Se com alguma probabilida<strong>de</strong> po<strong>de</strong>m surgir novas<br />
opções ou as existentes po<strong>de</strong>m necessitar <strong>de</strong><br />
alterações<br />
Se não há especificida<strong>de</strong>s<br />
Se todas as opções têm igual tratamento<br />
Se as opções não correspon<strong>de</strong>m a conceitos <strong>de</strong><br />
gran<strong>de</strong> relevância no domínio aplicacional
Problema:<br />
Associações N-árias<br />
Empresa <strong>de</strong>seja efectuar<br />
divulgação através <strong>de</strong><br />
anúncios em vários<br />
meios <strong>de</strong> comunicação<br />
social. Para controlo <strong>de</strong><br />
custos e pagamentos<br />
necessita <strong>de</strong> registar as<br />
divulgações.<br />
Anúncio<br />
Solução 1: Permite a introdução <strong>de</strong> informação<br />
duplicada (mesmo anúncio no mesmo canal no<br />
mesmo dia)<br />
Solução 2: Associação ternária<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 43<br />
Título<br />
1<br />
Anúncio<br />
Título<br />
0...*<br />
Divulgação<br />
Data 0...*<br />
Dia<br />
Data<br />
Canal <strong>de</strong> divulgação<br />
Nome<br />
0...* 0...*<br />
0...*<br />
Divulgação<br />
1<br />
<br />
<br />
Canal <strong>de</strong> divulgação<br />
Nome
Associações N-árias<br />
No plano dos objectos, uma ligação N-ária envolve sempre N objectos<br />
Anúncio<br />
...um <strong>de</strong> cada classe argumento:<br />
“X é cabeça <strong>de</strong> cartaz”<br />
Anúncio<br />
Anúncio<br />
“X sabe bem”<br />
“X é a escolha da selecção”<br />
Anúncio<br />
Título<br />
Dia<br />
Data<br />
0...* 0...*<br />
0...*<br />
Dia<br />
1-Out-2005<br />
Divulgação<br />
Dia<br />
3-Jan-2005<br />
Dia<br />
7-Set-2005<br />
Dia<br />
8-Jul-2005<br />
Canal <strong>de</strong> divulgação<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 44<br />
Nome<br />
Canal <strong>de</strong> divulgação<br />
SIC<br />
Antena 3<br />
Canal <strong>de</strong> divulgação<br />
Expresso<br />
Canal <strong>de</strong> divulgação
Multiplicida<strong>de</strong>s em associações N-árias<br />
Definição <strong>de</strong> multiplicida<strong>de</strong>s numa relação ternária<br />
Nº <strong>de</strong> anúncios possível para<br />
um par {um dia, um canal}<br />
Anúncio<br />
Título<br />
Dia<br />
Data<br />
0...* 0...*<br />
0...*<br />
Divulgação<br />
Canal <strong>de</strong> divulgação<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 45<br />
Nome<br />
Nº <strong>de</strong> dias possível para um<br />
par {um anúncio, um canal}<br />
Nº <strong>de</strong> canais possível<br />
para um par {um<br />
anúncio, um dia}
Multiplicida<strong>de</strong> em associações N-árias<br />
Definição <strong>de</strong> multiplicida<strong>de</strong>s numa relação ternária<br />
Nº <strong>de</strong> homens possível para um<br />
par {uma mulher, uma criança}.<br />
Adoptar o Joãozinho com a<br />
Ana, apenas po<strong>de</strong> ter sido com<br />
um homem. Se o Joãozinho<br />
não foi adoptado pela Ana,<br />
então há zero homens<br />
associados ao par {Ana,<br />
Joãozinho}. Logo: 0 ou 1<br />
homens.<br />
0...1<br />
Homem<br />
Adopção<br />
Criança<br />
0...*<br />
Mulher<br />
Nº <strong>de</strong> mulheres possíveis para um<br />
par {um homem, uma criança}.<br />
Nº <strong>de</strong> crianças possíveis para um par<br />
{um homem, uma mulher}.<br />
O Pedro e a Ângela, juntos, po<strong>de</strong>m ter<br />
0 (zero) ou várias crianças adoptadas.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 46<br />
0...1<br />
Atenção que não é o nº <strong>de</strong> crianças<br />
envolvidas numa adopção!
Associações N-árias vs. (N-1) associações<br />
binárias<br />
Exemplos:<br />
– Inscrição: Aluno-disciplina-ano lectivo<br />
– Docência: Docente-disciplina-ano lectivo<br />
– Adopção: Casal-criança<br />
– Atribuição <strong>de</strong> óscar: Óscar-Filme-Ano<br />
– Reserva: Pessoa-Ca<strong>de</strong>ira-Sessão-Dia<br />
– Vendas<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 47
Associações n-árias: notação alternativa<br />
Ilustrar a notação losangular utilizada por várias<br />
ferramentas (por exemplo: Visio).<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 48
Associações reflexivas<br />
Também chamadas associações singulares<br />
Um funcionário po<strong>de</strong> ter 0 ou vários<br />
funcionários como subordinados<br />
subordinado<br />
Funcionário<br />
0...*<br />
chefe<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 49<br />
0...1<br />
Chefia<br />
Um funcionário po<strong>de</strong> ter 0 ou 1 chefe
Solução 1:<br />
Não permite registar ligações<br />
(aéreas) nem escalas.<br />
Associações reflexivas<br />
Problema:<br />
Agência <strong>de</strong> viagens preten<strong>de</strong><br />
registar reservas <strong>de</strong> voo.<br />
Aeroporto<br />
Nome<br />
1 origem 0...*<br />
<strong>de</strong>stino<br />
1 0...*<br />
Reserva<br />
Data<br />
Hora<br />
<br />
A uma reserva precisamos <strong>de</strong> po<strong>de</strong>r<br />
associar vários pares origem-<strong>de</strong>stino<br />
Solução 2:<br />
Aeroporto<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 50<br />
Nome<br />
origem<br />
0...*<br />
<strong>de</strong>stino<br />
0...*<br />
Perguntas extra:<br />
Permite voos Lisboa-Lisboa?<br />
Ligação aérea<br />
0...*<br />
0...*<br />
Reserva<br />
Data<br />
On<strong>de</strong> <strong>de</strong>verá ficar o atributo Hora?<br />
trajecto
Relações <strong>de</strong> <strong>de</strong>pendência<br />
As relações <strong>de</strong> <strong>de</strong>pendência permitem evi<strong>de</strong>nciar <strong>de</strong>pendências que<br />
não têm expressão como relações estruturais.<br />
Existe uma relação <strong>de</strong> <strong>de</strong>pendência quando uma alteração na<br />
especificação <strong>de</strong> uma classe origina uma alteração na especificação<br />
<strong>de</strong> outra classe.<br />
– Surgem quando alguma acção sobre os objectos <strong>de</strong> uma classe (a classe<br />
<strong>de</strong>pen<strong>de</strong>nte) envolve a utilização <strong>de</strong> objectos <strong>de</strong> outra<br />
– Só se especificam se não existir uma relação já <strong>de</strong>finida entre essas duas<br />
classes – esta, existindo, já dá indicação <strong>de</strong> <strong>de</strong>pendência entre as classes<br />
Disciplina<br />
Nome<br />
...<br />
Inscrição<br />
0...* 0...*<br />
Aluno<br />
Nome<br />
...<br />
(classe <strong>de</strong>pen<strong>de</strong>nte)<br />
<strong>de</strong>pendência<br />
Folha <strong>de</strong> receitas<br />
Data<br />
(classe <strong>de</strong> que é<br />
<strong>de</strong>pen<strong>de</strong>nte)<br />
• A inscrição <strong>de</strong> um aluno numa disciplina<br />
origina uma entrada <strong>de</strong> receitas – a classe<br />
Aluno <strong>de</strong>pen<strong>de</strong> da classe Folha <strong>de</strong><br />
receitas.<br />
• Não interessa manter registo das<br />
ligações entre alunos e folhas <strong>de</strong> receitas –<br />
não se especifica uma associação<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 51
Constraint: subset<br />
Usado para expressar que as ligações estabelecidas no<br />
contexto <strong>de</strong> uma dada associação são um subconjunto das<br />
estabelecidas no contexto <strong>de</strong> outra associação<br />
Clube<br />
Nome<br />
...<br />
0...1 plantel 0…*<br />
{ subset }<br />
0...1 0...1<br />
capitão<br />
Jogador<br />
Nr <strong>de</strong> camisola<br />
...<br />
O capitão <strong>de</strong> uma equipa (<strong>de</strong> um clube) é um dos elementos que figura no<br />
seu plantel.<br />
Este esquema indica que a base <strong>de</strong> dados não <strong>de</strong>verá <strong>de</strong>ixar apontar como<br />
capitão <strong>de</strong> uma equipa um jogador que não faça também parte do seu<br />
plantel.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 52
Constraint: xor<br />
Usa-se quando duas associações são exclusivas relativamente à classe que têm em<br />
comum – i. é, cada objecto <strong>de</strong>sta classe só po<strong>de</strong> estar associada a outro objecto por<br />
via <strong>de</strong> uma <strong>de</strong>stas associações, nunca por via das duas associações<br />
simultaneamente;<br />
Lê-se: “égzór”.<br />
Automóvel<br />
Matrícula<br />
Marca<br />
Mo<strong>de</strong>lo<br />
Um automóvel ou tem mudanças<br />
automáticas ou manuais.<br />
(Consi<strong>de</strong>re-se que aqueles carros<br />
que possibilitam a transição entre<br />
mudanças automáticas e manuais<br />
possuem uma caixa automática, a<br />
qual também possibilita uma<br />
condução manual).<br />
1 4<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 53<br />
1<br />
{xor}<br />
1<br />
Roda<br />
Caixa automática<br />
Caixa manual
Produto<br />
Código<br />
Nome<br />
Preço<br />
Dimensões<br />
...<br />
0 … * 0 … *<br />
1 … *<br />
Constraint: re<strong>de</strong>fines<br />
{re<strong>de</strong>fines}<br />
0 … *<br />
Carro <strong>de</strong> compras<br />
Encomenda<br />
Homem Mulher<br />
0…1 Namoro 0…1<br />
Homem casado<br />
namorado namorada<br />
{re<strong>de</strong>fines}<br />
0…1 0…1<br />
marido<br />
Casamento<br />
esposa<br />
Mulher casada<br />
O domínio <strong>de</strong> aplicação é um sítio <strong>de</strong> vendas on-line.<br />
• Os visitantes do sítio colocam produtos no seu carro <strong>de</strong><br />
compras.<br />
• As encomendas são carros <strong>de</strong> compras que foram<br />
aprovados para compra (o cliente <strong>de</strong>u or<strong>de</strong>m <strong>de</strong><br />
compra).<br />
• Necessariamente, ao passar a encomenda, um carro <strong>de</strong><br />
compras tem que ter pelo menos um produto – notar o<br />
“1...* ” na associação <strong>de</strong> baixo<br />
O conceito representado por uma relação homemmulher<br />
muda quando estes passam a ser pessoas<br />
casadas.<br />
Uma ligação <strong>de</strong> casamento substitui sempre uma<br />
ligação <strong>de</strong> namoro.<br />
• Pergunta: Porque é que a cardinalida<strong>de</strong> da<br />
associação Casamento é 0...1 e não 1...1?<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 54
Constraint: or<strong>de</strong>red<br />
Usa-se quando se preten<strong>de</strong> expressar que a base <strong>de</strong> dados<br />
<strong>de</strong>ve manter uma or<strong>de</strong>nação quanto às ligações<br />
estabelecidas para cada objecto<br />
Clube<br />
Nome<br />
...<br />
0...1 0…*<br />
plantel<br />
0...1 0... 3<br />
{ or<strong>de</strong>red }<br />
capitão<br />
Jogador<br />
Nr <strong>de</strong> camisola<br />
...<br />
• Um clube po<strong>de</strong> ter até 3 jogadores <strong>de</strong>signados para capitães <strong>de</strong> equipa.<br />
• Um é o 1º capitão e é este quem habitualmente <strong>de</strong>sempenha a função<br />
<strong>de</strong> chefia <strong>de</strong> equipa em campo. O 2º capitão só <strong>de</strong>sempenha esta função se<br />
o 1º estiver ausente. O mesmo se passa entre o 3º e 2º capitão.<br />
É importante registar a or<strong>de</strong>m pela qual os 3 capitães <strong>de</strong> uma equipa<br />
(clube) estão <strong>de</strong>signados, pois é o 1º capitão quem <strong>de</strong>sempenha.<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 55
Outras notações gráficas comuns em<br />
mo<strong>de</strong>lação <strong>de</strong> dados<br />
Mostrar aqui que muitos dos conceitos apresentados<br />
existem em outros formalismos, sendo frequente<br />
encontrar estes mesmos conceitos representados <strong>de</strong><br />
outras formas, nomeadamente:<br />
– Notação Crow’s foot<br />
– Notação Chen-ERD (E-R original)<br />
2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 56