Objetos em Bancos de Dados Relacionais Alcides Calsavara

Preview:

Citation preview

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

Recommended