Objetos em Bancos de Dados
Relacionais
Alcides Calsavara
Vantagens de BD







recuperação em caso de falha
compartilhamento entre usuários
compartilhamento entre aplicações
segurança
integridade
extensibilidade
distribuição de dados
Conceitos de BD relacionais

Partes de um RDBMS:
– dados que são apresentados como tabelas
– operadores para manipulação de tabelas
– regras de integridade para as tabelas
Estrutura lógica de um RDBMS





coleção de tabelas
cada tabela tem um determinado
número de colunas e um número
qualquer de linhas
colunas são chamadas de atributos
linhas são chamadas de tuplas
cada atributo tem um domínio: conjunto
de valores legais
Operadores de RDBMS

SQL:
– SELECT ... FROM ... WHERE ...
– CREATE TABLE ...
– INSERT ROW ... INTO TABLE ...
– DELETE ROW ... FROM TABLE ...
SET-ORIENTED
Integridade em RDBMS

Integridade de entidade: cada tabela
tem exatamente uma chave-primária
chave-primária: combinação de um ou
mais atributos cujo valor identifica
unicamente cada linha em uma tabela
Integridade em RDBMS (cont.)

Integridade referencial: cada chave
estrangeira deve ser consistente com
sua correspondente chave primária
chave estrangeira: é uma chave
primária de uma tabela embutida em
outra (ou na mesma) tabela
Formas normais



primeira: nenhum atributo contém um
grupo de valores
segunda: cada tupla deve ter uma
chave primária
terceira: cada atributo depende
diretamente da chave primária
OID como chave primária

Mapeamento classe-tabela
– há uma tabela para cada classe
– cada tupla corresponde ao estado de uma
instância (objeto) da classe
– a chave primária da tupla é a OID do
correspondente objeto
OID como chave primária (cont.)

Mapeamento associação-tabela
– há uma tabela para cada associação entre
classes
– cada tupla corresponde a uma ligação
entre instâncias (objetos) das classes
associadas
– a chave primária da tupla é composta
pelas OIDs dos objetos ligados
OID como chave primária (cont.)

vantagem:
associações são implementadas de forma
independente de propriedades de objetos
e, portanto, não requer atualização quando
objetos são modificados
OID como chave primária (cont.)

desvantages:
– RDBMS não gerencia OID: pode haver
ineficiência e desperdício de espaço
– a teoria relacional diz que dados são
manipulados de acordo com seus
atributos: OID é um artefato de
implementação que RDBMS tenta eliminar
OID como chave primária (cont.)

quando usar?
– use quando o acesso ao banco de dados é
restrito a programas
• contornar deficiências do RDBMS
• garantir integridade
• prover interface de usuário
– não use quando o acesso ao banco de
dados é feito diretamente por usuários
• interpretador SQL
Mapeamento classe-tabela
Pessoa
nome: Nome
endereço: Endereço
Mapeamento classe-tabela (cont.)
TABELA Pessoa
nome do atributo nulo? domínio
oid
N
OID
nome
N
Nome
endereço
Y
Endereço
Mapeamento classe-tabela (cont.)
CREATE TABLE Pessoa
( oid
char(40) not null,
nome
char(30) not null,
endereço char(50)
PRIMARY KEY (oid)
);
Mapeamento
associação-tabela

Tipos de associação:
– binária:
• muitos para muitos
• um para muitos
• um para um
– ternária
– ...
Associação binária
muitos-para-muitos
Empresa
nome
endereço
Trabalha-para
salário
Pessoa
nome
endereço
Associação binária
muitos-para-muitos (cont.)
TABELA Trabalha-para
nome do atributo
nulo? domínio
empresa-oid
N
OID
pessoa-oid
N
OID
salario
Y
Real
Associação binária
muitos-para-muitos (cont.)
CREATE TABLE Trabalha-para
( empresa-oid
char(40) not null,
pessoa-oid
char(40) not null,
salario
double,
PRIMARY KEY (empresa-oid, pessoa-oid),
FOREIGN KEY (empresa-oid)
REFERENCES Empresa,
FOREIGN KEY (pessoa-oid)
REFERENCES Pessoa
);
Associação binária
um-para-muitos
Empresa
nome
endereço
Trabalha-para
salário
Pessoa
nome
endereço
Associação binária
um-para-muitos (cont.)
TABELA Pessoa
nome do atributo nulo? domínio
oid
N
OID
nome
N
Nome
endereço
Y
Endereço
empresa-oid
Y
OID
salário
Y
Real
Associação binária
um-para-muitos (cont.)

vantagens da junção de tabelas:
– menos tabelas
– melhor desempenho devido ao menor
número de tabelas para navegar
Associação binária
um-para-muitos (cont.)

desvantagens da junção de tabelas:
– menos rigor de design: um objeto contém
informação sobre outro objeto (contra a
idéia de encapsulamento)
– extensibilidade reduzida: se a
multiplicade mudar para muitos-paramuitos então as tabelas devem mudar
– mais complexidade: a representação
assimétrica complica operações de busca
e atualização
Mapeamento de generalização

ABORDAGENS:
– (T) cada classe (superclasse e
subclasse) é mapeada para uma
tabela
– (C) somente cada classe concreta é
mapeada para uma tabela
– (R) somente a classe raiz da
hierarquia é mapeada para uma
tabela
Mapeamento de generalização
(cont.)
Moradia
endereço
área interna
Casa
Apartamento
área externa
número
Mapeamento de generalização
- abordagem T TABELA Moradia
nome do atributo
nulo?
domínio
moradia-oid
N
OID
endereço
N
Endereço
área-interna
Y
real
tipo-de-moradia
N
Tipo-Mor
Mapeamento de generalização
- abordagem T - (cont.)
TABELA Casa
nome do atributo nulo? domínio
moradia-oid
N
OID
área-externa
N
real
Mapeamento de generalização
- abordagem T - (cont.)
TABELA Apartamento
nome do atributo
nulo? domínio
moradia-oid
N
OID
andar
Y
integer
número
N
integer
Mapeamento de generalização
- abordagem C TABELA Casa
nome do atributo nulo? domínio
moradia-oid
N
OID
endereço
N
Endereço
área-interna
Y
real
área-externa
N
real
Mapeamento de generalização
- abordagem C - (cont.)
TABELA Apartamento
nome do atributo
moradia-oid
endereço
área-interna
andar
número
nulo?
N
N
Y
Y
N
domínio
OID
Endereço
real
integer
integer
Mapeamento de generalização
- abordagem R TABELA Moradia
nome do atributo
moradia-oid
endereço
área-interna
área-externa
andar
número
nulo?
N
N
Y
Y
Y
Y
domínio
OID
Endereço
real
real
integer
integer
Mapeamento de generalização
- comparação de abordagens 
abordagem T:
– mais genérica
– mais extensibilidade
– maior número de tabelas para gerenciar
– maior número de tabelas para navegar
– risco de inconsistência: um mesmo objeto
pode aparecer em mais de uma tabela
correspondente a subclasse
Mapeamento de generalização
- comparação de abordagens 
abordagem C:
– obedece a terceira forma normal
– replica atributos de superclasses
– não há como garantir que um atributo que
é "chave primária" em uma superclasse
não será duplicado nas diversas tabelas
das subclasses
Mapeamento de generalização
- comparação de abordagens 
abordagem R:
– tabela não está na terceira forma normal
– desperdício de espaço
– pode ter bom desempenho
Download

Objetos em Bancos de Dados Relacionais