Objetos em Bancos de Dados Relacionais Alcides Calsavara.
-
Upload
stephanie-felgueiras-osorio -
Category
Documents
-
view
227 -
download
1
Transcript of Objetos em Bancos de Dados Relacionais Alcides Calsavara.
![Page 1: Objetos em Bancos de Dados Relacionais Alcides Calsavara.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/1.jpg)
Objetos em Bancos de Dados Relacionais
Alcides Calsavara
![Page 2: Objetos em Bancos de Dados Relacionais Alcides Calsavara.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/2.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/3.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/4.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/5.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/6.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/7.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/8.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/9.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/10.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/11.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/12.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/13.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/14.jpg)
Mapeamento classe-tabela
nome: Nomenome: Nomeendereço: Endereçoendereço: Endereço
PessoaPessoa
![Page 15: Objetos em Bancos de Dados Relacionais Alcides Calsavara.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/15.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/16.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/17.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/18.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/19.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/20.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/21.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/22.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/23.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/24.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/25.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/26.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/27.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/28.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/29.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/30.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/31.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/32.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/33.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/34.jpg)
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.](https://reader036.fdocument.pub/reader036/viewer/2022062310/5706384d1a28abb8238f6b1e/html5/thumbnails/35.jpg)
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