Post on 07-Apr-2016
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
nome: Nomenome: Nomeendereço: Endereçoendereço: Endereço
PessoaPessoa
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)
);
Mapeamentoassociação-tabela Tipos de associação:
– binária:• muitos para muitos• um para muitos• um para um
– ternária– ...
Associação bináriamuitos-para-muitos
Em pres a
nom eendereço
P es s oa
nom eendereço
T rabalha-para
s alár io
Associação bináriamuitos-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áriamuitos-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áriaum-para-muitos
Em pres a
nom eendereço
P es s oa
nom eendereço
T rabalha-para
s alár io
Associação bináriaum-para-muitos (cont.)
TABELA Pessoanome do atributo nulo? domíniooid N OIDnome N Nomeendereço Y Endereçoempresa-oid Y OIDsalário Y Real
Associação bináriaum-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áriaum-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-para-muitos 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.)
M oradia
endereçoárea interna
Cas a
área externa
Apartam ento
núm ero
Mapeamento de generalização - abordagem T -TABELA Moradianome do atributo nulo? domíniomoradia-oid N OIDendereço N Endereçoárea-interna Y realtipo-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 Apartamentonome do atributo nulo? domíniomoradia-oid N OIDandar Y integernúmero N integer
Mapeamento de generalização - abordagem C -TABELA Casanome do atributo nulo? domíniomoradia-oid N OIDendereço N Endereçoárea-interna Y realárea-externa N real
Mapeamento de generalização - abordagem C - (cont.)
TABELA Apartamentonome do atributo nulo? domíniomoradia-oid N OIDendereço N Endereçoárea-interna Y realandar Y integernúmero N integer
Mapeamento de generalização - abordagem R -
TABELA Moradianome do atributo nulo? domíniomoradia-oid N OIDendereço N Endereçoárea-interna Y realárea-externa Y realandar Y integernúmero Y 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