Escolar Documentos
Profissional Documentos
Cultura Documentos
Fernando Lobo
1 / 56
5 Carregar os dados
6 Desenvolver aplicações
2 / 56
Passos para criar uma base de dados (cont.)
3 / 56
Modelos conceptuais
4 / 56
Unified Modeling Language (UML)
5 / 56
Diagrama de classe
<nome da classe>
<atributos>
<metodos>
6 / 56
Diagrama de classe
<nome da classe>
<atributos>
7 / 56
Exemplo
8 / 56
Exemplo
Aluno
numero: int
nome: string
telefone: string
morada: string
9 / 56
Exemplo
Aluno
numero
nome
telefone
morada
10 / 56
Chave primária
Aluno
PK numero
nome
telefone
morada
11 / 56
12 / 56
Associações
13 / 56
Exemplo
Aluno Disciplina
PK numero PK sigla
realiza
nome nome
telefone 0..* 0..*
morada
14 / 56
Associações podem ser vistas em forma de tabela
Alunos
numero nome morada telefone
34567 José Almeida Rua da Prata, 27, Faro 96-3334598
45301 Maria Tavares Av. da Liberdade, 13, Faro 91-9837788
38750 Paula Soares Av. de Paris, 14, Olhão 91-4201314
... ... ... ...
Disciplinas
sigla nome
BD Bases de Dados
POO Programação Orientada a Objectos
... ...
Realiza
aluno disciplina
34567 BD
34567 POO
38750 POO
... ... 15 / 56
Multiplicidade de associações
16 / 56
Exemplo
Aluno Disciplina
PK numero PK sigla
realiza
nome nome
telefone 5..30 0..10
morada
17 / 56
Multiplicidade de associações
18 / 56
Multiplicidade um-um
C1 C2
19 / 56
Multiplicidade muitos-um
C1 C2
20 / 56
Multiplicidade muitos-muitos
C1 C2
21 / 56
Classes associativas
22 / 56
Exemplo
Um aluno realiza uma disciplina e obtém uma nota.
Aluno Disciplina
a61234 nota=15
BD
nota=13
a61111 POO
nota=15
a62222 nota=12
23 / 56
Aluno Disciplina
PK numero PK sigla
nome nome
telefone 0..* 0..*
morada
Realiza
nota
24 / 56
É necessário tomar decisões na modelação
25 / 56
Aluno Disciplina
PK numero PK sigla
nome nome
telefone 0..* 0..*
morada
Realiza
nota
ano
26 / 56
Aluno Disciplina
nota=15 , ano=2017
27 / 56
Aluno Disciplina
PK numero PK sigla
nome PK ano
telefone 0..* 0..* nome
morada
Realiza
nota
28 / 56
Mais decisões...
29 / 56
Conceptualmente . . .
Aluno Disciplina
nota=6 , ano=2015
nota=8 , ano=2016
nota=15 , ano=2017
30 / 56
Erro comum em UML
Aluno Disciplina
PK numero PK sigla
nome nome
telefone 0..* 0..*
morada
0..*
Inscreve−se
nota
ano
31 / 56
Aluno Disciplina
nota=6 , ano=2015
nota=8 , ano=2016
nota=15 , ano=2017
32 / 56
Mais adiante veremos como modelar este problema correctamente.
33 / 56
34 / 56
Conhecimento do mundo real
Não há uma única solução correcta, pode haver várias abordagens.
35 / 56
Não há dois filmes com o mesmo nome produzidos no mesmo ano
(mas pode haver em anos distintos: Ex: Há o King Kong de 1933,
mas também há o King Kong de 1976, e até ha o King Kong de
2005).
36 / 56
Modelo UML
Actor
0..* PK nome
pa
a rtici morada
p sexo
Filme
0..* data_nascimento
PK nome
PK ano 0..*
duracao
aCores
pro 0..1 Estudio
du z
PK nome
morada
37 / 56
O que estamos a proibir é que haja dois filmes com o mesmo nome
produzidos no mesmo ano.
38 / 56
Várias alternativas para chave primária
Exemplo:
I no caso da BD dos SA poderemos querer guardar o número do cartão
de cidadão do(a) aluno(a).
I temos duas opções para chave primária: número-de-aluno ou
numero-de-CC.
39 / 56
Um erro comum
Aluno
PK numero
PK numCC
nome
telefone
morada
40 / 56
Estúdio tem um presidente
Estudio Presidente
41 / 56
Filme Actor
PK nome PK nome
0..* 0..*
PK ano morada
duracao sexo
aCores data_nascimento
Participa
salario
42 / 56
Associações com a própria classe
Filme
0..1 original
PK nome
PK ano
duracao
0..* sequencia
aCores
43 / 56
sequência original
The Empire Strikes Back Star Wars
The Return of the Jedi The Empire Strikes Back
Rocky II Rocky I
Rocky III Rocky II
... ...
44 / 56
Subclasses
45 / 56
Subclasses
Filmes
PK nome
PK ano
duracao
aCores
Crime−Misterio Cartoons
arma
46 / 56
Subclasses
I disjuntas ou sobrepostas
F disjunta se um objecto não pode estar em mais do que uma subclasse,
sobreposta caso contrário.
47 / 56
PK nome
PK ano
duracao
aCores
parcial, sobreposta
Crime−Misterio Cartoons
arma
Filmes Estudios
significa 0..1
49 / 56
Composição
Filmes Estudios
significa 1..1
50 / 56
Agregação e Composição
51 / 56
Classe de suporte
Por vezes podemos ter uma classe que serve de suporte a outra classe.
52 / 56
Classe de suporte
53 / 56
Aluno Disciplina
nota=6 , ano=2015
nota=8 , ano=2016
nota=15 , ano=2017
54 / 56
Assim NÃO
Aluno Disciplina
PK numero PK sigla
nome nome
telefone 0..* 0..*
morada
0..*
Inscreve−se
nota
ano
55 / 56
Assim SIM
Inscriçao
0..* PK ano 0..*
PK PK
nota
Aluno Disciplina
PK numero PK sigla
nome nome
telefone
morada
56 / 56