• Nenhum resultado encontrado

01 relatorioListEx4 240

N/A
N/A
Protected

Academic year: 2021

Share "01 relatorioListEx4 240"

Copied!
37
0
0

Texto

(1)

Pós-Graduação em Engenharia Eletrônica e

Computação - Área Informática (PG/EEC-I)

Relatório ListEx 4

CE-240

Projeto de Sistema de Banco de Dados

Prof. Dr. Adilson Marques da Cunha

Aluno: Jedson Zendron Figueiredo

(2)

SUMÁRIO

1 OBJETIVO ... 3

2 RESULTADOS DO DESENVOLVIMENTO DO TRABALHO ... 4

2.1. MODELODEDADOSRELACIONAL ... 4

2.1.1. Consultas ao Banco de Dados Oracle 11g ... 5

2.1.1.1. Primeira Consulta ... 6

2.1.1.2. Segunda Consulta ... 7

2.1.1.3. Terceira Consulta... 9

2.1.1.4. Quarta Consulta ... 12

2.1.2. Componentes de Sistema de Dicionário de Dados ... 15

2.1.2.1. Dicionário de Dados... 15

2.1.2.2. Diretório de Dados ... 17

2.1.2.3. Dicionário de Recursos de Dados... 17

2.1.2.4. Dicionário de Metadados ... 18

2.1.3. Conversão do Modelo de Dados Relacional ... 19

2.1.3.1. Modelo de Dados Hierárquico ... 19

2.1.3.2. Modelo de Dados de Redes ... 20

2.1.3.3. Modelo de Dados Orientado a Objetos ... 20

3 CONCLUSÃO... 22

(3)

1 OBJETIVO

Implementar a Terceira Forma Normal (3ªFN) da Técnica de Normalização, apresentada como conteúdo da matéria Projeto de Sistemas de Banco de Dados (BD) (CE-240), do Protótipo de Aplicativo de BD, utilizando um Modelo de Dados Relacional em um Sistema Gerenciador de BD (SGBD) previamente escolhido e testar a sua funcionalidade, visando reduzir o desperdício de recursos nas futuras fases de integração e melhorar a eficiência operacional dos futuros BD Setoriais (BDS), BD Corporativo (BDC) e do BD Holding (BDH); O trabalho realizado visa cumprir com os objetivos apresentados pela ListEx4, pesquisando os Modelos de Dados Hierárquico, Rede e Orientado a Objetos, e Converter a 3ªFN do Protótipo de Aplicativo de BD no Modelo de Dados Relacional para os Modelos de Dados Hierárquico, Rede e Orientado a Objetos, visando identificar algumas das suas principais diferenças e características.

(4)

2 RESULTADOS DO DESENVOLVIMENTO DO TRABALHO

Na ListEx3 foi desenvolvido a modelo do Aplicativo de Banco de Dados, no ERwin 4.1, mas para este trabalho foi necessário utilizar o ERwin 7, por que o mesmo contém as configurações para a geração dos scripts SQL, automaticamente no Oracle 11g, por meio de um modelo já desenvolvido na ListEx3, para então inserir os dados nas entidades e testar as Queries desenvolvidas para esse aplicativo. Na Figura 1, observa-se o Modelo Entidade e Relacionamento na 3ªFN do Aplicativo de Banco de Dados em questão, na versão ERwin 7.

Figura 1 – Modelo Entidade e Relacionamento (MER), na 3ªFN, construído no ERwin 7

2.1. MODELO DE DADOS RELACIONAL

Quanto à implementação do Modelo de Dados Relacional, foi implementado e testado a 3ªFN do Modelo de Dados Relacional do Protótipo de Aplicativo de Banco de Dados, através do Oracle SQL Developer, no banco de dados Oracle 11g, conforme pode ser visualizado na Figura 2.

(5)

Figura 2 – Demonstração da Criação das Tabelas, utilizando o Oracle SQL Developer, e os scripts SQL podem ser mais bem observados no Anexo A

2.1.1. Consultas ao Banco de Dados Oracle 11g

De acordo com o Modelo de Dados Relacional, na 3ªFN, demonstra-se abaixo a elaboração de 04 (quatro) consultas (ou queries) em Linguagem Natural (LN), em Linguagem SQL ANSI (SQL - ANSI) e Linguagem Estruturada de Consultas (Structured Query Language - SQL) (SQL – Estrutural de Consultas) envolvendo 1, 2 e 3 ou mais relações do Aplicativo de Banco de Dados, juntamente com testes de verificação do Protótipo de Banco de Dados.

(6)

2.1.1.1. Primeira Consulta

A Primeira Consulta deverá envolver uma relação e pelo menos um comando Select e um comando Project (ou equivalentes):

a) LN:

Encontre o código do tipo de dado com a descrição Confidencial.

b) SQL – ANSI:

SELECT tipo_dado WHERE tip_descricao = ‘Confidencial’ GIVING temp;

PROJECT temp OVER tip_cod GIVING resultado;

c) SQL – Estrutural de Consultas

SELECT tip_cod FROM tipo_dado

WHERE tip_descricao= ‘Confidencial’;

d) Resultados

Resultado (WHERE):

TIP_COD TIP_DESCRICAO TIP_ATIVO 1 Ostensiva SIM 2 Confidencial SIM 3 Evento Crítico SIM

Resultado Final (SELECT):

TIP_COD TIP_DESCRICAO TIP_ATIVO 1 Ostensiva SIM 2 Confidencial SIM 3 Evento Crítico SIM

O Resultado Final, utilizando a Ferramenta Oracle SQL Developer, pode ser visualizado na Figura 3.

(7)

Figura 3 – Demonstração de Consulta envolvendo uma relação

2.1.1.2. Segunda Consulta

A Segunda Consulta deverá envolver duas relações e pelo menos um comando Select, um Project e um Join (ou equivalentes):

a) LN:

Encontre a descrição e a data do gerenciamento para as difusões ocorridas no dia 11-mai-09.

b) SQL – ANSI:

SELECT difusao WHERE dif_data_difusao = ‘11-mai-09’ GIVING temp1;

JOIN temp1 AND gerenciamento OVER ger_cod GIVING temp2; PROJECT temp2 OVER (ger_descricao, ger_data_gerenciada) GIVING resultado;

(8)

c) SQL – Estrutural de Consultas

SELECT g.ger_descricao, g.ger_data_gerenciada FROM difusao d, gerenciamento g

WHERE d.dif_data_difusao= ‘11-mai-09’ AND d.ger_cod = g.ger_cod;

d) Resultados

Atributos de Ligação entre as Tabelas

GER_COD

Resultado do 1º Filtro WHERE (d.dif_data_difusao= ‘11-mai-09’): DHI_COD TIP_COD GER_COD DIF_DATA_DIFUSAO

1 1 1 11-mai-09

2 2 3 11-mai-09

3 3 3 13-mai-09

Resultado do 2º Filtro WHERE (d.ger_cod = g.ger_cod):

GER_COD GER_DESCRICAO GER_DATA_GERENCIADA 1

Gerenciamento para Órgãos

Governamentais 10-mai-09

2 Gerenciamento para Universidades 10-mai-09 3 Gerenciamento para a Sociedade 11-mai-09

4 Gerenciamento Periódico 12-mai-09

Resultado Final (SELECT):

GER_COD GER_DESCRICAO GER_DATA_GERENCIADA 1

Gerenciamento para Órgãos

Governamentais 10-mai-09

2 Gerenciamento para Universidades 10-mai-09 3 Gerenciamento para a Sociedade 11-mai-09

4 Gerenciamento Periódico 12-mai-09

O Resultado Final, utilizando a Ferramenta Oracle SQL Developer, pode ser visualizado na Figura 4.

(9)

Figura 4 – Demonstração de Consulta envolvendo duas relações

2.1.1.3. Terceira Consulta

A Terceira Consulta deverá envolver três relações e pelo menos um comando Select, um Project e um Join (ou equivalentes):

a) LN:

Encontre o dado hidrológico, a cidade de coleta e o tipo de dado a ser difundido, para o gerenciamento ocorrido no dia 10-mai-09.

b) SQL – ANSI:

SELECT gerenciamento WHERE ger_data_gerenciada = ‘11-mai-09’ GIVING temp1;

JOIN temp1 AND difusao OVER ger_cod GIVING temp2; JOIN temp2 AND tipo_dado OVER tip_cod GIVING temp3;

JOIN temp3 AND dado_hidrologico OVER dhi_cod GIVING temp4; PROJECT temp4 OVER (dhi_descricao, dhi_cidade_coletada, tip_descricao) GIVING resultado;

(10)

c) SQL – Estrutural de Consultas

SELECT dh.dhi_descricao, dhi_cidade_coletada, td.tip_descricao FROM gerenciamento g, difusao d, dado_hidrologico dh, tipo_dado td WHERE g.ger_data_gerenciada= ‘10-mai-09’ AND d.ger_cod = g.ger_cod AND d.tip_cod = td.tip_cod AND d.dhi_cod = dh.dhi_cod;

d) Resultados

Atributos de Ligação entre as Tabelas GER_COD, TIP_COD e DHI_COD

Resultado do 1º Filtro WHERE (g.dif_data_gerenciada= ‘10-mai-09’):

GER_COD GER_DESCRICAO GER_DATA_GERENCIADA 1

Gerenciamento para Órgãos

Governamentais 10-mai-09

2 Gerenciamento para Universidades 10-mai-09 3 Gerenciamento para a Sociedade 11-mai-09

4 Gerenciamento Periódico 12-mai-09

Resultado do 2º Filtro WHERE (d.ger_cod = g.ger_cod): DHI_COD TIP_COD GER_COD DIF_DATA_DIFUSAO

1 1 1 11-mai-09

2 2 3 11-mai-09

3 3 3 13-mai-09

Resultado do 3º Filtro WHERE (d.tip_cod = td.tip_cod):

DHI_COD TIP_COD GER_COD DIF_DATA_DIFUSAO

1 1 1 11-mai-09

2 2 3 11-mai-09

3 3 3 13-mai-09

TIP_COD TIP_DESCRICAO TIP_ATIVO 1 Ostensiva SIM 2 Confidencial SIM 3 Evento Crítico SIM

(11)

Resultado do 4º Filtro WHERE (d.dhi_cod = dh.dhi_cod): DHI_COD TIP_COD GER_COD DIF_DATA_DIFUSAO

1 1 1 11-mai-09

2 2 3 11-mai-09

3 3 3 13-mai-09

DHI_COD DHI_POSICAO_COLETADA DHI_CIDADE_COLETADA DHI_DESCRICAO 1 MDSYS.SDO_GEOMETRY(3

001,8292,MDSYS.SDO_POIN

T_TYPE(-9.33,-12.44,320),null,null)

Manaus Nível de Rio

2 MDSYS.SDO_GEOMETRY(3 001,8292,MDSYS.SDO_POIN

T_TYPE(-9.06,-11.55,225),null,null)

Porto Velho Índice de Chuvas

3 MDSYS.SDO_GEOMETRY(3 001,8292,MDSYS.SDO_POIN

T_TYPE(-7.31,-8.45,370),null,null)

Rio Branco Índice de Poluição

Resultado Final (SELECT):

DHI_COD DHI_POSICAO_COLETADA DHI_CIDADE_COLETADA DHI_DESCRICAO 1 MDSYS.SDO_GEOMETRY(3

001,8292,MDSYS.SDO_POIN

T_TYPE(-9.33,-12.44,320),null,null)

Manaus Nível de Rio

2 MDSYS.SDO_GEOMETRY(3 001,8292,MDSYS.SDO_POIN

T_TYPE(-9.06,-11.55,225),null,null)

Porto Velho Índice de Chuvas

3 MDSYS.SDO_GEOMETRY(3 001,8292,MDSYS.SDO_POIN

T_TYPE(-7.31,-8.45,370),null,null)

Rio Branco Índice de Poluição

TIP_COD TIP_DESCRICAO TIP_ATIVO 1 Ostensiva SIM 2 Confidencial SIM 3 Evento Crítico SIM

O Resultado Final, utilizando a Ferramenta Oracle SQL Developer, pode ser visualizado na Figura 5.

(12)

Figura 5 – Demonstração de Consulta envolvendo três relações

2.1.1.4. Quarta Consulta

A Quarta Consulta deverá ser georreferenciada e envolver pelo menos duas relações, um comando Select, um Project e um Join (ou equivalentes):

a) LN:

Encontre o tipo de dado que foi difundido no dia 13 de maio de 2009, na posição de longitude entre -9.08 à -7.29 e de latitude entre -13.35 à -8.38.

b) SQL – ANSI:

SELECT dado_hidrologico WHERE SDO_FILTER(dh.dhi_posicao_coletada,

SDO_GEOMETRY(2003,8292,NULL,SDO_ELEM_INFO_ARRAY(1,10 03,3), SDO_ORDINATE_ARRAY(-9.08,-13.35,-7.29,-8.38))) = 'TRUE' GIVING temp1;

(13)

JOIN temp1 AND difusao OVER dhi_cod GIVING temp2; SELECT difusao WHERE dif_data_difusao = ‘13-mai-09’ GIVING temp3;

JOIN temp3 AND difusao OVER tip_cod GIVING temp4; PROJECT temp4 OVER (tip_descricao) GIVING resultado;

c) SQL – Estrutural de Consultas

SELECT td.tip_descricao

FROM dado_hidrologico dh, difusao d, tipo_dado td WHERE SDO_FILTER(dh.dhi_posicao_coletada,

SDO_GEOMETRY(2003,8292,NULL,SDO_ELEM_INFO_ARRAY(1,10 03,3), SDO_ORDINATE_ARRAY(-9.08,-13.35,-7.29,-8.38))) = 'TRUE' AND d.dhi_cod = dh.dhi_cod

AND d.dif_data_difusao = '13-mai-09' AND d.tip_cod = td.tip_cod;

d) Resultados

Atributos de Ligação entre as Tabelas

DHI_COD e TIP_COD

Resultado do 1º Filtro WHERE ( SDO_FILTER(dh.dhi_posicao_coletada,

SDO_GEOMETRY(2003,8292,NULL,SDO_ELEM_INFO_ARRAY(1,1003,3), SDO_ORDINATE_ARRAY(-9.08,-13.35,-7.29,-8.38))) = 'TRUE' ):

DHI_COD DHI_POSICAO_COLETADA DHI_CIDADE_COLETADA DHI_DESCRICAO 1 MDSYS.SDO_GEOMETRY(3001

,8292,MDSYS.SDO_POINT_TY PE(-9.33,-12.44,320),null,null)

Manaus Nível de Rio

2 MDSYS.SDO_GEOMETRY(3001 ,8292,MDSYS.SDO_POINT_TY PE(-9.06,-11.55,225),null,null)

Porto Velho Índice de Chuvas

3 MDSYS.SDO_GEOMETRY(3001 ,8292,MDSYS.SDO_POINT_TY PE(-7.31,-8.45,370),null,null)

(14)

Resultado do 2º Filtro WHERE (d.dhi_cod = dh.dhi_cod): DHI_COD TIP_COD GER_COD DIF_DATA_DIFUSAO

1 1 1 11-mai-09

2 2 3 11-mai-09

3 3 3 13-mai-09

Resultado do 3º Filtro WHERE (d.dif_data_difusao='13-mai-09'):

DHI_COD TIP_COD GER_COD DIF_DATA_DIFUSAO

1 1 1 11-mai-09

2 2 3 11-mai-09

3 3 3 13-mai-09

Resultado do 4º Filtro WHERE (d.tip_cod = td.tip_cod):

DHI_COD TIP_COD GER_COD DIF_DATA_DIFUSAO

1 1 1 11-mai-09

2 2 3 11-mai-09

3 3 3 13-mai-09

TIP_COD TIP_DESCRICAO TIP_ATIVO 1 Ostensiva SIM 2 Confidencial SIM 3 Evento Crítico SIM

Resultado Final (SELECT):

TIP_COD TIP_DESCRICAO TIP_ATIVO 1 Ostensiva SIM 2 Confidencial SIM 3 Evento Crítico SIM

O Resultado Final, utilizando a Ferramenta Oracle SQL Developer, pode ser visualizado na Figura 6.

(15)

Figura 6 – Demonstração de Consulta Georreferenciada envolvendo pelo menos duas relações

2.1.2. Componentes de Sistema de Dicionário de Dados

A 9ª Técnica de Banco de Dados consiste na Dicionarização. A partir da mesma será elaborado 4 (quatro) Componentes do Sistema de Dicionário de Dados do Aplicativo de Banco de Dados.

Esta Técnica é composta por quatro elementos: Dicionário de Dados, Diretório de Dados, Dicionário de Recursos de Dados e o Dicionário de Metadados.

2.1.2.1. Dicionário de Dados

O Dicionário de Dados é a descrição das entidades, atributos e seus relacionamentos. Pode ser analisado na tabela abaixo.

(16)

Nome Conteúdo Estrutura Integridade Segurança

GERENCIAMENTO Tabela contendo a descrição e a data do gerenciamento Composto por 3 (três) atributos Leitura, Inclusão (Colaboradores) e Exclusão (Administradores) ger_cod Identificador único

do gerenciamento Integer Primary Key Not null ger_descricao

Descrição do

gerenciamento Varchar2(100) Null ger_data_gerenciada

Data do

gerenciamento Date Null

DADO_HIDROLOGIC O Tabela contendo a descrição, a posição georreferenciada e a cidade que coletou o dado hidrológico

Composto por 4 (quatro) atributos Leitura, Inclusão (Colaboradores) e Exclusão (Administradores) dhi_cod Identificador único do dado

hidrológico Integer Primary Key Not null dhi_descricao

Descrição do dado

hidrológico Varchar2(100) Null

dhi_posicao_coletada

Posição da Coleta do dado

hidrológico MDSYS.SDO_GEOMETRY Not null dhi_cidade_coletada

Cidade da Coleta do dado

hidrológico Varchar2(100) Null

TIPO_DADO Tabela contendo a descrição e o atributo que ativa o tipo de dado Composto por 3 (três) atributos Leitura, Inclusão (Colaboradores) e Exclusão (Administradores) tip_cod Identificador único

do tipo de dado Integer Primary Key Not null tip_descricao

Descrição do tipo

de dado Varchar2(100) Null

tip_ativo

Ativação

(SIM/NÃO) do tipo

de dado Varchar2(100) Null

DIFUSAO Tabela contendo as difusão de gerenciamentos, dados hidrológicos e tipos de dados

Composto por 4 (quatro) atributos Leitura, Inclusão (Colaboradores) e Exclusão (Administradores) ger_cod Identificador único

do gerenciamento Integer Foreign Key Not null dhi_cod

Identificador único do dado

hidrológico Integer Foreign Key Not null tip_cod

Identificador único

do tipo de dado Integer Foreign Key Not null

(17)

2.1.2.2. Diretório de Dados

Descrição das Entidades e seus Processos, colocando maiores informações sobre o dicionário de dados. Na tabela abaixo é demonstrado.

Entidade Atributo Relacionamento Entidade-Relacionamento

GERENCIAMENTO ger_cod (PK) ger_cod (FK) DIFUSAO DADO_HIDROLOGICO dhi_cod (PK) dhi_cod (FK) DIFUSAO TIPO_DADO tip_cod (PK) tip_cod (FK) DIFUSAO

a) Usuários:

• Procedimentos que servem para especificar as ações a serem executadas com dados ou informações ou Documentware (Acesso as entidades);

• Programas, módulos, rotinas ou componentes de computador - hardware, software, firmware (Acesso por meio dos procedimentos às Entidades); e

• Peopleware - usuário final, provedor, desenvolvedor e controlador de informação (Usuário dos Programas).

b) Tipos de entidades que devem relacionar dados ou informações com usuários:

• Formulários, documentos ou fontes de entrada (captar dados ou informações);

• Transações ou documentos de processamento (associa a ocorrência de um único dado a um ou mais eventos, essas entidades são normalmente associadas a processamento); e • Relatórios, documentos de saída e/ou informações na tela de

computador (agregar dados ou informações).

2.1.2.3. Dicionário de Recursos de Dados

Descrição física das entidades e seus ambientes associados. Agrega ao diretório de dados as descrições físicas da estrutura do Aplicativo de Banco de Dados e as descrições do ambiente de processamento.

(18)

• SGBD: Oracle 11g;

• Localização do Banco (Host Name): 161.24.9.5 • Sistema Operacional: Debian Linux;

• Freqüência de Utilização: 24h/7d; e

• Ferramenta para a Manipulação de Dados: Oracle SQL Developer.

2.1.2.4. Dicionário de Metadados

Descrição conceitual das entidades num nível alto de abstração. O Modelo de Entidade Relacionamento – MER encontra-se na Figura 7.

(19)

2.1.3. Conversão do Modelo de Dados Relacional

Quanto a Pesquisa e Conversão do Aplicativo de Banco de Dados Modelo de Dados Relacional na 3ªFN para os Modelos de Dados Hierárquico, Redes e Orientado a Objetos, pesquisar, analisar e estudar exemplos do Professor da Matéria, de artigos ou de livros, e por analogia, conversões do Modelo de Dados Relacional do Aplicativo de Banco de Dados para os Modelos de Dados Hierárquico, Rede, e Orientado a Objetos e demonstrar a realização dos três processos de conversão do Aplicativo de BD, utilizando pelo menos 03 (três) Entidades, Classes ou Objetos, cada um contendo, no mínimo, 03 (três) Atributos e Concluir que Modelo de Dados de Banco de Dados é o mais adequado para o desenvolvimento do Aplicativo de Banco de Dados, apresentando os resultados e justificativas.

2.1.3.1. Modelo de Dados Hierárquico

No Modelo de Dados Hierárquico, os registros são organizados como coleções de árvores.

Um Diagrama de Estrutura de Árvore é o esquema para um banco de dados hierárquico e este diagrama tem a mesma utilidade de um diagrama Entidade e Relacionamento, ou seja, ele especifica toda a estrutura lógica de um banco de dados.

Baseado no Modelo de Dados Relacional e nos exemplos fornecidos pelo Professor da Matéria foi elaborado o Modelo de Dados Hierárquico, que pode ser mais bem visualizado na Figura 8.

(20)

2.1.3.2. Modelo de Dados de Redes

O Modelo de Dados de Rede difere do Modelo de Dados Relacional à medida que os dados são apresentados por uma coleção de registros e os relacionamentos entre dados são representados por meio de links, enquanto no Modelo Relacional, os dados e os relacionamentos entre dados são representados por meio de uma coleção de tabelas.

O Diagrama de Estrutura de Dados é um esquema representando o projeto do bando de dados de rede, que tem a mesma finalidade de um diagrama E-R, ou seja, ele especifica toda a estrutura lógica do banco de dados.

Baseado no Modelo de Dados Relacional e nos exemplos fornecidos pelo Professor da Matéria foi elaborado o Modelo de Redes, que pode ser mais bem visualizado na Figura 9.

Figura 9 – Representação do Modelo de Dados Rede

2.1.3.3. Modelo de Dados Orientado a Objetos

Os Modelos de Dados Orientados a Objetos correspondem a uma organização de sistemas como uma coleção de objetos que integram estruturas de dados e seus comportamentos. Além disso, diversos conceitos, princípios e mecanismos que os diferenciam dos demais. O Modelo de Dados Orientado a Objeto do Protótipo de Aplicativo de Banco de Dados do Sistema de Aquisição Tratamento, Monitoramento e Difusão dos Dados Hidrológicos (Sis ATMH).

(21)

Baseado no Modelo de Dados Relacional e nos exemplos fornecidos pelo Professor da Mátéria foi elaborado o Modelo Orientado a Objetos, que pode ser mais bem visualizado na Figura 10.

Figura 10 – Representação do Modelo de Dados Orientado a Objetos

Esse Modelo de Dados Orientado a Objetos foi construído através do JUDE Community, por meio de Diagrama de Classes, atribuindo os tipos de atributos e operações, juntamente com os relacionamentos.

(22)

3 CONCLUSÃO

Após a realização desta Lista de Exercícios, foi possível verificar a importância da utilização da técnica de normalização, a qual minimizar gastos ao reduzir anomalias. Perante isso, foi possível gerar o script SQL, a partir do Modelo de Entidade e Relacionamento (MER), utilizando a Ferramenta ERwin 7, e conseqüentemente, tornando possível a realização de 4 (quatro) consultas visando demonstrar os resultados obtidos com um ou mais relações, por meio de uma ou mais condições (WHERE).

Para a realização das consultas, foi utilizada a Ferramenta Oracle SQL Developer. Logo após, foi apresentado os Componentes de Sistemas de Dicionário de Dados e, por conseguinte, a Conversão do Modelo de Dados Relacional, para os Modelos de Dados Hierárquico, Redes e Orientados a Objetos.

O Modelo de Banco de Dados que se adéqua ao Protótipo de Aplicativo de Banco de Dados do Projeto Sis ATMH, é o Modelo Relacional, por este implementar características ausentes nos Modelo Hierárquico e Rede, a saber que ocorre: a manipulação de mais de um registro por vez; o acesso indexado aos registros; e a maior facilidade para trabalhar com as relações e relacionamentos, entre outros. Devido ao não uso de objetos complexos, então não se justifica o uso do Modelo Orientado a Objetos.

(23)

Anexo A – Script gerado pelo ERwin 7

CREATE TABLE DADO_HIDROLOGICO (

dhi_posicao_coletada MDSYS.SDO_GEOMETRY NOT NULL , dhi_cidade_coletada VARCHAR2(100) NULL ,

dhi_descricao VARCHAR2(100) NULL , dhi_cod INTEGER NOT NULL );

--Criando Coluna Georregerenciada

delete user_sdo_geom_metadata

where table_name = 'DADO_HIDROLOGICO' and column_name = 'dhi_posicao_coletada';

insert into user_sdo_geom_metadata (table_name,column_name,diminfo,srid) values ('DADO_HIDROLOGICO','dhi_posicao_coletada',mdsys.sdo_dim_array( mdsys.sdo_dim_element('LONG', -180.0, 180.0, 0.005), mdsys.sdo_dim_element('LAT' , -90.0, 90.0, 0.005), mdsys.sdo_dim_element('ALT' , -100,+10000, 1.0) ), 8292);

create index IDX_DADO_HIDROLOGICO on DADO_HIDROLOGICO(dhi_posicao_coletada) indextype is mdsys.spatial_index

parameters ('sdo_indx_dims=2 layer_gtype="point"');

(24)

CREATE UNIQUE INDEX XPKDADO_HIDROLOGICO ON DADO_HIDROLOGICO

(dhi_cod ASC);

ALTER TABLE DADO_HIDROLOGICO

ADD CONSTRAINT XPKDADO_HIDROLOGICO PRIMARY KEY (dhi_cod);

CREATE TABLE DIFUSAO (

dhi_cod INTEGER NOT NULL , tip_cod INTEGER NOT NULL , ger_cod INTEGER NOT NULL , dif_data_difusao DATE NULL

);

CREATE UNIQUE INDEX XPKDIFUSAO ON DIFUSAO (dhi_cod ASC,tip_cod ASC,ger_cod ASC);

ALTER TABLE DIFUSAO

ADD CONSTRAINT XPKDIFUSAO PRIMARY KEY (dhi_cod,tip_cod,ger_cod);

(25)

CREATE TABLE GERENCIAMENTO (

ger_cod INTEGER NOT NULL , ger_descricao VARCHAR2(100) NULL , ger_data_gerenciada DATE NULL

);

CREATE UNIQUE INDEX XPKGERENCIAMENTO ON GERENCIAMENTO (ger_cod ASC);

ALTER TABLE GERENCIAMENTO

ADD CONSTRAINT XPKGERENCIAMENTO PRIMARY KEY (ger_cod);

CREATE TABLE TIPO_DADO (

tip_cod INTEGER NOT NULL , tip_descricao VARCHAR2(100) NULL , tip_ativo VARCHAR2(100) NULL );

CREATE UNIQUE INDEX XPKTIPO_DADO ON TIPO_DADO (tip_cod ASC);

(26)

ADD CONSTRAINT XPKTIPO_DADO PRIMARY KEY (tip_cod);

ALTER TABLE DIFUSAO

ADD (CONSTRAINT R_12 FOREIGN KEY (ger_cod) REFERENCES GERENCIAMENTO(ger_cod));

ALTER TABLE DIFUSAO

ADD (CONSTRAINT R_13 FOREIGN KEY (dhi_cod) REFERENCES DADO_HIDROLOGICO(dhi_cod));

ALTER TABLE DIFUSAO

ADD (CONSTRAINT R_14 FOREIGN KEY (tip_cod) REFERENCES TIPO_DADO(tip_cod));

CREATE TRIGGER tD_DADO_HIDROLOGICO AFTER DELETE ON DADO_HIDROLOGICO for each row

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 -- DELETE trigger on DADO_HIDROLOGICO

DECLARE NUMROWS INTEGER; BEGIN

/* ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 */ /* DADO_HIDROLOGICO DIFUSAO on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="0000eedd", PARENT_OWNER="", PARENT_TABLE="DADO_HIDROLOGICO"

CHILD_OWNER="", CHILD_TABLE="DIFUSAO"

(27)

FK_CONSTRAINT="R_13", FK_COLUMNS="dhi_cod" */ SELECT count(*) INTO NUMROWS

FROM DIFUSAO WHERE /* %JoinFKPK(DIFUSAO,:%Old," = "," AND") */ DIFUSAO.dhi_cod = :old.dhi_cod; IF (NUMROWS > 0) THEN raise_application_error( -20001,

'Cannot delete DADO_HIDROLOGICO because DIFUSAO exists.' );

END IF;

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 END;

/

CREATE TRIGGER tU_DADO_HIDROLOGICO AFTER UPDATE ON DADO_HIDROLOGICO for each row

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 -- UPDATE trigger on DADO_HIDROLOGICO

DECLARE NUMROWS INTEGER; BEGIN

/* ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 */

/* DADO_HIDROLOGICO DIFUSAO on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="00011b10", PARENT_OWNER="", PARENT_TABLE="DADO_HIDROLOGICO" CHILD_OWNER="", CHILD_TABLE="DIFUSAO" P2C_VERB_PHRASE="R/13", C2P_VERB_PHRASE="", FK_CONSTRAINT="R_13", FK_COLUMNS="dhi_cod" */ IF /* %JoinPKPK(:%Old,:%New," <> "," OR ") */

(28)

:old.dhi_cod <> :new.dhi_cod THEN

SELECT count(*) INTO NUMROWS FROM DIFUSAO WHERE /* %JoinFKPK(DIFUSAO,:%Old," = "," AND") */ DIFUSAO.dhi_cod = :old.dhi_cod; IF (NUMROWS > 0) THEN raise_application_error( -20005,

'Cannot update DADO_HIDROLOGICO because DIFUSAO exists.' );

END IF; END IF;

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 END;

/

CREATE TRIGGER tI_DIFUSAO BEFORE INSERT ON DIFUSAO for each row

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 -- INSERT trigger on DIFUSAO

DECLARE NUMROWS INTEGER; BEGIN

/* ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 */ /* GERENCIAMENTO DIFUSAO on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="000330da", PARENT_OWNER="", PARENT_TABLE="GERENCIAMENTO"

CHILD_OWNER="", CHILD_TABLE="DIFUSAO"

(29)

FK_CONSTRAINT="R_12", FK_COLUMNS="ger_cod" */ SELECT count(*) INTO NUMROWS

FROM GERENCIAMENTO WHERE

/* %JoinFKPK(:%New,GERENCIAMENTO," = "," AND") */ :new.ger_cod = GERENCIAMENTO.ger_cod;

IF (

/* %NotnullFK(:%New," IS NOT NULL AND") */ NUMROWS = 0 ) THEN raise_application_error( -20002,

'Cannot insert DIFUSAO because GERENCIAMENTO does not exist.' );

END IF;

/* ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 */ /* DADO_HIDROLOGICO DIFUSAO on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="DADO_HIDROLOGICO"

CHILD_OWNER="", CHILD_TABLE="DIFUSAO"

P2C_VERB_PHRASE="R/13", C2P_VERB_PHRASE="", FK_CONSTRAINT="R_13", FK_COLUMNS="dhi_cod" */ SELECT count(*) INTO NUMROWS

FROM DADO_HIDROLOGICO WHERE

/* %JoinFKPK(:%New,DADO_HIDROLOGICO," = "," AND") */ :new.dhi_cod = DADO_HIDROLOGICO.dhi_cod;

IF (

/* %NotnullFK(:%New," IS NOT NULL AND") */

(30)

) THEN

raise_application_error( -20002,

'Cannot insert DIFUSAO because DADO_HIDROLOGICO does not exist.' );

END IF;

/* ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 */ /* TIPO_DADO DIFUSAO on child insert restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="TIPO_DADO"

CHILD_OWNER="", CHILD_TABLE="DIFUSAO"

P2C_VERB_PHRASE="R/14", C2P_VERB_PHRASE="", FK_CONSTRAINT="R_14", FK_COLUMNS="tip_cod" */ SELECT count(*) INTO NUMROWS

FROM TIPO_DADO WHERE

/* %JoinFKPK(:%New,TIPO_DADO," = "," AND") */ :new.tip_cod = TIPO_DADO.tip_cod;

IF (

/* %NotnullFK(:%New," IS NOT NULL AND") */ NUMROWS = 0 ) THEN raise_application_error( -20002,

'Cannot insert DIFUSAO because TIPO_DADO does not exist.' );

END IF;

(31)

END; /

CREATE TRIGGER tU_DIFUSAO AFTER UPDATE ON DIFUSAO for each row

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 -- UPDATE trigger on DIFUSAO

DECLARE NUMROWS INTEGER; BEGIN

/* ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 */ /* GERENCIAMENTO DIFUSAO on child update restrict */

/* ERWIN_RELATION:CHECKSUM="000339fb", PARENT_OWNER="", PARENT_TABLE="GERENCIAMENTO"

CHILD_OWNER="", CHILD_TABLE="DIFUSAO"

P2C_VERB_PHRASE="R/12", C2P_VERB_PHRASE="", FK_CONSTRAINT="R_12", FK_COLUMNS="ger_cod" */ SELECT count(*) INTO NUMROWS

FROM GERENCIAMENTO WHERE

/* %JoinFKPK(:%New,GERENCIAMENTO," = "," AND") */ :new.ger_cod = GERENCIAMENTO.ger_cod;

IF (

/* %NotnullFK(:%New," IS NOT NULL AND") */ NUMROWS = 0 ) THEN raise_application_error( -20007,

'Cannot update DIFUSAO because GERENCIAMENTO does not exist.' );

END IF;

(32)

/* DADO_HIDROLOGICO DIFUSAO on child update restrict */ /* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="DADO_HIDROLOGICO" CHILD_OWNER="", CHILD_TABLE="DIFUSAO" P2C_VERB_PHRASE="R/13", C2P_VERB_PHRASE="", FK_CONSTRAINT="R_13", FK_COLUMNS="dhi_cod" */ SELECT count(*) INTO NUMROWS

FROM DADO_HIDROLOGICO WHERE

/* %JoinFKPK(:%New,DADO_HIDROLOGICO," = "," AND") */ :new.dhi_cod = DADO_HIDROLOGICO.dhi_cod;

IF (

/* %NotnullFK(:%New," IS NOT NULL AND") */ NUMROWS = 0 ) THEN raise_application_error( -20007,

'Cannot update DIFUSAO because DADO_HIDROLOGICO does not exist.' );

END IF;

/* ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 */ /* TIPO_DADO DIFUSAO on child update restrict */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="TIPO_DADO"

CHILD_OWNER="", CHILD_TABLE="DIFUSAO"

P2C_VERB_PHRASE="R/14", C2P_VERB_PHRASE="", FK_CONSTRAINT="R_14", FK_COLUMNS="tip_cod" */ SELECT count(*) INTO NUMROWS

FROM TIPO_DADO WHERE

(33)

:new.tip_cod = TIPO_DADO.tip_cod; IF (

/* %NotnullFK(:%New," IS NOT NULL AND") */ NUMROWS = 0 ) THEN raise_application_error( -20007,

'Cannot update DIFUSAO because TIPO_DADO does not exist.' );

END IF;

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 END;

/

CREATE TRIGGER tD_GERENCIAMENTO AFTER DELETE ON GERENCIAMENTO for each row

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 -- DELETE trigger on GERENCIAMENTO

DECLARE NUMROWS INTEGER; BEGIN

/* ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 */ /* GERENCIAMENTO DIFUSAO on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="0000e52b", PARENT_OWNER="", PARENT_TABLE="GERENCIAMENTO"

CHILD_OWNER="", CHILD_TABLE="DIFUSAO"

P2C_VERB_PHRASE="R/12", C2P_VERB_PHRASE="", FK_CONSTRAINT="R_12", FK_COLUMNS="ger_cod" */ SELECT count(*) INTO NUMROWS

(34)

WHERE /* %JoinFKPK(DIFUSAO,:%Old," = "," AND") */ DIFUSAO.ger_cod = :old.ger_cod; IF (NUMROWS > 0) THEN raise_application_error( -20001,

'Cannot delete GERENCIAMENTO because DIFUSAO exists.' );

END IF;

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 END;

/

CREATE TRIGGER tU_GERENCIAMENTO AFTER UPDATE ON GERENCIAMENTO for each row

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 -- UPDATE trigger on GERENCIAMENTO

DECLARE NUMROWS INTEGER; BEGIN

/* ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 */ /* GERENCIAMENTO DIFUSAO on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="0001049a", PARENT_OWNER="", PARENT_TABLE="GERENCIAMENTO" CHILD_OWNER="", CHILD_TABLE="DIFUSAO" P2C_VERB_PHRASE="R/12", C2P_VERB_PHRASE="", FK_CONSTRAINT="R_12", FK_COLUMNS="ger_cod" */ IF /* %JoinPKPK(:%Old,:%New," <> "," OR ") */ :old.ger_cod <> :new.ger_cod THEN

(35)

FROM DIFUSAO WHERE /* %JoinFKPK(DIFUSAO,:%Old," = "," AND") */ DIFUSAO.ger_cod = :old.ger_cod; IF (NUMROWS > 0) THEN raise_application_error( -20005,

'Cannot update GERENCIAMENTO because DIFUSAO exists.' );

END IF; END IF;

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 END;

/

CREATE TRIGGER tD_TIPO_DADO AFTER DELETE ON TIPO_DADO for each row

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 -- DELETE trigger on TIPO_DADO

DECLARE NUMROWS INTEGER; BEGIN

/* ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 */ /* TIPO_DADO DIFUSAO on parent delete restrict */

/* ERWIN_RELATION:CHECKSUM="0000d1e5", PARENT_OWNER="", PARENT_TABLE="TIPO_DADO"

CHILD_OWNER="", CHILD_TABLE="DIFUSAO"

P2C_VERB_PHRASE="R/14", C2P_VERB_PHRASE="", FK_CONSTRAINT="R_14", FK_COLUMNS="tip_cod" */ SELECT count(*) INTO NUMROWS

(36)

WHERE /* %JoinFKPK(DIFUSAO,:%Old," = "," AND") */ DIFUSAO.tip_cod = :old.tip_cod; IF (NUMROWS > 0) THEN raise_application_error( -20001,

'Cannot delete TIPO_DADO because DIFUSAO exists.' );

END IF;

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 END;

/

CREATE TRIGGER tU_TIPO_DADO AFTER UPDATE ON TIPO_DADO for each row

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 -- UPDATE trigger on TIPO_DADO

DECLARE NUMROWS INTEGER; BEGIN

/* ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 */ /* TIPO_DADO DIFUSAO on parent update restrict */

/* ERWIN_RELATION:CHECKSUM="0000fdb4", PARENT_OWNER="", PARENT_TABLE="TIPO_DADO" CHILD_OWNER="", CHILD_TABLE="DIFUSAO" P2C_VERB_PHRASE="R/14", C2P_VERB_PHRASE="", FK_CONSTRAINT="R_14", FK_COLUMNS="tip_cod" */ IF /* %JoinPKPK(:%Old,:%New," <> "," OR ") */ :old.tip_cod <> :new.tip_cod THEN

(37)

FROM DIFUSAO WHERE /* %JoinFKPK(DIFUSAO,:%Old," = "," AND") */ DIFUSAO.tip_cod = :old.tip_cod; IF (NUMROWS > 0) THEN raise_application_error( -20005,

'Cannot update TIPO_DADO because DIFUSAO exists.' );

END IF; END IF;

-- ERwin Builtin domingo, 10 de Maio de 2009 15:26:18 END;

Referências

Documentos relacionados

Considerando isto o presente trabalho busca demonstrar a importância das políticas públicas de prevenção à saúde na terceira idade no município de Sorocaba-SP,

Construíram-se doze categorias assim denominadas: nível de satisfação no trabalho no exercício da gerência, percepção do gerente sobre sua qualificação para o cargo,

A pressão do prensa chapas e as folgas entre Matriz, peça e punção devem ser muito bem observadas e definidas para este processo, pois podem levar a ruptura

Este presente artigo é o resultado de um estudo de caso que buscou apresentar o surgimento da atividade turística dentro da favela de Paraisópolis, uma

Através da dissertação, levantou-se os principais achados de estudos correlatos ao tema da pesquisa e foi possível verificar a baixa disponibilidade de estudos guiados pela

Com a perspectiva de remunerações menores apresentadas pelos títulos públicos, a previsão era de uma migração de investidores para fundos de renda variável, e

As tensões verticais obtidas pela aplicação dos carregamentos da combinação Não Usual Estática são apresentadas na Figura 44. Na região central superior do

Segundo os auditores entrevistados, os problemas que mais ocorrem durante uma auditoria são: falta de informação adequada fornecida à auditada; tempo insuficiente atribuído