Download - Especialização em Tecnologia da Informação
![Page 1: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/1.jpg)
Especialização em Tecnologia da Informação
Bancos de Dados Objeto-relacional e Orientados a Objetos
Maria Carolina ([email protected])
![Page 2: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/2.jpg)
Motivação
Conteúdo na prática
Projeto a ser desenvolvido
Prática é necessária
![Page 3: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/3.jpg)
Roteiro
Metodologia Exemplo
Minimundo Modelagem
Implementação Tipos Tabelas
Apresentação de uma solução Consultas
![Page 4: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/4.jpg)
Metodologia
![Page 5: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/5.jpg)
Metodologia escolhida
Uso de um caso de estudo Firmar conceitos Tirar dúvidas Realizar implementação ...
![Page 6: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/6.jpg)
Caso prático
![Page 7: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/7.jpg)
Domínio da aplicação
Qualquer estabelecimento comercial que precise armazenar informações sobre seus funcionários, clientes, produtos... Supermercado simples Loja que vende a varejo ou a atacado ...
![Page 8: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/8.jpg)
Minimundo (1)
Um cliente do supermercado é identificado por um código único, nome, endereço, telefone, CPF e data de nascimento. Cada cliente realiza vários pedidos, os quais só podem estar associados a um cliente.
![Page 9: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/9.jpg)
Modelo Conceitual (1)
![Page 10: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/10.jpg)
Minimundo (2)
Sobre um pedido, deseja-se armazenar um código de controle e a data de realização. A cada pedido, um ou mais produtos podem ser solicitados, mas é necessário saber a quantidade vendida e o valor de venda de cada unidade.
![Page 11: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/11.jpg)
Modelo Conceitual (2)
![Page 12: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/12.jpg)
Minimundo (3)
Um produto é reconhecido no sistema através de um código único, nome e preço. Cada produto é fornecido por um fornecedor, o qual é representado por um identificador, nome, endereço e CNPJ.
![Page 13: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/13.jpg)
Modelo Conceitual (3)
![Page 14: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/14.jpg)
Minimundo (4)
Cada pedido é atendido por apenas um funcionário, o qual é representado por um código único, nome, telefone, CPF, data de nascimento, endereço, função e salário, mas o mesmo funcionário é responsável por mais de um atendimento. Não existe a obrigatoriedade de que pessoas com a mesma função recebam o mesmo salário.
![Page 15: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/15.jpg)
Modelo Conceitual (4.1)
![Page 16: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/16.jpg)
Modelo Conceitual (4.2)
![Page 17: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/17.jpg)
Minimundo (5)
Os funcionários possuem uma organização interna na empresa: eles estão distribuídos em departamentos, porém um funcionário trabalha em apenas um departamento. Cada departamento possui um nome e um código.
![Page 18: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/18.jpg)
Modelo Conceitual (5)
![Page 19: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/19.jpg)
Minimundo (Observações) Quando houver necessidade de armazenar
telefone de alguém envolvido no sistema, deve-se armazenar no máximo 3 telefones (residencial, celular e comercial).
Já quando se falar em endereço, lembrar de especificar cada campo: Logradouro CEP Número Bairro Cidade Estado
![Page 20: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/20.jpg)
Implementação
![Page 21: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/21.jpg)
Implementação
Implementar esse modelo conceitual usando os conceitos Objeto-relacional da Oracle. Tipos Tabela de tipos Ref Nested Varray ...
![Page 22: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/22.jpg)
Contas Oracle
www.cin.ufpe.br/~mcts/ETI/OR-Oracle ArquivoContas ORACLE.txt
![Page 23: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/23.jpg)
Uma solução
![Page 24: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/24.jpg)
Minha implementação
www.cin.ufpe.br/~mcts/ETI/OR-Oracle ScriptCriacao.SQL Arquivos adicionais▪ ScriptDROP.SQL▪ ScriptPovoamento.SQL
![Page 25: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/25.jpg)
Consultas
![Page 26: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/26.jpg)
Consulta (1)
Selecionar os dados dos clientes que moram em Recife.
SELECT C.* from tb_cliente C WHERE C.endereco.cidade =
'Recife'
![Page 27: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/27.jpg)
Consulta (2)
Selecionar os telefones de todos os funcionários.
SELECT F.nome, T.* FROM tb_funcionario F,TABLE(SELECT telefones FROM tb_funcionario WHERE
id = F.id) T ORDER BY 1,2;
![Page 28: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/28.jpg)
Consulta (3)
Selecionar o nome e a quantidade de funcionários de cada departamento.
SELECT D.nome, COUNT(value(FUNC)) from tb_departamento D,
TABLE(SELECT dep.funcionarios FROM tb_departamento dep where dep.coddepartamento =
D.coddepartamento) FUNC GROUP BY D.nome
![Page 29: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/29.jpg)
Consulta (4)
Inserir um novo funcionário e associá-lo ao departamente de vendas.INSERT INTO tb_funcionario VALUES (8, null, 'Funcionario
Novo', TO_DATE('20/08/1980', 'dd/MM/yyyy'), array_telefone(null, tp_telefone(81, 89632541), null),tp_endereco('Ponte Velha', 1548, 'Recife Antigo', 'Recife', 'PE', '20639-154'), 1000, 'Vendedor', NESTED_REF_PEDIDO());
INSERT INTO TABLE(SELECT D.FUNCIONARIOS FROM tb_departamento D WHERE D.nome = 'Vendas') F VALUES((SELECT REF(Func) FROM tb_Funcionario Func WHERE Func.id = 8));
![Page 30: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/30.jpg)
Consulta (5)
Selecionar quantos pedidos cada cliente já realizou.
SELECT c.nome, COUNT(p.codigo) AS QtdePedidos FROM tb_cliente c LEFT OUTER JOIN tb_pedido p ON (p.ref_cliente = REF(c))group by c.nome;
![Page 31: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/31.jpg)
Consulta(6)
Selecionar o número de celular de cada funcionário Escreva uma função que receba dois
parâmetros:▪ Uma lista do tipo dos telefones▪ Índice onde se localiza o telefone que ser que
buscar. Utilize essa função para implementar
essa consulta
![Page 32: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/32.jpg)
Consulta (6)
CREATE OR REPLACE FUNCTION getMember (vlist tb_funcionario.telefones%type, indice NUMBER) RETURN tp_telefone IS BEGIN IF indice <= vlist.last THEN RETURN vlist(indice); END IF; RETURN NULL; END getMember;
SELECT nome, getMember(telefones, 2) FROM tb_funcionario;
SELECT X.nome, DECODE(getMember(X.telefones, 2), null, 'No members', to_char (getMember(X.telefones, 2).toString)) FROM
tb_funcionario X;
![Page 33: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/33.jpg)
Consulta (7)
Selecionar o valor gasto por cada cliente que já realizou alguma compra.
SELECT S.ref_pedido.ref_cliente.nome As nomeCLiente, SUM(S.valorvenda) AS QtdeGasta from tb_solicitacao SGROUP BY S.ref_pedido.ref_cliente.nome;
![Page 34: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/34.jpg)
Dúvidas do projetoO que sobrar do tempo... =D
![Page 35: Especialização em Tecnologia da Informação](https://reader035.vdocuments.site/reader035/viewer/2022062321/56813cdb550346895da68056/html5/thumbnails/35.jpg)
Especialização em Tecnologia da Informação
Bancos de Dados Objeto-relacional e Orientados a Objetos
Maria Carolina ([email protected])