Objetos em Bancos de Dados Relacionais Alcides Calsavara
Vantagens de BD n recuperação em caso de falha n compartilhamento entre usuários n compartilhamento entre aplicações n segurança n integridade n extensibilidade n distribuição de dados
Conceitos de BD relacionais n 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 n coleção de tabelas n cada tabela tem um determinado número de colunas e um número qualquer de linhas n colunas são chamadas de atributos n linhas são chamadas de tuplas n cada atributo tem um domínio: conjunto de valores legais
Operadores de RDBMS n SQL: –SELECT... FROM... WHERE... –CREATE TABLE... –INSERT ROW... INTO TABLE... –DELETE ROW... FROM TABLE... SET-ORIENTED
Integridade em RDBMS n 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.) n 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 n primeira: nenhum atributo contém um grupo de valores n segunda: cada tupla deve ter uma chave primária n terceira: cada atributo depende diretamente da chave primária
OID como chave primária n 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.) n 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.) n 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.) n 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.) n 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: Nome endereço: Endereço Pessoa
Mapeamento classe-tabela (cont.)
CREATE TABLE Pessoa (oidchar(40)not null, nomechar(30)not null, endereçochar(50) PRIMARY KEY (oid) );
Mapeamento associação-tabela n Tipos de associação: –binária: muitos para muitos um para muitos um para um –ternária –...
Associação binária muitos-para-muitos
Associação binária muitos-para-muitos (cont.)
CREATE TABLE Trabalha-para (empresa-oidchar(40)not null, pessoa-oidchar(40)not null, salariodouble, 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
Associação binária um-para-muitos (cont.)
n 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.) n 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 n 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.)
Mapeamento de generalização - abordagem T -
Mapeamento de generalização - abordagem T - (cont.)
Mapeamento de generalização - abordagem C -
Mapeamento de generalização - abordagem C - (cont.)
Mapeamento de generalização - abordagem R -
Mapeamento de generalização - comparação de abordagens - n 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 - n 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 - n abordagem R: –tabela não está na terceira forma normal –desperdício de espaço –pode ter bom desempenho