35
Objetos em Bancos de Dados Relacionais Alcides Calsavara

Objetos em Bancos de Dados Relacionais Alcides Calsavara

Embed Size (px)

Citation preview

Page 1: Objetos em Bancos de Dados Relacionais Alcides Calsavara

Objetos em Bancos de Dados Relacionais

Alcides Calsavara

Page 2: 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

Page 3: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 4: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 5: Objetos em Bancos de Dados Relacionais Alcides Calsavara

Operadores de RDBMS

SQL:– SELECT ... FROM ... WHERE ...– CREATE TABLE ...– INSERT ROW ... INTO TABLE ...– DELETE ROW ... FROM TABLE ...

SET-ORIENTED

Page 6: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 7: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 8: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 9: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 10: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 11: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 12: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 13: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 14: Objetos em Bancos de Dados Relacionais Alcides Calsavara

Mapeamento classe-tabela

nome: Nomenome: Nomeendereço: Endereçoendereço: Endereço

PessoaPessoa

Page 15: Objetos em Bancos de Dados Relacionais Alcides Calsavara

Mapeamento classe-tabela (cont.)

TABELA Pessoa

nome do atributo nulo? domínio

oid N OID

nome N Nome

endereço Y Endereço

Page 16: Objetos em Bancos de Dados Relacionais Alcides Calsavara

Mapeamento classe-tabela (cont.)

CREATE TABLE Pessoa( oid char(40) not null, nome char(30) not null,

endereço char(50)PRIMARY KEY (oid)

);

Page 17: Objetos em Bancos de Dados Relacionais Alcides Calsavara

Mapeamentoassociação-tabela Tipos de associação:

– binária:• muitos para muitos• um para muitos• um para um

– ternária– ...

Page 18: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 19: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 20: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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);

Page 21: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 22: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 23: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 24: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 25: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 26: Objetos em Bancos de Dados Relacionais Alcides Calsavara

Mapeamento de generalização (cont.)

M oradia

endereçoárea interna

Cas a

área externa

Apartam ento

núm ero

Page 27: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 28: Objetos em Bancos de Dados Relacionais Alcides Calsavara

Mapeamento de generalização - abordagem T - (cont.)

TABELA Casa

nome do atributo nulo? domínio

moradia-oid N OID

área-externa N real

Page 29: Objetos em Bancos de Dados Relacionais Alcides Calsavara

Mapeamento de generalização - abordagem T - (cont.)

TABELA Apartamentonome do atributo nulo? domíniomoradia-oid N OIDandar Y integernúmero N integer

Page 30: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 31: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 32: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 33: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 34: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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

Page 35: Objetos em Bancos de Dados Relacionais Alcides Calsavara

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