ITA - Instituto Tecnológico de Aeronáutica CTA - Centro Técnico Aeroespacial Lista de Exercícios 04 (ListEx4). INTRODUÇÃO Modelos de dados para as aplicações geográficas têm necessidades adicionais, tanto com relação à abstração de conceitos e entidades, quando ao tipo de entidades representáveis e seu inter-relacionamento. Foi utilizado o ERWIN 4.0, ROSE TIME e ORACLE 10g, como software básico para desenvolvimento do subsistema.
OBJETIVO Implementar a Terceira Forma Normal (3º FN) do seu Protótipo de Aplicativo de Banco de Dados (BD) utilizando um Modelo de Dados Objeto-Relacional no Sistema Gerenciador de Banco de Dados (SGBD) Oracle 10g Spatial 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 Bancos de Dados Setoriais (BDS), Bancos de Dados Corporativo (BDC) e do Banco de Dados Holding (BDH). E pesquisar os Banco de Dados Hierárquico, Orientado Objeto e rede e converter a 3º FN do Protótipo para os tipos de banco de dados citados acima; MOTIVAÇÃO Apenas 2,5% da massa líquida são compostas de água doce, e menos de 0,01%, de potável, sendo que a Bacia Amazônica tem a maior oferta de água doce do mundo. Mas a oferta de água doce vem sofrendo escassez mundial, devido o desperdício, poluição e desmatamento. Com desenvolvimento de um Banco de dado, podemos controlar o desperdício de água. CONTEÚDO LOCALIZACAO loc_cod loc_tempo loc_municipio SETOR set_cod loc_cod (FK) set_tipo set_rio set_estacao set_vasup set_vasub bac_cod bac_nome bac_tamp SUB_ sub_cod sub_nome sub_vasup sub_vasub bac_cod (FK) aba_cod sub_cod (FK) set_cod (FK) loc_cod (FK) aba_geom
Entidade: Construção do Aplicativo e Massa de Dados CREATE TABLE ( bac_cod VARCHAR(20) NOT NULL, bac_nome VARCHAR(50) NOT NULL, bac_tam VARCHAR(20) NULL, PRIMARY KEY (bac_cod)); Inserção dos dados insert into Values('001', 'Amazona', 6925000); insert into Values('002', 'Tocantins', 107235); insert into Values('003', 'São Francisco', 342900); insert into Values('004', 'Região Sudeste', 229972); Entidade: SUB_ CREATE TABLE SUB_ ( sub_cod VARCHAR(20) NOT NULL, sub_nome VARCHAR(50) NOT NULL, sub_vasup VARCHAR(20) NULL, sub_vasub VARCHAR(20) NULL, bac_cod VARCHAR(20) NULL, primary key (sub_cod) ); Inserção dos dados insert into SUB_ Values('011','RIO AMAZONAS,MADEIRA,GUAPORE', 61, 31, '001'); insert into SUB_ Values('012','RIO SOLIMOES,PURUS,COARI', 42,58,'001'); insert into SUB_ Values('013', 'RIO AMAZONAS,TAPAJOS,JURUENA',42,58,'001'); insert into SUB_ Values('014', 'RIO AMAZONAS,TAPAJOS,JURUENA', 51,49,'001');
Entidade: SETOR CREATE TABLE SETOR ( set_cod VARCHAR(20) NOT NULL, set_tipo VARCHAR(50) NOT NULL, set_estacao VARCHAR(50) NOT NULL, set_rio VARCHAR(50) NOT NULL, set_vasup VARCHAR(20) NOT NULL, set_vasub VARCHAR(20) NOT NULL, loc_cod VARCHAR(20) NOT NULL, primary key (set_cod), FOREIGN KEY (loc_cod) ); Inserção dos dados insert into SETOR values ( '000001','Doméstico','Ipiranga Novo','Rio Guaporé', 21,25,'000011'); insert into SETOR values ('000002','Industrial','Cristo','Rio Mucuim', 18, 37, '000012'); insert into SETOR values ('000003', 'Agricola','Jaru','Rio Jarú', 61,38, '000013'); insert into SETOR values ('000004', 'Doméstico','Boca do Inferno','Rio Curua', 20,25, '000013'); Entidade: LOCALIZACAO CREATE TABLE LOCALIZACAO ( loc_cod VARCHAR() NOT NULL, loc_tempo VARCHAR() NOT NULL, loc_municipio VARCHAR() NOT NULL ); Inserção dos dados insert into LOCALIZACAO values( 000011, 'janeiro','vila Bela da St. Trindade'); insert into LOCALIZACAO values(000012, 'feveiro', 'Labrea'); insert into LOCALIZACAO values(000013, 'julho','jarú '); insert into LOCALIZACAO values(000014, 'dezembro', 'Alenquer');
Entidade: CREATE TABLE ( area_cod VARCHAR(20) NOT NULL, area_geom MDSYS.SDO_GEOMETRY, sub_cod VARCHAR(20) NOT NULL, set_cod VARCHAR(20) NOT NULL, loc_cod VARCHAR(20) NOT NULL, PRIMARY KEY (area_cod) ); Inserção de Metadado para Georeferenciamento INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID) VALUES ('', 'ABA_GEOM', MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('LONG', -46.52157, - 74.4357, 5.0E-8), MDSYS.SDO_DIM_ELEMENT('LAT', -13477605, 5.4223, 5.0E-8)), NULL); Criação de ponto para Georeferenciamento CREATE INDEX LOCALIZADOR_SDX ON (ABA_GEOM) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS ('SDO_INDX_DIMS=2 LAYER_GTYPE="POINT"'); Inserção dos dados insert into values ('000001', MDSYS.SDO_GEOMETRY( 2001, NULL, NULL, SDO_ELEM_INFO_ARRAY (1,1,1), SDO_ORDINATE_ARRAY (-15.0, -59.5)), '011', '000001', '000011'); insert into values ('000002', MDSYS.SDO_GEOMETRY( 2001, NULL, NULL,SDO_ELEM_INFO_ARRAY (1,1,1), SDO_ORDINATE_ARRAY (-7.2, - 64.1)), '012', '000002', '000012'); insert into values ('000003', MDSYS.SDO_GEOMETRY( 2001, NULL, NULL, SDO_ELEM_INFO_ARRAY (1,1,1), SDO_ORDINATE_ARRAY (-10.2, -62.2)), '013', '000003', '000013'); insert into values ('000004', MDSYS.SDO_GEOMETRY( 2001, NULL, NULL, SDO_ELEM_INFO_ARRAY (1,1,1), SDO_ORDINATE_ARRAY (-1.30, -54.5)), '014', '000004', '000014');
CONSULTAS SQL LEGENDA Atributo de Interseção entre as Tabelas. Resultado do 1º Filtro (Where). Resultado do 2º Filtro (Where). Resultado do 3º Filtro (Where) Resultado final da consulta (Select). 1- Quais são as Sub-Bacias e seus volumes de água superficial e subterrâneo, onde o volume de superficial é maior que 50? select sub_nome, sub_vasup, sub_vasub from sub_bacia where sub_vasup>50; 2 Quais os setores, os valor do consumo de água e qual a localização e o mês, onde rio é igual a Rio Guaporé? select SETOR.set_tipo, SETOR.set_vasup, SETOR.set_vasub, LOCALIZACAO.loc_municipio, LOCALIZACAO.loc_tempo from SETOR INNER JOIN LOCALIZACAO on (LOCALIZACAO.loc_cod = SETOR.loc_cod) where SETOR.set_rio = 'Rio Guaporé' ou select SETOR.set_tipo, SETOR.set_vasup, SETOR.set_vasub,
LOCALIZACAO.loc_municipio, LOCALIZACAO.loc_tempo from SETOR, INNER JOIN where (SETOR.set_rio = 'Rio Guaporé' and LOCALIZACAO.loc_cod = SETOR.loc_cod) 3 Qual é o nome da Bacia, Sub_Bacia e do rio que abastecem os setores? select. bac_nome, SUB_.sub_nome, SETOR.set_rio FROM SETOR,, SUB_, WHERE.bac_cod = SUB_.bac_cod and.sub_cod = SUB_.sub_cod and.set_cod = SETOR.set_cod ;
4- Lista os nomes das sub_bacias e suas referências geográfica, onde sub_bacia seja diferente que RIO AMAZONAS,TAPAJOS,JURUENA. Select abastecimento.aba_geom, sub_bacia.sub_nome from abastecimento, sub_bacia Where ((abastecimento.sub_cod = sub_bacia.sub_cod) and (sub_bacia.sub_nome <> 'RIO AMAZONAS,TAPAJOS,JURUENA') );
TIPOS DE BANCO DE DADOS Banco de Dados do tipo Hierárquico surgiu na década de 60, organizando os dados à semelhança de uma árvore, onde um arquivo-pai gerava vários filhos, mantendo uma dependência entre eles. Possuem caminhos bem definidos e predeterminados, sendo utilizados na solução de problemas que demandem um número limitado de respostas, cujas naturezas podem ser especificadas antecipadamente. Aplicações típicas: processar reservas aéreas ou processamento de dados bancários. aba_cod aba_geom sub_cod loc_cod sub_cod SETOR set_cod loc_cod set_tipo set_estacao set_rio set_vasup set_vasub SUB_ Sub_cod Bac_nome Sub_nome Sub_vasup Sub_vasub LOCALIZACAO loc_cod loc_tempo loc_municipio bac_cod bac_nome bac_vasub Banco de Dados do tipo Rede surgiu nos anos 60, sendo utilizado também durante a década de 70. Ele mostra-se mais apropriado para situações em que vários dados podem estar associados a diversos outros, sendo mais flexíveis do que os modelos hierárquicos. Porém, existem limitações de ordem prática quanto ao número de relacionamentos que podem ser estabelecidos entre os registros.
Aplicações típicas: transações efetuadas entre diversas contas em um sistema bancário. LOCALIZACAO SETOR SUB_ Banco de Dados do tipo Relacional surgiu nos anos 70 e evoluiu durante os anos 80. São os mais utilizados atualmente, existindo diversas marcas comerciais como DB II, Oracle, SQL Server, Informix, MySQL, entre outros. LOCALIZACAO loc_cod loc_tempo loc_municipio SETOR set_cod loc_cod (FK) set_tipo set_rio set_estacao set_vasup set_vasub bac_cod bac_nome bac_tamp SUB_ sub_cod sub_nome sub_vasup sub_vasub bac_cod (FK) aba_cod sub_cod (FK) set_cod (FK) loc_cod (FK) aba_geom Banco de Dados do tipo Orientados Objeto começaram a ser desenvolvidos para atender a uma necessidade relacionada ao armazenamento de tipos de dados cada vez mais complexos, de difícil representação no modelo relacional. Possui três pilares principais: herança, polimorfismo e encapsulamento.este modelo apresenta maior flexibilidade na manipulação de seu conteúdo e por meio de identificadores de objetos manipula os dados de forma consistente.
bac_cod : VARCHAR(20) bac_nome : VARCHAR(50) bac_tam : VARCHAR(20) insert() update() delete() <no rolename> ( ABASTECIMENT... <no rolename> ( SUB ) 0/ 1:N SUB sub_cod : VARCHAR(20) sub_nome : VARCHAR(50) sub_vasup : VARCHAR(20) sub_vasub : VARCHAR(20) bac_cod : VARCHAR(20) insert() update() delete() <no rolename> ( ) <no rolename> ( ) LOCALIZACAO loc_cod : VARCHAR(20) loc_tempo : VARCHAR(20) loc_municipio : VARCHAR(50) insert() update() delete() <no rolename> ( SETOR ) 1:N SETOR set_cod : VARCHAR(20) set_tipo : VARCHAR(50) set_estacao : VARCHAR(50) set_rio : VARCHAR(50) set_vasup : VARCHAR(20) set_vasub : VARCHAR(20) loc_cod : VARCHAR(20) 1:N 1:N aba_cod : VARCHAR(20) set_cod : VARCHAR(20) loc_cod : VARCHAR(20) sub_cod : VARCHAR(20) aba_geom : MDSYS.SDO_GEO... insert() update() delete() insert() update() delete() <no rolename> ( ) Sistema de Dicionário de Dados Dicionário de Dados descrição de atributos, entidades, relacionamentos e objetos associados, ou Banco de Dado da função administração dos recursos de Informação: Nome Conteúdo Estrutura Integridade Segurança LOCALIZACAO Tabela contendo os municípios e os meses Composto por 3 atributos Leitura, Inclusão e Alteração(Colaboradores ), Exclusão (Administrador) loc_cod varchar(20) Primary Key da LOCALIZACAO loc_municipio Nome do município varchar(50) loc_tempo mês varchar(50) not_null SETOR set _cod loc_cod set_estacao set_rio Tabela contendo os tipos de setores que consomem água, valores em porcentagem de consumo de água do SETOR da LOCALIZACAO Descrição da estação de controle de consumo à água. Identificação do rio que abastece o setor Composto por 7 atributos varchar(20) Primary Key varchar(20) Foreing Key varchar(50) varchar(50) Leitura, Inclusão e Alteração(Colaboradores ), Exclusão (Administrador)
set_vasup set_vasup set_setor aba_cod set_cod loc_cod sub_cod aba_geom SUB_ sub _cod bac_cod sub_nome sub_vasup sub_vasup Quantidade em porcentagem do consumo de água superficial Quantidade em porcentagem do consumo de água subterrânea Descrição do tipo de setor que consomem água. Tabela contendo informação georreferenciada. da do SETOR da LOCALIZACAO da SUB_ Atributo Georrefernciado Tabela contendo as descrição das sub bacias Hidrográficas, que abastecem os setores. da SUB_ da Descrição da SUB HIDROGRÁFICA. Quantidade em porcentagem de água superficial Quantidade em porcentagem de água subterrânea Tabela contendo as descrição das S Hidrográficas varchar(50) varchar(50) varchar(50) Composto por 5 atributos varchar(20) Primary Key varchar(20) Foreing Key varchar(20) Foreing Key varchar(20) Foreing Key MDSYS.SD O_GEOME TRY Composto por 5 atributos Leitura, Inclusão e Alteração(Colaboradores ), Exclusão (Administrador) Not null varchar(20) Primary Key varchar(20) Foreing Key varchar(50) varchar(20) varchar(20) Composto por 3 atributos Leitura, Inclusão e Alteração(Colaboradores ), Exclusão (Administrador) Leitura, Inclusão e Alteração(Colaboradores ), Exclusão (Administrador)
bac_cod varchar(20) Foreing Key da bac_nome Descrição da varchar(50) HIDROGRÁFICA. bac_tam Tamanho de área varchar(20) Diretório de dados descrição de processos associados às Entidades: Entidade Atributo Relacionamento Entidade-Relacionamento LOCALIZACAO (PK) loc_cod (FK) loc_cod SETOR SETOR (PK) set_cod (FK) set_cod LOCALIZACAO AND (PK) aba_cod (FK) aba_cod SETOR AND SUB_ SUB_ (PK) sub_cod (FK) sub_cod AND (PK) aba_cod (FK) aba_cod SUB_ Diretório de Recursos de Dados, descrição física das entidades e de seus ambientes associados. O Protótipo de Aplicativo de Banco de Dados, será desenvolvido utilizando um Computador PC Atlon XP 2600 MHz, com 1 Gbytes de memória RAM e com capacidade de 80 Gbytes de armazenamento em disco. A implementação será realizada usando o Banco de Dado Oracle 10g como SGBD, http://seti.fcmf.ita.br:5560/isqlplus/. Dicionário de Matados, descrição conceitual das entidades num nível alto de abstração. LOCALIZACAO loc_cod loc_tempo loc_municipio SETOR set_cod loc_cod (FK) set_tipo set_rio set_estacao set_vasup set_vasub bac_cod bac_nome bac_tamp SUB_ sub_cod sub_nome sub_vasup sub_vasub bac_cod (FK) aba_cod sub_cod (FK) set_cod (FK) loc_cod (FK) aba_geom
CONCLUSÃO A Constrição de uma modelagem de dado feita de modo ocorreto, facilita muito o desenvolvimento do Banco de Dados. Navegar no site da Oracle. RECOMENDAÇÃO