Banco de Dados
Objetos Relacionais
Tabelas Aninhadas
1
Tabelas Aninhadas do Oracle
Permite uma relação seja usada como
valor de um conjunto de componentes.
 Seja T um UDT, a sentença abaixo cria
um tipo S cujos valores são relações com
rowtipe T, por:
CREATE TYPE S AS TABLE OF T ;

2
Exemplo: Tabela Aninhada
CREATE TYPE BeerType AS OBJECT (
name
CHAR(20),
kind
CHAR(10),
color CHAR(10)
);
/
CREATE TYPE BeerTableType AS
TABLE OF BeerType;
/
3
Example --- Continued

BeerTableType é usada na relação Manfs para
armazenar o conjunto de bebidas que
produzidas por cada fabricante.
CREATE TABLE Manfs (
name
CHAR(30),
addr
CHAR(50),
beers
beerTableType
);
Nested Table
Tipo Tabela
4
Armazenamento de Nested Table

As tabelas aninhadas não são armazenadas
pelo Oracle como relações separadas.
 Apenas


aparenta ser assim
Em vez disso, existe uma relação R na qual
todas as tabelas aninhadas para um atributo
A são armazenadas.
Este relação (R) é declarada em CREATE
TABLE by:
NESTED TABLE A STORE AS R
5
Armazenamento de Nested Table
DEPARTAMENTOS
Nome
.......
Empregados
A
Tabela de Armazenamento
NESTED_TABLE_ID
B
B
C
B
D
C
Values
A
D
- Oracle armazena as linhas de uma nested
table em uma tabela separada (tabela de
armazenamento)
- o oracle usa nested_table_id para
relacionar linhas na tabela de
armazenamento com a nested table
correspondente.
C
D
A
6
Exemplo: Armazenando
Tabelas Aninhadas
CREATE TABLE Manfs (
name
CHAR(30),
addr
CHAR(50),
beers
beerTableType
)
NESTED TABLE beers STORE AS BeerTable;
Note where the semicolon
goes and doesn’t go.
7
Transformando Relações em
Tabelas Aninhadas

Uma relação pode se tornar o valor de
uma tabela aninhada.

Use CAST(MULTISET(…) AS <type> ) na
relação para transformá-la no valor com o
tipo apropriado para uma tabela aninhada.
8
Exemplo: CAST --- 1


Seja uma relação Beers(beer, manf), em que
beer é um objeto BeerType e manf é uma string
(o fabricante da bebida).
Deseja-se inserir em Manfs uma nova tupla,
com os seguintes valores de atributos:
 beers:
conjunto de bebidas (na tabela Beers) em que
o valor do atributo manf é Coca-Cola Company
 nome: Coca-Cola Company
 addr: Brasil
9
Exemplo: CAST --- 2
Conjunto de bebidas
(BeerType) cujo
fabricante é
Coca-Cola Company
INSERT INTO Manfs VALUES(
'Coca-Cola Company', 'Brasil',
CAST( MULTISET(
SELECT bb.name, bb.manf FROM Beers bb
WHERE bb.manf = 'Coca-Cola Company'
)AS BeerTableType
)
);
Transforma o conjunto de objetos
resultantes em uma tabela aninhada
10
Query em uma Tabela Aninhada
Uma tabela aninhada pode ser convertida
em uma tabela comum pela aplicação do
operador THE(…).
 Esta relação pode ser usada em uma
cláusula FROM como qualquer outra
relação.

11
Exemplo: Uso do THE

Encontrar o nome das bebidas que estão no
conjunto de bebidas do fabricante Coca-Cola
Company
Tabela aninhada do fabricante
cujo nome é 'Coca-Cola Company’,
Convertida em uma tabela comum
pelo operador THE
SELECT bb.name
FROM THE(
SELECT beers
FROM Manfs
WHERE name = 'Coca-Cola Company'
) bb;
Alias da tabela aninhada (que não tem nome)
12
Exercícios
1.
Inserir na tabela Estudios um estúdio com os seguintes
valores de atributos:


2.
Nome: ‘Ilha do Retiro’
Endereço:
 Rua: Av. Sport Club do Recife
 Número: 100
 Cidade: Recife
Inserir na tabela Filmes um filme com os seguintes
valores de atributos:



Nome: ‘Campeao do Centenario’
Estudio: Referencia para o estudo criado anteriormente
Duração: 100
13
Exercícios (continuação)
3.
4.
No tipo ESTUDIOS, insira uma tabela aninhada para
conter os FILMES que foram realizados no estúdio.
Insira na tabela ESTUDIO um estúdio com os
seguintes valores de atributos:


Nome: Estadio do Sport
Endereço:




Rua: ‘Av.Sport Club do Recife’
Númer0: 101
Cidade: Recife
Filmes:

Conjunto de Filmes gravados no estúdio de nome ‘Ilha do Retiro’
14
Exercícios (continuação)
5.
6.
7.
8.
Listar o nome dos filmes do conjunto de filmes
do estádio de nome ‘Estadio do Sport’
Listar o nome dos filmes do conjunto de filmes
do estádio de nome ‘Ilha do Retiro’
Atualizar o objeto Estúdio de nome ‘Ilha do
Retiro’ para que valor de seu atributo filmes
seja o conjunto de filmes cujo nome do estúdio
onde foi gravado seja ‘Ilha do Retiro’.
Listar o nome dos filmes do conjunto de filmes
do estádio de nome ‘Ilha do Retiro’
15
Download

CS206 --- Electronic Commerce