Monitoria GDI. Aula Prática. OR (Aula 1)

Documentos relacionados
BD Objeto-Relacional - Motivação

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Banco de Dados. Professora: Luciana Faria

IMPLEMENTAÇÃO DE BANCO DE DADOS

Conceitos SQL SQL 19/03/2017 O que é dado? O que é BD? O que é uma informação? O que é SGBD? O que é SQL? O que é BD? O que é SGBD?

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Banco de Dados I Introdução SQL

Banco de Dados II. PL/SQL - Procedures -Cursor - Funções. Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

Avisos. Sumário. Atividade em lab Aula 29. Atividade em lab Aula 29. Programando com SQL Triggers EXERCÍCIO LAB SP. Vista da segunda prova

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Disciplina: Banco de Dados Tema: SQL Parte 2

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

Linguagem SQL Restrições, Triggers e Views

Fundamentos de Programação ORACLE: SQL. Prof. Walter Gima

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

BANCO DE DADOS GERENCIAL 1 A U L A 2

ESTUDO DE CASO EM PL/SQL

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

O Modelo Relacional. Criando relações em SQL

MySql. Introdução a MySQL. Andréa Garcia Trindade

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

O Modelo Relacional. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento)

SQL Linguagem de Definição de Dados

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

Manipulação de Dados com SQL

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

4. BD Objeto-Relacional (BDOR)

Banco de Dados. Diego Silveira Costa Nascimento. 20 de março de Instituto Federal do Rio Grande do Norte

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

BANCO DE DADOS PARA NINJAS

Rápida revisão do Modelo Relacional

A U L A 8 C O N S U L T A S U N I N D O D U A S O U M A I S T A B E L A S P A R T E 2

MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS. create database [if not exists] <nome>

INDEX. Serve para organizar os dados e agilizar a pesquisa/consulta dos dados armazenado nas tabelas.

Utilizando o Postgres - comandos SQL para a manipulação de dados

Tarefa Orientada 17 Scripts

Triggers(Gatilhos) Tiago Alves de Oliveira

Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl

BCD29008 Banco de dados

ACH2025. Aula 11. Visões. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

SISTEMAS DE INFORMAÇÃO

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Fundamentos de Banco de Dados Postgre com Sql

Tabelas. Banco de Dados I MySQL

Importar e Exportar Dados

Introdução ao PostgreSQL

Funções Definidas pelo Usuário

Agenda. Linguagem de Consulta SQL. 1. Introdução Histórico. 1. Introdução BD Relacionais

INSERT INTO shop VALUES (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69), (3,'D',1.25),(4,'D',19.95);

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

Administração de Banco de Dados

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

Prof. Dr. Joaquim Assunção Banco de Dados. SQL (parte 4) DDL Restrições

BANCO DE DADOS II CONVENIÊNCIA

Banco de Dados Loja Virtual. CLIENTE(ClienteId, PrimNome, UltNome, Endereço, Cidade, Cep, Telefone)

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

Suporte Nativo a XML no Oracle 10g

A linguagem SQL

Exercício 1 =========== -- criação dos tipos e das tabelas. CREATE TYPE PROFESSOR_TYPE AS OBJECT ( NOME VARCHAR2(15), DISCIPLINA VARCHAR2(15) ); /

Roteiro. SQL: Visões. Suporte de SQL para OLAP SELECT. Detalhando GROUP BY SQL DML CONTINUAÇÃO CONSULTAS AVANÇADAS. Consultas Avançadas Visões

Programação SQL. Introdução

Apresentação Modelo e SQL. André Luiz Montevecchi

Classes e Objetos. Sintaxe de classe em Java

Benvindo ao Curso de Introdução ao Firebird com Ferramenta de Relatórios!

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

Transcrição:

Monitoria GDI Aula Prática OR (Aula 1)

Roteiro Tipos Tabela de Objetos Herança Métodos Referências 2

Tipos e Tabelas de Objetos Tipos de Objetos oobjetos são abstrações de entidades do mundo real, como por exemplo, uma ordem de compra, um cliente, um produto oum tipo de objeto funciona como um molde para criação de objetos, através da atribuição de valores a essa estrutura de dados. 3

Tipos e Tabelas de Objetos Tipos de Objetos - Sintáxe ocriando um tipo CREATE [OR REPLACE] TYPE <nomedo tipo> AS OBJECT ( <listade atributos e métodos> ); oexcluindo um tipo DROP TYPE <nome do tipo> [FORCE]; 4

Tipos e Tabelas de Objetos Tabelas de Objetos o Objetos são diferentes de tabelas otipos de Objetos apenas definem uma estrutura lógica, contendo nome, métodos e atributos. Não obrigatoriedade da presença de métodos o Tabelas armazenam espaço físico o Cria-se tabelas de objetos previamente definidos ocada tabela recebe instâncias de objetos de apenas um tipo 5

Tipos e Tabelas de Objetos Tabelas de Objetos - Sintáxe o Criando uma tabela CREATE TABLE <nome da tabela> OF <nome do tipo> ( <lista de propriedades dos atributos> ); o Excluindo uma tabela DROP TABLE <nome da tabela>; 6

Tipos e Tabelas de Objetos Tabelas de Objetos - Sintáxe oinserindo uma linha em uma tabela INSERT INTO <nome da tabela> ( <nomesdos atributos> ) VALUES ( <valores> ); o Deletando de uma tabela DELETE FROM <nome data bela> WHERE <condição>; 7

Tipos e Tabelas de Objetos Tipos vs Tabelas otipos não permitem restrições de valores para os seus atributos; o Restrições devem ser feitas nas tabelas: NOT NULL UNIQUE PRIMARY KEY CHECK 8

Exercício 1 Construa um tipo Endereço com os seguintes atributos o Rua o Cidade o Estado o CEP Construa um tipo Pessoa, que possui o ID o Nome o Endereço 9

Exercício 1 - Resposta Tipo Endereço CREATE OR REPLACE TYPE tp_endereco AS OBJECT ( Rua VARCHAR2(50), Cidade VARCHAR2(25), Estado CHAR(2), Cep NUMBER ); Tipo Pessoa CREATE OR REPLACE TYPE tp_pessoas AS OBJECT ( id NUMBER, Nome VARCHAR2(25), Endereco tp_endereco ); 10

Exercício 2 Construa uma tabela para o tipo Pessoa o id é a chave primária Insira 3 pessoas nessa tabela 11

Exercício 2 - Resposta Tabela do tipo Pessoa CREATE TABLE tab_pessoa OF pessoas_tp (id PRIMARY KEY); Inserção de 3 pessoas INSERT INTO tab_pessoa VALUES (1, 'João', endereco_tp('rua Simão Mendes', 'Recife', 'PE', '53050110')); INSERT INTO tab_pessoa VALUES (2, 'Maria', endereco_tp('rua Padre Faustino','Jaboatão','PE', '45879362')); INSERT INTO tab_pessoa VALUES (3, 'José', endereco_tp('rua Ernesto Ribeiro','Olinda','PE', '15469781')); 12

Herança Apenas herança simples é permitida no ORACLE 13

Herança Controle do usuário sobre a definição de tipos e métodos herdáveis -FINAL e NOT FINAL. o Tipos abstratos CREATE [OR REPLACE] TYPE <nomedo tipo> AS OBJECT ( ) NOT INSTATIABLE ; o Para permitir criação de subtipos CREATE [OR REPLACE] TYPE <nomedo tipo> AS OBJECT ( ) NOT FINAL ; 14

Herança Sintaxe para criar um subtipo: CREATE [OR REPLACE] TYPE <nome do subtipo> UNDER <nome do tipo> ( <definição dos atributos específicos> ); 15

Exercício 3 Implemente o modelo, crie as tabelas necessários e realize 3 inserções Profissional nome data de nascimento Médico CRM especialista Engenheiro CREA 16

Exercício 3 - Resposta Criando os tipos CREATE OR REPLACE TYPE tp_profissional AS OBJECT ( nome VARCHAR2(100), data_nascimento DATE ) NOT FINAL NOT INSTANTIABLE; CREATE OR REPLACE TYPE tp_medico UNDER tp_profissional (crm NUMBER, especialidade VARCHAR2(30)); CREATE OR REPLACE TYPE tp_engenheiro UNDER tp_profissional (crea NUMBER); 17

Exercício 3 - Resposta Inserindo nas tabelas INSERT INTO tb_medico VALUES ( tp_medico('jose',to_date('05/04/2009','dd/mm/yyyy'), 12345, 'Cardiologista') ); INSERT INTO tb_medico VALUES ( tp_medico('ana',to_date('05/04/2009','dd/mm/yyyy'),54321, 'Neurologista') ); INSERT INTO tb_engenheiro VALUES ( tp_engenheiro('luiz',to_date('05/04/2009','dd/mm/yyyy'),34567) ); 18

Métodos Programas associados aos tipos que fazem computações e podem ter acesso aos atributos do tipo Na declaração de um tipo são definidas as assinaturas dos métodos, depois são implementados Tipos de Métodos o Member Method o Static Method o Constructor Method o Comparison Methods 19

Método Métodos podem ser FINAL ou NOT FINAL o o Para permitir que um método não possa ser sobrescrito nos subtipos, este deve ser definido como FINAL Por padrão, um método é definido como NOT FINAL CREATE [OR REPLACE] TYPE <nome do tipo> AS OBJECT ( <lista de atributos> <lista de assinatura dos métodos> ); CREATE [OR REPLACE] TYPE BODY <nome do tipo> AS ( <lista de implementações dos métodos> ); 20

Método Exemplo CREATE OR REPLACE TYPE tp_periodo AS OBJECT ( data_inicio DATE, data_fim DATE, CONSTRUCTOR FUNCTION tp_periodo (di DATE, df DATE) RETURN SELF AS RESULT, MEMBER FUNCTION dt_pertence (data DATE) RETURN INTEGER, MEMBER PROCEDURE set_datainicio(pdatadate), ORDER MEMBER FUNCTION match (p tp_periodo) RETURN INTEGER, MAP MEMBER FUNCTION compara RETURN INTEGER ); ATRIBUTOS CONSTRUCTOR METHOD MEMBER METHOD COMPARATION METHOD 21

Método ATENÇÃO! Um objeto só pode ter UM método MAP OU UM método ORDER. O código utilizado como exemplo anteriormente não funcionará pois possui um método MAP e um ORDER. 22

Método Member Functions o Podem ser chamados através de um SELECT como em funções de PL/SQL. Member Procedures o Só é possível chamá-los em Blocos Anônimos, Functions, Procedures ou Triggers, pois diferentemente das Member Function não possuem retorno 23

Método Comparison Method o o o o Permite a comparação de dois objetos Torna possível utilizar as cláusulas DISTINCT, GROUP BY, ORDER BY, UNION entre outras. Sem definir o MAP ou ORDER só é possível verificar se dois objetos são iguais São funções chamadas implicitamente pelo SGBD quando é realizada a comparação entre dois tipos. 24

MAP o Método Não possui parâmetros, retorna um valor escalar (CHAR, DATE, VARCHAR, NUMBER) que será comparado com o valor de outro objeto ORDER o Recebe sempre um objeto do mesmo tipo como parâmetro. É possível realizar comparações entre os objetos e retorna um número inteiro (negativo, zero, positivo). Semelhante a interface de Java java.util.comparator 25

Exercício 4 Crie um tipo TP_QUADRILATERO que possui como atributos o id, o altura o largura E possui os seguintes métodos: o Um construtor o Um método que retorna a área do quadrilátero o Um método que atualiza apenas a altura do objeto 26

Exercício 4 - Resposta Declaração do tipo CREATE OR REPLACE TYPE tp_quadrilatero AS OBJECT ( id NUMBER, altura NUMBER, largura NUMBER, CONSTRUCTOR FUNCTION tp_quadrilatero (id NUMBER, a NUMBER, l NUMBER) RETURN SELF AS RESULT, MEMBER FUNCTION getarea RETURN NUMBER, MEMBER PROCEDURE setaltura(a NUMBER) ); 27

Exercício 4 - Resposta Implementação dos Métodos CREATE OR REPLACE TYPE BODY tp_quadrilatero AS CONSTRUCTOR FUNCTION tp_quadrilatero (id NUMBER, a NUMBER, l NUMBER) RETURN SELF AS RESULT IS BEGIN id := i; altura := a; largura := l; END; MEMBER FUNCTION getarea RETURN NUMBER IS BEGIN RETURN altura * largura; END; MEMBER PROCEDURE setaltura(a NUMBER) IS BEGING altura := a; END; END; 28

Referência Tipo REF oretorna referência OID(ObjectId) a uma instância de uma object table oencapsula uma referência para um rowobject de um tipo de objeto especificado oo valor de um objeto do tipo REF é um ponteiro lógico para um rowobject. 29

Exercício 5 - Parte 1 Implemente os tipos do modelo abaixo, usando os conceitos de referência nome CPF Cliente N 1 possui Endereço bairo cidade CEP 30

Parte 1 - Resposta Criação dos tipos CREATE OR REPLACE TYPE tp_endereco AS OBJECT ( CEP VARCHAR(8), bairro VARCHAR(20), cidade VARCHAR(20) ); CREATE OR REPLACE TYPE tp_cliente AS OBJECT ( CPF VARCHAR(14), nome VARCHAR(30), endereco REF tp_endereco ); 31

Exercício 5 - Parte 2 Crie a tabela de endereços e a tabela de clientes Insira 2 endereços e 3 clientes o será necessário o uso de consulta aninhada 32

Parte 2 - Resposta Tabela de endereços CREATE TABLE tab_endereco OF tp_endereco (CEP PRIMARY KEY); Tabela de clientes CREATE TABLE tab_cliente OF tp_cliente (CPF PRIMARY KEY); 33

Parte 2 - Resposta Inserção de endereços INSERT INTO tab_endereco VALUES ('50100250', 'Santo Amaro', 'Recife'); INSERT INTO tab_endereco VALUES ('52021180', 'Espinheiro', 'Recife'); Inserção de clientes INSERT INTO tab_cliente VALUES ('12345678902', 'Rodrigo', ( SELECT REF(e) FROM tab_endereco e WHERE e.cep = '50100250')); INSERT INTO tab_cliente VALUES ('56789012303', 'Carlos', ( SELECT REF(e) FROM tab_endereco e WHERE e.cep = '50100250')); INSERT INTO tab_cliente VALUES ('78912345604', 'Marco', ( SELECT REF(e) FROM tab_endereco e WHERE e.cep = '52021180')); 34

Referência Faça um SELECT dos clientes e veja o retorno Faça um SELECT dos endereços dos clientes utilizando DREF SELECT DREF(c.endereco) FROM cliente c; 35

Dúvidas? 36