6 – Atividade
Projetar Base de Dados
Objetivos deste módulo
• Apresentar os passos necessários para
realizar a atividade projetar base de dados
e discutir seus artefatos
Projeto Orientado a Objetos 3
Projetar Base de Dados
O que foi feito até agora
• Identificação das classes de análise, seus atributos, responsabilidades e relacionamentos
• Mapeamento das classes de análise em elementos de projeto
• Identificação das oportunidades de reuso • Definição da organização do sistema • Definição da distribuição do sistema
• Refinamento das realizações dos casos de uso
Projeto Orientado a Objetos 5
Objetivos desta atividade
• Definir as estruturas que serão usadas para armazenar os dados persistentes, de acordo com o meio de armazenamento adotado • Otimizar essas estruturas de acordo com os
requisitos não funcionais do projeto e estimativas do volume de dados a ser manipulado
Considerações
• Vamos assumir um SGBD relacional como meio de armazenamento
• Passos para bancos orientados a objetos são similares; passos para outros meios de
armazenamento não estão contemplados • Levar em conta o modelo corporativo da
instituição e regras de nomenclatura
Projeto Orientado a Objetos 7
Visão geral dos artefatos
Passos para Projetar base de
dados
1. Mapear classes persistentes
2. Mapear relacionamentos das classes
persistentes
3. Identificar índices
Projeto Orientado a Objetos 9
Passo 1. Mapear classes
persistentes
• Mapear atributos em colunas
• Mapear classes em tabelas
• Identificar chaves
Mapear atributos em colunas
• Regra geral - mapear diretamente
– cada atributo transforma-se em uma coluna
• Atributos complexos - como mapear?
Clie nte
n o m e : Strin g te le fon e : Strin g
e n d ere co R e s ide n cial : End e re co
E nderec o
Projeto Orientado a Objetos 11
Cliente
n om e : Strin g te lefon e : Strin g
e nd ere c o Res ide nc ia l : En de re c o
Cliente
clienteID (PK) nom e telefone logradouro num ero cidade es tado país C EP
Mapear atributos em colunas
• Mapeamento de atributos complexos
Mapear atributos em colunas
• Considerar também os valores máximos e mínimos para cada atributo
• O atributo pode ser chave?
– Preferencialmente, um único atributo para chave – Chaves devem ser estáveis!
Projeto Orientado a Objetos 13
Mapear classes em tabelas
• Analisar as classes persistentes
• O mapeamento dificilmente será direto
– hierarquias de classes
P es s oa
nom e enderec o telefone
Fornec edor produto
Func ionario
s a la rio d a ta Inicio
h o ra s Tra b a lha d a s
Mapear classes em tabelas
Projeto Orientado a Objetos 15
Mapear classes em tabelas
• Estratégias de mapeamento
– uma única tabela para todas as classes da hierarquia
– uma tabela para cada classe da hierarquia – uma tabela para cada classe concreta da
hierarquia
Mapear classes em tabelas
P es s o a p e s s o a ID (P K )
P es s oa
nom e enderec o telefone
Fornec edor produto
Func ionario s a la rio da ta Inicio ho ras Tra b a lh a da s
Projeto Orientado a Objetos 17
das classes persistentes
• Relacionamentos 1 para 1
• Relacionamentos 1 para muitos
• Relacionamentos muitos para muitos
Relacionamentos 1 para 1
Funciona rio s alario dataIn icio
C arta oPonto h o ra sT ra b a l h a d a s 0 ..1
1
1 0 ..1
Projeto Orientado a Objetos 19
Relacionamentos 1 para 1
• Chaves estrangeiras - FK (
foreign key)
– se as classes tiverem relacionamentos com outras classes
• Fusão das tabelas
– se uma das classes for não persistente
• A decisão é caso-a-caso
Relacionamentos 1 para 1
Funcionario salario dataInicio CartaoPonto horasTrabalhadas 0..1 1 1 0..1 Funcionario pessoaID (PK,FK) salario dataInicio CartaoPonto cartaoPontoID (PK) horasTrabalhadas pessoaID (FK) Funcionario
Projeto Orientado a Objetos 21
Relacionamentos 1 para muitos
• Como mapear?
Ativid ad e
n om e Fu ncio n ario
s a lario
d a taI nicio 11 1 ..*1 ..*
Relacionamentos 1 para muitos
• Mapeados através de chaves estrangeiras • A chave estrangeira é inserida na tabela com
multiplicidade * do relacionamento
Atividade nome Funcionario
salario
dataInicio 11 1..*1..*
Atividade
atividadeID (PK) nome
pessoaID (FK)
Funcionario
pessoaID (PK,FK) sal ario
Projeto Orientado a Objetos 23
muitos
• Precisam de uma tabela extra para representar a associação Cliente clienteID (PK) nom e telefone enderecoRes idencial
Cli enteCont a clienteID (FK) contaID (FK) Cont a contaID (PK) num ero saldo Conta numero saldo Cliente nome telefone
enderecoResidencial : Endereco 1..*1..* 1..*1..*
Passo 3. Identificar índices
• Otimização de consultas
• Custo extra na inclusão, remoção e
atualização de dados
Projeto Orientado a Objetos 25
Que colunas indexar?
• Chaves primárias são sempre indexadas
• Consultas
x
operações de manutenção
(inclusão/atualização/remoção de dados)
• Analisar descrições dos casos de uso e
requisitos não funcionais
– freqüência das operações – requisitos de desempenho
Passo 4. Criar estruturas de
armazenamento
• Normalmente é feito por um DBA • Usar ferramenta como apoio • Envolve:
– criar a base de dados, tabelas, colunas, etc.
– definir índices para as chaves primárias e restrições de integridade para chaves primárias e estrangeiras (se a ferramenta não criar automaticamente)
– restrições relacionadas a regras de negócio não são implementadas pelo banco
Projeto Orientado a Objetos 27