aula objeto relacional
TRANSCRIPT
![Page 1: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/1.jpg)
1
Banco de Dados Objeto Relacional
características
Solange N. Alves de Souza 2
Banco de Dados Objeto- Relacional (BDOR)
Banco de dados relacional com extensões para manipulação de objetos e outras fatores de banco de dados orientado a objetos.
Classes,Herança,Agregação,Tipos definidos pelo usuário, ...
Uso da SQL para acesso aos objetos
![Page 2: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/2.jpg)
2
Solange N. Alves de Souza 3
Banco de Dados Objeto- Relacional (BDOR)Permite especificar e utilizar Tipos Definidos pelo Usuário (TDU ou UDT – User-Defined Type) da mesma forma que os tipos de dados pré-definidos.
Tipos Definidos pelo Usuário que encapsulam comportamento e estrutura interna (atributos).
A tabela convencional é estendida para permitir a referência de objetos (referência de tipos), UDTs e estruturas como domínio de colunas (Row type).
uso de referências para representar conexões inter-objetos, isso torna consultas mais compactas que quando feitas com junção;
Herança é implementada organizando todos os tipos em hierarquias;
Utiliza os construtores set, list, multiset ou array para organizar coleções de objetos;
Solange N. Alves de Souza 4
Estruturas de BDOR
Tipo de objetos:Um tipo de objeto funciona como um molde para criação de objetos, através da atribuição de valores a essa estrutura de dados.
Um tipo de objeto pode ser usado para:Criar um UDT
Criar uma estrutura (row type)
Criar tipos coleção (collection type)
Criar uma tabela de objetos
![Page 3: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/3.jpg)
3
Solange N. Alves de Souza 5
Criando um tipo e uma tabela com atributos, cujo domínio édo tipo definido
Tipos de objetos – Row Type
1. permite definir atributos multivalorados – estrutura aninhada
2. define uma estrutura de tupla (registro)
Fornecedores
codfornecnomefornecendfornec TEnd
ruanro
cidadeCEP
Row typeDomínio do
atributo é um tipo
* Noção de agregação*
Solange N. Alves de Souza 6
create type TEnd as object(rua varchar (20),nro numeric (4),cidade varchar(20),CEP numeric(9));
TEnd
ruanro
cidadeCEP
![Page 4: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/4.jpg)
4
Solange N. Alves de Souza 7
create type TEnd as (rua varchar (20),nro numeric (4),cidade varchar(20),CEP numeric(9));
Create table Fornecedores(codfornec numeric (3),nomefornec varchar (30),endfornec TEnd);
PostGreSQL
Solange N. Alves de Souza 8
insert into fornecedores values (nextval('s_fornec'), 'estrela', row ('Dr. Camisão', 3,'SãoPaulo',21360055));
insert into fornecedores values (nextval('s_fornec'), 'estrela', ('Dr. Camisão', 3,'SãoPaulo',21360000));
update fornecedores set endfornec=('Camisão', 3,'SãoPaulo',21360055)where codfornec=3
Usando o tipo definido no PostgreSQLFornecedores
![Page 5: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/5.jpg)
5
Solange N. Alves de Souza 9
select (endfornec).rua from fornecedoreswhere (endfornec).cidade='Osasco';
select * from fornecedoreswhere (endfornec).cidade='Osasco';
("Dr Aragão",12,Osasco,550776210)lua5
("Dr Aragão",12,Osasco,550776210)lua4
endfornecnomeforneccodfornec
Dr AragãoDr Aragão
rua
Consultando a estrutura aninhada
Solange N. Alves de Souza 10
Consultando atributos aninhados - mais
Notação de ponto para navegação nos atributos que fazem parte da estrutura aninhada:
select endfornec..rua from fornecedoreswhere endfornec..cidade='Osasco';
Não no PostgreSQL
![Page 6: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/6.jpg)
6
Solange N. Alves de Souza 11
Consultando ... mais
Removendo um tipo
Drop type tEnd
Drop type tEnd cascade
Podem haver campos cujo tipo
seja TEnd
campos aninhados são removidos da
tabela
Solange N. Alves de Souza 12
Tipos de Objetos – tipo coleção
1. Uma coleção é composta por elementos que podem ser de um tipo simples, ou uma UDT, ou row type.
2. Tipos coleção: sets, lists, arrays (coleção ordenada).
![Page 7: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/7.jpg)
7
Solange N. Alves de Souza 13
Exemplo - Array
Coleção ordenada
Sintaxe SQL99 (arrays de uma dimensão)
NotaVenda
númeroclientedataitem: ARRAY (10)Qtd: ARRAY (10)
Solange N. Alves de Souza 14
Usando o tipo ARRAY - exemplo
create table notavenda (numero numeric,cliente varchar(30),data date,item integer array[10],qtd_item integer array [10]);
Tipo de dado simples
![Page 8: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/8.jpg)
8
Solange N. Alves de Souza 15
Inserindo dados
insert into notavenda values (1, 'João Antônio', '10-10-2007', ARRAY[1,2,3], ARRAY[1,20,4]);
João Antônio{1,20,4}{1,2,3}10/10/20071
clienteqtd_itemitemdatanumero
E se o elemento do array fosse do tipo row type ou
UDT
row type – atributo e tipo de dado
UDT – atributos simpes e complexos e métodos
Solange N. Alves de Souza 16
mais
No PostgreSQL é possível criar arrays bi-dimensionais.
create table notavenda2 (numero numeric,cliente varchar(30),data date,item_e_qtd integer [10][10]);
{{1,2,3}, {1,20,4}}10/10/2007João Antônio1
Item_e_qtddataclientenumero
![Page 9: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/9.jpg)
9
Solange N. Alves de Souza 17
Outros tipos de coleções
Alguns SGBDOR’s suportam outros tipos de coleção:
Informix
List, Set e Multiset
Oracle
VARRAY (array variável cujos elementos podem ser objetos)
NESTED TABLE (atributo cujo domínio é uma tabela aninhada)
PostGreSQL
Pode-se definir um atributo cujo domínio é uma tabela
Solange N. Alves de Souza 18
Tipos de Objetos – Criação de Tabelas de objetos
Indicação do tipo a que pertence
Várias tabelas podem ser do mesmo tipo
create type TFornec as (codfornec numeric (3),nomefornec varchar (30))
create table fornecedores of type TFornec;
PostgreSQl não permite a criação de
tabelas de tipos
TFornec
codfornecnomefornecendfornec
![Page 10: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/10.jpg)
10
Solange N. Alves de Souza 19
OID (Identificadores de Objetos)
é o valor indicado por atributos de referência
pode ser uma chave primária
CREATE TABLE Fornecedores OF TYPE TFornecREF IS codFornec PRIMARY KEY;
Solange N. Alves de Souza 20
OID - continua
pode ser definido pelo usuário ou pelo sistema
CREATE TABLE Produtos OF TYPE TProdREF IS codProd USER GENERATED;
atributo definido pelo usuário, mas seu valor é controlado pelo sistema (OID)
CREATE TABLE Produtos OF TYPE TProdREF IS SYSTEM GENERATED;
OID gerado e controlado pelo sistema
![Page 11: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/11.jpg)
11
Solange N. Alves de Souza 21
Relacionamento entre Objetos
Esquema Modelo Relacional
relacionamento
Solange N. Alves de Souza 22
Esquema de Objetos
TProd
codproddescrprodprecoprod
TFornec
codfornecnomefornecendfornec
TCompra
fornecedorprodutodataqtd
Fornecedores ProdutoCompras
Referencias são usadas para representar
relacionamentos
![Page 12: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/12.jpg)
12
Solange N. Alves de Souza 23
Referência de objetos
Definição de relacionamento entre objetos
Não é semelhante a uma chave estrangeira (chave estrangeira pode ser composta)
só referencia uma tabela que tenha definido um OID
Solange N. Alves de Souza 24
SELECT fornecedor -> nomeFornecFROM ComprasWHERE qtde > 1000AND produto -> codProd = 45;
Referência de objetos - exemplo
Acesso a objetos relacionados
create type TCompras as (fornecedor REF (tfornec),Produto REF (tprod),data date,Qtd integer);
CREATE TABLE Compras OF TYPE TCompra;
indica uma referência a um OID e não a um atributo de um componente agregado
Postgre não oferece suporte a referência de objetos
![Page 13: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/13.jpg)
13
Solange N. Alves de Souza 25
Em BDR
SELECT f.nomeFornecFROM Compras c join Fornecedor f
on c.codfornec = f.codfornecWHERE qtde > 1000AND codProd = 45;
Solange N. Alves de Souza 26
Criando objetos de referência
Indicação dos valores de OIDs
INSERT INTO ComprasVALUES (REF(‘F102’), REF(1002), ’10/12/03’,1300);
![Page 14: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/14.jpg)
14
Solange N. Alves de Souza 27
Escopo de Referência
Uma referência indica um tipo
Deve-se definir o escopo da referência quando mais de uma tabela pertence ao tipo
SCOPE FOR <nome_atributo> IS <nome_tabela>
Solange N. Alves de Souza 28
CREATE TABLE Compras OF TYPE TCompra
SCOPE FOR fornecedor IS Fornecedores;
TProd
codproddescrprodprecoprod
TCompra
fornecedorprodutodataqtd
TFornec
codfornecnomefornecendfornec
Fornecedores ProdutoCompras
fornecedor
![Page 15: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/15.jpg)
15
Solange N. Alves de Souza 29
Tipos de Objetos – UDT
Define comportamento para os objetos
Encapsulamento de atributos e métodos
Permite herança de um tipo para um subtipo
CREATE TYPE <nometipo> (<lista de atributos>,[<declaraçãoAssinMétodos>])
[INSTANTIABLE]
[ [NOT] FINAL]
Pode gerar tabelas
Pode ou não ser especializado
Solange N. Alves de Souza 30
CREATE TYPE <nomeobjeto> AS OBJECT(atributo1 tipo_dado, ...,atributoN tipo_dado,
MEMBER PROCEDURE <nomeprocedimeto>[(parâmetro1 [IN | OUT | IN OUT] tipo_dado, ...,parâmetroN [IN | OUT | IN OUT] tipo_dado)],
BEGIN<corpo do procedimento>
END <member nomeprocedimento>)
![Page 16: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/16.jpg)
16
Solange N. Alves de Souza 31
Modelagem OR – Tipo definido pelo usuário (UDT)
TEmpregado
RGnome_empend_empgerentesalário_basecomissão
salário()
Empregados
TEnd
ruanro
cidadeCEP
Solange N. Alves de Souza 32
UDT para o modelo
create type TEmpregado (RG integer,nome_emp varchar (40),end_emp TEnd,gerente REF (TEmpregado),salario_base decimal (7,2),comissão decimal (7,2),
METHOD salário () RETURNS decimal (7,2); ...)
INSTANTIABLENOT FINAL;
create table Empregados of type TEmpregado;
Pode gerar tabelas
Pode ou não ser especializado
Lista de atributos
Declaração de assinatura de métodos
![Page 17: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/17.jpg)
17
Solange N. Alves de Souza 33
Métodos
Só podem ser definidos dentro de um TAD
Identificação do método a ser executado é determinado em tempo de execução (“late binding”)
Depende do objeto que o invoca ou de parâmetros
Solange N. Alves de Souza 34
Acesso a Métodos ou Funções
Métodos ou funções podem ser usados em consultas:
Select RG, nome_emp
From empregados
Where salario() > 10000.00;
![Page 18: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/18.jpg)
18
Solange N. Alves de Souza 35
Herança
Herança múltipla em geral não é permitida
CREATE TYPE <nomeTAD> UNDER <nomeTAD> (...)
CREATE TYPE TProfessor UNDER TEmpregado (titulação varchar(15),gratificação decimal (7,2),OVERRRIDING METHOD salário() RETURNS decimal (7,2);...)InstantiableNot final
Solange N. Alves de Souza 36
LOBs (Large OBjects)
Objetos de tamanho grande
Podem ser definidos como domínios de atributos de tabelas em BDOR.
são agora considerados parte do esquema do BD e não precisam ser mantidos e tratados em arquivos separados.
![Page 19: Aula Objeto Relacional](https://reader035.vdocuments.com.br/reader035/viewer/2022072115/55cf9966550346d0339d2e50/html5/thumbnails/19.jpg)
19
Solange N. Alves de Souza 37
Tipos de LOBs
CLOB (Character LOB – texto longo)
BLOB (Binary LOB – imagem)
São definidos em termos de KB, MB e GB
CREATE TABLE empregados (...currículo CLOB(500K),fotografia BLOB(12M),
...)
Solange N. Alves de Souza 38
LOBs - Operações
CONCATENATION, SUBSTRING, POSITION, OVERLAY,
predicados LIKE, ..., funções definidas pelo usuário.
SELECT nomeFROM empregadosWHERE currículo LIKE ‘*UFSC*’
Empregados...
curriculo: CLOB(500K)fotografia:BLOB(12M)
...
PostGreSQLnão suporta
tipos de dados LOBs e suas operações