Вы находитесь на странице: 1из 31

1

1
A importncia do desenho lgico
da Base de Dados
O investimento inicial, muitas vezes elevado em nmero
de horas, no desenho lgico da Base de Dados crucial
para o sucesso da aplicao que se pretende desenvolver.
A obteno de um desenho lgico adequado um requisito
fundamental para que se possa assegurar que no viro a
surgir problemas com o funcionamento da Base de Dados.
Alguns dos problemas frequentes em estruturas de Bases
de Dados incorrectamente planeadas:
dados em falta
dados incorrectos
dados inconsistentes
2
Alguns objectivos de desenho para
uma Base de Dados relacional
A BD permite extrair toda a informao que se pretende.
Para tal tem de armazenar toda a informao necessria
satisfao dos requisitos de extraco da informao
A BD contm uma estrutura de tabelas eficiente :
cada tabela mantm informao associada a um nico
tema, objecto ou evento, com um mnimo de dados
redundantes e um ndice nico
suporta integridade dos dados a diferentes nveis:
os dados mantidos so precisos e correctos em qualquer
momento
suporta modificaes com alguma facilidade:
a estrutura obtida pode ser modificada ou expandida
com alguma facilidade
2
3
Fases do desenho lgico de uma aplicao de
BD
Anlise de requisitos: determinao dos requisitos da
aplicao de BD.
Obteno de um modelo dos dados: ser a partir do modelo
de dados que conseguiremos desenhar a a estrutura da BD,
tabelas, campos, chaves primrias e externas, relaes
entre tabelas
Normalizao: processo em que se determina, para cada
tabela, a sua correco (se verifica, nomeadamente, se
obedece s chamadas formas normais).
4
Diagramas de classes
Os diagramas de classes so a tcnica utilizada para a obteno de uma
estrutura correcta para os dados a manter numa aplicao de BD
Desenho lgico da aplicao de BD:
obteno de um (ou mais) diagrama(s) de classes , a partir da definio
de requisitos para a aplicao
teste do diagrama obtido, em funo dos requisitos, para verificar que a
estrutura correspondente permite a satisfao desses requisitos; se
necessrio, poder-se- proceder modificao do diagrama, para
assegurar essa satisfao
o diagrama assim obtido designado por diagrama de anlise
modifica-se o diagrama obtido, tendo em conta a necessidade da sua
implementao numa BD; obtemos o diagrama de desenho
determinam-se as tabelas, campos, chaves e relaes entre as tabelas, a
partir do diagrama de classes de desenho, usando um conjunto de regras
pr-definidas
a estrutura obtida pode, ainda, ser verificada, para se assegurar a sua
correco (respeito pelas regras de normalizao)
3
5
Classes
Uma classe:
a descrio de um grupo de coisas, acontecimentos ou conceitos
relevantes para uma determinada aplicao de base de dados
pretende-se manter, na aplicao, informao sobre cada um dos
elementos desse grupo
todos os elementos de uma classe (sejam eles coisas,
acontecimentos ou outra coisa qualquer) so descritos por um
conjunto de propriedades (atributos) comuns a todos eles;
todos os elementos de uma classe tm comportamentos comuns,
bem como relaes comuns com elementos de outras classes
cada elemento de uma classe (a que chamaremos instncia)
distingue-se dos outros por ter um conjunto de valores (para os
mesmos atributos), que diferente do conjunto de valores de
qualquer outro elemento
6
Exemplos de classes
Classe Pessoa:
Atributos:
Nome
Idade
Classe Automvel
Atributos:
Marca
Modelo
Instncias (Objectos) :
Uma instncia:
Artur Silva
33
Instncias :
Uma instncia
Opel
Corsa
4
7
Exemplos de classes (2)
Todos os elementos de uma mesma classe so descritos por um conjunto de
atributos comuns:
Pessoa - nome e idade;
Automvel - marca e modelo
Cada instncia (objecto) de uma classe distingue-se das outras instncias por
ter um conjunto de valores diferentes para os atributos:
Pessoa:
Nome: Artur Silva, Idade: 33
Nome: Pedro Costa, Idade: 18
Automvel:
Marca: Opel, Modelo: Corsa
Marca: Ford, Modelo: Fiesta
8
Representao grfica de uma classe
Cada classe identificada
custa de um rectngulo, com o
nome da classe na parte
superior, e com os diferentes
atributos relativos classe
abaixo dessa zona;
Abaixo da zona de atributos
podemos, ainda, especificar
operaes associadas classe.
-Nome
-Idade
Pessoa
-Marca
-Modelo
Automvel
5
9
Representao grfica de instncias de uma
classe
Pedro Costa
18
(Pessoa)
Artur Silva
33
(Pessoa)
Ford
Fiesta
(Automvel)
Opel
Corsa
(Automvel)
10
Classes, atributos, instncias e valores (1)
Uma classe define um molde, ao qual todas as instncias
dessa classe obedecem. Uma classe representa todas as
instncias possveis na aplicao de BD
Uma instncia duma classe obedece ao molde definido
pela classe, em que cada atributo da classe tem um valor
Um atributo de uma classe uma propriedade da classe,
como que um adjectivo que descreve essa classe. Cada
atributo da classe toma um determinado valor para cada
instncia da classe
Um valor um dado. O valor est para o atributo tal como
uma instncia est para uma classe
6
11
Classes, atributos, instncias e
valores (2)
Classe com
atributos
Instncias com valores
-Nome
-Idade
Pessoa
Pedro Costa
18
(Pessoa)
Artur Silva
33
(Pessoa)
12
Associaes
Uma associao descreve uma relao conceptual ou fsica
entre classes, que relevante para a BD que se pretende
desenvolver. Por exemplo:
Uma pessoa tem um automvel
Um pas tem uma capital
Uma associao pode relacionar duas ou mais classes
diferentes:
associao binria (a mais frequente e, por isso, a mais
importante) - associa duas classes
associao ternria (menos frequente, e com as quais nos
preocuparemos menos) - associa trs classes
Uma associao , normalmente, bidireccional, embora o
nome s se leia num sentido
7
13
Representao grfica de uma associao
binria
-Nome
Pas
-Nome
Cidade
Tem Capital
-Nome
-Idade
Pessoa
-Marca
-Modelo
Automvel
Tem
14
Representao grfica de uma associao
ternria
A figura ilustra uma
associao ternria.
Neste caso, uma
pessoa
(programador) usa
uma linguagem de
programao num
determinado
projecto
_
Pessoa
Projecto
Linguagem
8
15
Multiplicidade duma associao
A multiplicidade de uma associao diz-nos quantas
instncias de uma determinada classe se podem associar a
uma nica instncia de uma classe associada
A multiplicidade muitas vezes descrita como sendo 1 ou
mais, mas geralmente pode ser qualquer nmero inteiro
Exemplos:
Um pas possui uma nica cidade capital, cada capital
capital de um nico pas
Uma pessoa pode ter zero ou vrios carros, cada carro
pertence a uma ou mais pessoas
16
Representao grfica da multiplicidade de
operaes
Uma nica
Zero ou mais
Zero ou uma
Uma ou mais
1+
9
17
Multiplicidade : exemplos
No primeiro caso temos uma
associao 1:1; Cada pas tem
uma capital, e cada capital -o
de um pas, apenas.
No segundo caso, temos uma
associao N:N; Uma pessoa
pode ter 0 ou mais automveis,
e cada automvel pode ter 1 ou
mais donos (mas tem pelo
menos 1)
No terceiro, como a associao
diferente (pas tem cidade e
no pas tem cidade capital), a
multiplicidade mudou
-Nome
Pas
-Nome
Cidade
Tem Capital
-Marca
-Modelo
Automvel
-Nome
-Idade
Pessoa
1+
Tem
-Nome
Pas
-Nome
Cidade
1+
Tem
18
Ligaes e Associaes
As associaes
definem uma relao
entre classes
As ligaes so uma
instncia das asso-
ciaes, denotando
uma relao entre
instncias das
classes, entre as
quais existe a
associao respectiva
Classes e associao
Instncias e Ligaes
-Nome
Pas
-Nome
Cidade
Tem Capital
Frana
(Pas)
Espanha
(Pas)
Paris
(Cidade)
Madrid
(Cidade)
Tem Capital
Tem Capital
10
19
Papis numa associao
Um papel descreve um participante numa
associao. Numa associao binria, existem dois
papis, um por cada classe participante
O nome atribudo a cada papel identifica de forma
inequvoca cada lado da associao
Os papis tm sempre de ser definidos quando
uma associao ocorrer entre instncias da mesma
classe
Os papis so igualmente teis para distinguir
entre duas associaes distintas entre as mesmas
classes
20
Exemplos de papis numa associao
Uma pessoa, enquanto empregado, trabalha para uma
empresa, que desempenha o papel de empregador
Uma cidade capital de um pas, que tem outras cidades
(que no so capitais)
-Nome
-Idade
Pessoa
Empresa
Trabalha para
Empregado
Empregador
-Nome
Pas
-Nome
Cidade
Tem Capital
Capital
1+
Tem
11
21
Exemplos de papis numa associao (2)
Na figura ao lado, reparar
em duas ligaes entre
instncias diferentes de
Cidade (Paris e Marselha),
para a mesma associao
A ltima figura ilustra, por
outro lado, o facto de a
mesma instncia de Cidade
(Paris), participar em duas
ligaes distintas, uma
correspondendo associao
Tem Capital e a outra a
Tem
Frana
(Pas)
Paris
(Cidade)
Tem Capital
Frana
(Pas)
Paris
(Cidade) Tem
Frana
(Pas)
Marselha
(Cidade) Tem
22
Associaes: Auto-associaes
Como j foi referido, possvel
ter uma associao entre duas
instncias diferentes da mesma
classe
Na figura ao lado, temos uma
associao entre instncias da
classe Pessoa, sendo que a
Associao denota uma relao de
parentesco entre duas pessoas.
Assim podemos dizer que uma
pessoa pode ter 0 ou mais
parentes, que tambm so pessoas
Vemos, tambm, instncias da
classe e ligaes
Antnio Silva
31
(Pessoa)
Joaquim Silva
64
(Pessoa)
Fernando Silva
45
(Pessoa)
Tem
Tem
-Nome
-Idade
Pessoa
Tem
Parente
12
23
Atributos em associaes
Muitas vezes, as prprias
associaes entre classes tm
atributos, que no podem ser
colocados em nenhuma das
classes que participam na
associao
No exemplo ao lado claro que,
se quisermos manter a
informao sobre o tipo de
parentesco que existe entre as
pessoas, isso tem de ser feito na
associao, i.e., tem de ser
colocado um atributo na
associao
-Nome
-Idade
Pessoa
Tem
Parente
-Descrio
Parentesco
24
Aspectos interessantes do uso de atributos ou
classes em associaes: evoluo temporal
Um dos aspectos interessantes que decorrem do uso de
atributos em associaes, ou de representarmos uma
associao atravs de uma classe, a possibilidade de
introduzirmos a manuteno de informao da evoluo
temporal sofrida pela associao
Consideremos o seguinte exemplo: numa empresa, cada
trabalhador pertence a uma determinada categoria
profissional, a que est associado um determinado salrio,
por exemplo. Se quisermos modelar esta situao, parece
lcito concluir que, pretendendo capturar, num
determinado momento, a categoria profissional do
trabalhador, o modelo a usar seria o da pgina seguinte...
13
25
Captura da evoluo temporal das associaes
Cada trabalhador pertence, num
dado momento, a uma nica
categoria profissional;
naturalmente, com este tipo de
estrutura, quando o trabalhador
promovido a uma nova
categoria, a informao sobre a
sua categoria anterior
perdida.
Como que podemos resolver
este tipo de problemas, de modo
a manter sempre a categoria
actual, mas tambm todas as
categoria anteriores ?
Pessoa
-Descrio
-Salrio
Categoria
Profissional
Pertence a
26
Captura da evoluo temporal das associaes
Agora, o acesso a cada
categoria profissional pelo
trabalhador registado em
termos da sua data de incio.
Quando for promovido,
regista-se a data em que
deixou a categoria (data
final). Desta forma, para
qualquer instante no tempo
sei sempre qual era a sua
categoria nesse instante. A
categoria actual a de data
de incio mais recente.
Pessoa
-Descrio
-Salrio
Categoria
Profissional
1+
Pertence a
-Data Inicio
-Data Final
Acesso
14
27
Generalizao / especializao
O conceito de generalizao / especializao um conceito de
grande importncia na construo de diagramas de classes.
A generalizao a relao entre uma classe (designada por
super-classe) e uma ou mais variaes de si prpria (designadas
por sub-classes)
Numa generalizao as classes so organizadas de acordo com
as sua semelhanas e diferenas, estruturando a descrio das
instncias da classe.
A super-classe tem atributos e funcionalidade comuns a todas
as classes, enquanto cada sub-classe adiciona a essa parte
comum atributos e / ou funcionalidade especfica a cada sub-
classe (s estamos interessados em atributos - parte esttica)
28
Representao grfica de generalizao /
especializao
Um aspecto
relevante o de que
cada sub-classe
mantm
propriedades
especficas da sub-
classe. Livro, jornal
e revista tm
atributos diferentes.
S assim faz
sentido trat-los
como sub-classe
-Numero
Publicao
-Ttulo
-Autor
-Ano Publ.
Livro
-Nome
-N
-Data
Jornal
-Nome
-N
-Vol.
Revista
Tipo
15
29
Generalizao / especializao (2)
A especializao tem exactamente o mesmo significado que a
generalizao, mas oferece uma outra perspectiva sobre a
estrutura do sistema - o sistema visto de cima para baixo,
enquanto na generalizao o sistema visto de baixo para cima
A generalizao e a especializao so, assim, apenas
diferentes formas de ver a mesma relao entre classes num
diagrama
Podemos ter vrios nveis de generalizao. No caso anterior,
s temos um nvel.
Cada nvel da generalizao implementado custa de uma
propriedade das classes. No caso anterior, essa propriedade o
tipo de publicao
30
Atributos ou Sub-classes ?
Quando queremos modelar uma classe que tem uma
propriedade que pode assumir um conjunto determinado de
valores, conjunto esse que conhecido, devemos modelar a
classe atravs de um atributo, ou atravs de sub-classes ?
A resposta simples:
se a cada valor da propriedade (tipo no exemplo anterior) esto
associadas caractersticas diferentes para os objectos, devemos usar
uma sub-classe (como se fez no caso das publicaes)
se, para diferentes valores da propriedade a forma das instncias no
muda (temos os mesmos atributos, mas com valores diferentes) a
propriedade deve ser representada atravs de um atributo. Por
exemplo se quisssemos representar o tipo de capa de um livro (capa
dura, ou capa mole) num diagrama de classes, deveria-mos faz-lo
atravs de um atributo
16
31
Dados derivados
Um dado derivado um dado que pode ser completamente
obtido a partir de outros dados. Durante a fase de anlise,
um dado derivado s deve ser includo no modelo se
aparecer explicitamente na descrio do problema (e
mesmo assim)
Na implementao um dado derivado pode ser calculado
quando for necessrio, ou ser pr-calculado e apresentado
quando necessrio. Neste caso, sempre que os dados que
serviram para o seu clculo forem modificados, deve ser
assinalado como invlido e recalculado. Qual a melhor
soluo ? Depende do desempenho pretendido e do tempo
necessrio para fazer o clculo
32
Exemplo de dado derivado
No caso da classe
descrio do voo, a
hora de chegada
prevista pode ser
calculada a partir dos
outros dois campos.
Por isso um atributo
derivado.
Um atributo derivado
denotado atravs da /
antes do seu nome
-Hora Partida Prevista
-Durao Prevista
/Hora Chegada Prevista
Descrio Voo
17
33
Indicao de condies num diagrama
Uma condio uma
restrio funcional entre as
diversas entidades num
diagrama de classes. Isto
significa que a restrio
aplicvel a classes,
atributos, associaes,
etc.) Quando quisermos
descrever uma condio,
podemos faz-lo atravs
de texto colocado entre {}
-Salrio
Funcionrio
chefe
{salrio <= salrio
chefe}
34
O processo de construo de um diagrama de
classes
A partir duma especificao clara dos requisitos, procurar-
se- desenvolver um diagrama de anlise da forma que
procuraremos descrever sinteticamente. A especificao de
requisitos dever ser tornada to clara quanto possvel, de
modo a que se pode determinar com preciso qual a
informao que se pretende extrair, de modo a que se saiba
que dados necessrio armazenar.
Uma vez obtido o diagrama, cada mecanismo de interaco
entre o utilizador e o sistema dever ser analisado, de
forma a que se determine se a estrutura da informao
permite a implementao desse mecanismo. Se houver
problemas, o diagrama dever ser reformulado para
resolver a situao.
18
35
Fases da construo do diagrama
Identificao das classes:
obteno de classes candidatas
rejeio das que no interessarem
Identificao das associaes
processo semelhante ao de identificao de classes
Identificao de atributos para as classes e associaes
Se ainda no tiver sido feito, podemos ento procurar
construes de tipo generalizao / especializao entre
classes
Teste e refinamento do modelo, como foi dito
anteriormente
Construo de um dicionrio de dados, que defina cada
classe, atributos e associaes existentes.
36
Identificao das classes (1)
As classes, como foi definido, representam coisas,
objectos, conceitos, eventos, em relao aos quais
queremos armazenar informao na base de dados.
Cada classe s deve representar uma nica coisa, objecto,
conceito ou evento, i.e., s deve ter propriedades
associadas a um nico tema
A primeira abordagem consiste em, a partir dos requisitos,
procurar substantivos que nele estejam referenciados,
mesmo que eventualmente de uma forma implcita. Cada
substantivo ou cada tema presente deve ser examinado,
em termos da importncia de armazenarmos informao
sobre ele na BD
19
37
Identificao das classes (2)
Substantivos que produzam classes irrelevantes para o
problema a resolver, devero ser eliminadas da escolha
preliminar. Do mesmo modo, classes redundantes, i.e., que
surjam mais de uma vez com nomes diferentes, devem ser
eliminadas
Devemos ter cuidado com os nomes escolhidos para as
classes. Se tivermos diversos substantivos parecidos,
devemos escolher o que mais se adeqe ao domnio do
nosso problema
38
Identificao das classes (3)
Cada classe potencial dever ser examinada em termos das
suas propriedades. Se uma classe assegura a existncia de
uma propriedade importante, deve ser mantida. Se no
assegurar, se a classe servir apenas para fornecer um valor,
dever ser transformada num atributo
O teste de cada um dos mecanismo de interaco entre o
utilizador e o sistema, em princpio, permitir determinar
classes em falta
No esquecer modelar apenas as classes que tenham uma
correspondncia a objectos fsicos, mas tambm as
conceptuais, que no tenham uma existncia mais
palpvel
20
39
Identificao de associaes
No podemos esquecer que uma associao descreve uma
relao conceptual ou fsica entre classes
Para procurar essa dependncia, um bom ponto de partida
podem ser frases que contenham verbos usados numa
estrutura substantivo-verbo-substantivo (Uma venda
paga com um meio de pagamento) . No entanto uma frase
como um meio de pagamento o carto de crdito ou um
cheque ou dinheiro, usa um verbo mas descreve uma
relao do tipo um, pelo que descreve uma
generalizao
Procurar dependncias. Uma dependncia entre classes
pode ser uma associao (um voo chega ou parte a um
aeroporto). Algumas associaes podem resultar de
conhecimentos gerais
40
Identificao de associaes (2)
Uma vez identificadas associaes candidatas, devero
ser eliminadas as redundantes e as irrelevantes para o
problema (i.e., aquelas que no tm associada informao
importante para a BD)
Dever procurar evitar-se associaes ternrias
Cuidado com os nomes atribudos s associaes. Os
nomes so importantes para tornar clara a natureza da
relao entre as classes
Definir a multiplicidade de cada associao e os nomes dos
papis desempenhados quando isso for necessrio
A reviso dos mecanismos de interaco entre os
utilizadores e o sistema permitir detectar associaes em
falta
21
41
Identificao de atributos em classes e
associaes
Uma vez definida uma estrutura base de classes e
associaes, a especificao de requisitos deve ser
percorrida, no sentido de identificar as propriedades de
cada classe e associao. Muitas vezes so listadas
explicitamente (cada venda ter um recibo com n, data e
hora de emisso)
As frases possessivas e as enumeraes so fontes de
atributos
Manter apenas os atributos que so relevantes para a
aplicao
Notar atributos discordantes numa dada classe. Isso pode
ser uma indicao de que a classe necessita de ser partida.
Uma classe deve ser simples e coerente.
42
Deteco de generalizao / especializao
As classes devem ser analisadas para determinar a
necessidade de serem generalizadas (baixo para
cima) ou especializadas
Cada classe s deve ser especializada se tiver
atributos distintos, no basta que tenha valores
distintos para os mesmos atributos
Frase do tipo uma um podem indicar
generalizao
Tambm se pode tentar encontra classes que
tenham atributos semelhantes, que possam ser
agrupados em super-classes
22
43
Diagrama de classes de anlise
Obtido e testado o diagrama de classes, face aos
requisitos especificados, uma vez satisfeitos esses
requisitos, obtemos aquilo que podemos designar
por diagrama de anlise, por ser o que resulta da
anlise do domnio do problema. Podemos, ento,
preocuparmo-nos com a forma como o iremos
implementar.
Antes de implementado o diagrama poder sofrer
modificaes, que veremos numa fase posterior -
ser o diagrama de desenho
44
Obteno da estrutura de dados numa BDR
Obteno do diagrama de classes de desenho, a partir do
diagrama de classes de anlise
Obter domnios para cada campo
Refinar o diagrama de classes, em funo dos domnios
obtidos para cada campo, caso tal se revele necessrio
Obter as tabelas a partir das classes, associaes e
generalizaes, com a definio de uma chave primria e das
chaves estrangeiras que se revelem necessrias
Implementar cada um dos domnios para os campos da BD
Definir restries a nvel de integridade relacional nas
relaes entre tabelas
Definir ndices para as tabelas
23
45
Obteno do diagrama de classes de
desenho
Registar as chaves candidatas para cada classe . Isto
feito, no diagrama de classes, usando a notao {CKn}
frente de cada atributo da classe que pode ser chave
candidata. O n diferencia as diferentes chaves candidatas.
Uma chave candidata que inclua diversos atributos, em
simultneo, ter um n igual para todos os atributos. Caso
tenha de se criar um novo atributo, para se ter uma chave
candidata, isso deve ser feito.
46
Modificao do diagrama de anlise
para indicar chaves candidatas
-IDPessoa {CK1}
-Nome
-Idade
Pessoa
-IdMorada {CK1}
-Endereo
-Cdigo Postal
Morada
1+
Tem
No caso em apreo, cada uma das classes foi
modificada de modo a introduzir-se uma chave
candidata
24
47
Identificar domnios para os diversos campos
O domnio de um atributo representa o conjunto de valores possveis que esse
atributo pode assumir. Este domnio pode ser de vrios tipos, de entre os quais
se destacam os domnios de enumerao (em que os diversos valores que
podem ser assumidos so enumerados)
Quando se identifica o domnio de cada campo, nesta fase, esse domnio pode
ser identificado em termos de conceitos do domnio do problema (Ex: Nome de
uma pessoa - o domnio ser Nome, Tipo de telefone, o domnio ser
tipoTelefone) ou em termos de tipo de dados associado (Nmero, Texto, etc.)
Um outro tipo de domnio importante so os domnios estruturados. Por
exemplo, se considerssemos a morada um atributo de uma pessoa, esse
domnio seria estruturado, uma vez que poderia ser decomposto em, por
exemplo, endereo e cdigo postal
A cada domnio identificado ser, na implementao, associado um
determinado tipo de dados e um comprimento
48
Domnios de campos:representao no diagrama de desenho
-IDPessoa {CK1}: ID
-Nome: Nome
-Idade: Nmero (pequeno)
Pessoa
O domnio de cada atributo pode ser
representado custa da sua
explicitao, separado por :, frente
do atributo respectivo.
Cada domnio descrito de uma
forma explcita, por texto adequado.
Neste exemplo, o atributo pode
assumir um qualquer valor vlido para
o nome de uma pessoa (da o domnio
nome), IDPessoa pode assumir
qualquer valor vlido para um
identificador nico, e a idade ser
representada por um nmero
(pequeno)
25
49
Refinar o diagrama de classes de desenho (opcional)
Um refinamento opcional, mas que se pode revelar interessante, o de
modificar o desenho, de forma a transformar em classes atributos que sejam
representados por domnios de enumerao, em que se pretende assegurar
integridade dos dados, aquando do preenchimento dos valores desses
atributos. (Ex: tipoTelefone, ou Cdigo Postal, no caso de um endereo).
Numa situao dessas, a figura do diagrama seguinte exemplifica a
modificao introduzida.
Outra hiptese procurar identificar os diversos campos em cada classe
que possam vir a revelar-se candidatos incluso noutras classes, para se
evitarem problemas na implementao. Exemplo: atributos nulos, que
podem dar origem a outras classes
O diagrama de classes no tem (obrigatoriamente) de ser modificado para
que sejam introduzidas estas modificaes. Podero ser directamente
introduzidas na fase de criao das tabelas mas, serem-no nesta fase, facilita
a transio at fase de implementao.
50
Modificao do diagrama de anlise para
melhor assegurar integridade dos dados
Para se poder assegurar a
validade de cada cdigo
postal associado a cada
morada, o atributo foi
transformado numa classe.
Cada valor de cdigo postal
referenciado em morada ter
de existir na tabela Cdigo
Postal. Do ponto de vista da
anlise, o cdigo postal no
deixa de ser uma
propriedade da morada
-IDPessoa {CK1}
-Nome
-Idade
Pessoa
-IdMorada {CK1}
-Endereo
Morada
1+
Tem
-IdCdigo {CK1}
-Num Cdigo
-Loc. Cdigo
Cdigo Postal
26
51
Modificao do diagrama de anlise: evitar
ocorrncia de nulos
Neste caso, para se evitar o problema dos nulos na data final, o atributo Data Final foi
retirado da classe Acesso e colocado numa classe identificada como Fim de Acesso,
que tem uma associao de multiplicidade 0 ou 1 com a classe Acesso. A ausncia de
uma data final para um acesso equivaler, assim, a no haver uma entrada em Fim de
Acesso em que RefAcesso = IDAcesso
-IDPessoa {CK1}
-Nome
-Idade
Pessoa
-IdCategoria {CK1}
-Descrio
Categoria
Profissional
-IDAcesso {CK1}
-Data Inicio
Acesso
1+
-RefAcesso {CK1}
-Data Final
Fim de Acesso
52
Obter tabelas a partir das classes
Implementar classes:
Cada classe , normalmente, implementada
custa de uma tabela, i.e., teremos uma tabela
por cada classe existente no diagrama de
classes. A chave primria da tabela dever ser
escolhida a partir de uma das chaves candidatas
da tabela
27
53
Obter tabelas a partir de associaes muitos
para muitos
Cada associao muitos para
muitos (0+ ou 1+ para 1+ ou
0+), deve ser implementada
custa de uma tabela prpria. A
chave primria da nova tabela
a combinao das chaves
primrias de cada uma das
tabelas. Uma associao no
consegue assegurar multiplici-
dade mnima de 1. Teria de ser
o cdigo da aplicao a
assegurar isso.
-IDPessoa {CK1}
-Nome
-Idade
Pessoa
-IdMorada{CK1}
-Endereo
-Cod Postal
Morada
1+
1+
RefPessoa RefMorada
Pessoa/Morada
Morada
IDMorada Endereo Cod Postal
Pessoa
IDPessoa Nome Idade
54
Obter tabelas em associaes de 1 (ou 0) para muitos
Se a participao for
obrigatria, a associao ser
implementada atravs de uma
chave estrangeira colocada na
tabela relativa classe
automvel.
Se a participao no for
obrigatria (0 ou 1), a
associao tem de ser
representada por uma tabela
prpria, que incluir as chaves
primrias de cada uma das
tabelas como chaves
estrangeiras, e em que a chave
primria ser a chave da tabela
do lado muitos
-PessoaID (CK1}
-Nome
Pessoa
-Matrcula (CK1}
-Marca
Automvel
(part. Obrig.)
Pessoa
PessoaID Nome
Automvel
Matrcula Marca RefPessoaID
28
55
Obter tabelas para associaes 0 ou 1 para um
No caso de associaes de 0 ou 1 para um, a associao ser
representada por uma tabela, em que a chave estrangeira deve ser
colocada na tabela da classe 0 ou 1. No exemplo ilustrado, ser a
tabela do B.I. que ter a chave estrangeira PessoaID
-PessoaID {CK1}
-Nome
Pessoa
-Nmero {CK1}
B. I.
Pessoa
PessoaID Nome
B.I.
Nmero RefPessoaID
56
Obter tabelas para associaes
1 para 1
Neste caso, podemos ter uma nica
tabela
29
57
Obter tabelas para associaes que incluem
atributos ou so representadas por classes
Em qualquer destas duas situaes,
a associao deve ser representada
por uma tabela independente, que
dever incluir os atributos da
associao. Para alm disso, a
chave primria dever ser uma
combinao das chaves primrias
de cada uma das tabelas que
implementam as classes
associadas.
Se daqui no resultar uma chave
nica, cria-se uma nova chave
primria. o que acontece na
figura, admitindo que uma pessoa
pode voltar a uma categoria que j
teve.
-PessoaID {CK1}
-Nome
Pessoa
-IDCategoria (CK1}
-Descrio
Categoria
Profissional
1+
-IDAcesso {Ck1}
-Data Inicial
-Data Final
Acesso
58
Obter tabelas para associaes
ternrias
Uma associao ternria ser implementada
custa de uma tabela prpria. Se o conjunto
das chaves estrangeiras, obtido a partir de
cada uma das chaves primrias, formar uma
chave candidata, essa dever ser a chave
primria. Se no formar, deve ser criada
uma nova chave primria.
30
59
Obter tabelas para auto-associaes
Uma auto-associao implementada custa de uma tabela
para a si prpria, para alm da tabela associada classe
envolvida. Normalmente, a chave primria ser uma chave
composta custa das chaves estrangeiras associadas a cada
uma das instncias envolvidas. Se isso no constituir chave
primria, ter de ser criada uma outra.
-PessoaID {CK1}
-Nome
Pessoa
Parente
PessoaID Nome
RefPessoa1 RefPessoa2
60
Obter tabela para generalizao /
especializao
Neste caso, vamos ter uma
tabela para a super-classe e uma
tabela por cada uma das sub-
classes. A chave primria de
cada tabela correspondente a
cada sub-classe a chave
primria da tabela da super-
classe.
-Numero
Publicao
-Ttulo
-Autor
-Ano Publ.
Livro
-Nome
-N
-Data
Jornal
-Nome
-N
-Vol.
Revista
Tipo
IDPublicao Nmero
RefPub Ttulo Autor Ano
RefPub Nome N Data
RefPub Nome N Vol.
31
61
Implementao dos domnios dos
campos
Obtidas as tabelas por aplicao das regras anteriores,
temos depois que especificar um tipo de dados para
cada um dos atributos, de acordo com o domnio que foi
encontrado para o atributo, e de acordo com os tipos de
dados suportados pela aplicao onde vamos
implementar a BD.
62
Implementao de integridade
referencial e criao de indces
Criadas as tabelas e os campos, usa-se os
mecanismos de integridade referencial para as
chaves estrangeiras.
Depois, para melhorar o desempenho da aplicao,
devem ser criados ndices. Cada chave primria e
cada chave candidata so, normalmente, definidas
como ndices.

Вам также может понравиться