Header imageGradient image  

Personal Website

LISTEX4

 
line decor
   BACK
line decor

 
   

 
 

1. Objetivo


1) Implementar a Terceira Forma Normal (3ªFN) do seu Protótipo de Aplicativo de Banco de Dados (BD) utilizando um
Modelo de Dados Relacional em um Sistema Gerenciador de Banco de Dados (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 Bancos de Dados Setoriais (BDS), Bancos de Dados Corporativo (BDC) e do Banco de Dados Holding (BDH); e
2) Pesquisar os Modelos de Dados Hierárquico, Rede e Orientado a Objetos, e Converter a 3ªFN do seu 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.


2. Procedimento

Parte 1)

Inicialmente vamos testar o BD desenvolvido em sua 3FN, para isso, inicialmente criamos

as TABLES no SGBD Oracle 10g Spatial, através da execução do seguinte script SQL:

CREATE TABLE EMBARCACAO (

emb_reg VARCHAR(20) NOT NULL,
emb_nome VARCHAR(40) NOT NULL,
tip_num VARCHAR(20) NOT NULL,
pro_num VARCHAR(20) NOT NULL,
loc_num VARCHAR(20) NOT NULL
);

CREATE TABLE DESCRICAO (

emb_reg VARCHAR(20) NOT NULL,
des_peso VARCHAR(20) NOT NULL,
des_largura VARCHAR(20) NOT NULL,
des_comprimento VARCHAR(20) NOT NULL,
des_altura VARCHAR(20) NOT NULL,
des_material VARCHAR(20) NOT NULL,
des_propulsao VARCHAR(20) NOT NULL
);

CREATE TABLE CARGA (

emb_reg VARCHAR(20) NOT NULL,
car_num VARCHAR(20) NOT NULL,
car_tipo VARCHAR(20) NOT NULL,
car_peso VARCHAR(20) NOT NULL,
car_perigo VARCHAR(20) NOT NULL
);

CREATE TABLE PROPRIETARIO (

pro_num VARCHAR(20) NOT NULL,
pro_nome VARCHAR(20) NOT NULL,
pro_CNPJ VARCHAR(20) NOT NULL,
pro_CPF VARCHAR(20) NOT NULL
);

CREATE TABLE TIPO (

tip_num VARCHAR(20) NOT NULL,
tip_nome VARCHAR(20) NOT NULL,
tip_proposito VARCHAR(20) NOT NULL
);

CREATE TABLE LOCALIAZCAO (


emb_reg VARCHAR(20) NOT NULL,
loc_georef MDSYS.SDO_GEOMETRY,

loc_origemdados VARCHAR(20) NOT NULL
);

ALTER TABLE EMBARCACAO
ADD ( PRIMARY KEY (emb_reg));

ALTER TABLE PROPRIETARIO
ADD ( PRIMARY KEY (pro_num));

ALTER TABLE TIPO
ADD ( PRIMARY KEY (tip_num));

ALTER TABLE CARGA
ADD ( PRIMARY KEY (car_num));

ALTER TABLE EMBARACACAO
ADD ( FOREIGN KEY (tip_num) REFERENCES TIPO);

ALTER TABLE EMBARACACAO
ADD ( FOREIGN KEY (pro_num) REFERENCES TIPO);

ALTER TABLE DESCRICAO
ADD ( FOREIGN KEY (emb_reg) REFERENCES EMBARCACAO);

ALTER TABLE CARGA
ADD ( FOREIGN KEY (car_num) REFERENCES EMBARCACAO);

ALTER TABLE LOCALIZACAO
ADD ( FOREIGN KEY (emb_reg) REFERENCES EMBARCACAO);

Prosseguimos então para a inserção da massa de dados para teste, que foi realizada com o seguinte script SQL:

INSERT INTO TIPO VALUES
('1','militar', 'patrulhamento');

INSERT INTO TIPO VALUES
('2','social', 'carregamento');

INSERT INTO TIPO VALUES
('3','social', 'turismo');

INSERT INTO PROPRIETARIO VALUES
('1','joao da silva','123123', '1111111111');

INSERT INTO PROPRIETARIO VALUES
('2','FAB','56796566', '1234567890');

INSERT INTO EMBARCACAO VALUES
('1','Mariner', '1','1');

INSERT INTO EMBARCACAO VALUES
('2','Patrul', '1','2');

INSERT INTO EMBARCACAO VALUES
('3', 'TOURISTER', '3', '1');

NSERT INTO DESCRICAO VALUES
('1','60 ton', '20','30','5','madeira','diesel');

INSERT INTO DESCRICAO VALUES
('2','19 ton', '4','2','1','fibra de vidro','remo');


INSERT INTO USER_SDO_GEOM_METADATA

(TABLE_NAME, COLUMN_NAME, DIMINFO, SRID) VALUES ('LOCALIZACAO', 'loc_georef', MDSYS.SDO_DIM_ARRAY

(MDSYS.SDO_DIM_ELEMENT('LONG', -73.994423393, -28.835883971, 5.0E-8), MDSYYS.SDO_DIM_ELEMENT('LAT', -33.752061377, 5.271806856, 5.0E-8)), NULL);

CREATE INDEX LOCALIZACAO_SDX ON LOCALIZACAO(loc_georef) INDEXTYPE IS

MDSYS.SPATIAL_INDEX PARAMETERS ('SDO_INDX_DIMS=2 LAYER_GTYPE="POINT"');

INSERT INTO LOCALIZACAO VALUES

('1', MDSYS.SDO_GEOMETRY(2001,NULL,MDSYS.

SDO_POINT_TYPE(-4.2,-35.3,50.0),NULL,NULL),'radar');

INSERT INTO LOCALIZACAO VALUES
('2', SDO_GEOMETRY(2001, 8307,

SDO_POINT_TYPE(-15.6754, 43.7, NULL), NULL, NULL),'GPS');

INSERT INTO LOCALIZACAO VALUES
('3', SDO_GEOMETRY(2001, 8307,

SDO_POINT_TYPE(5.70, -16.6789, NULL), NULL, NULL),'radar');

Prosseguimos então para a elaboração e criação da Queries para testes:

Query 1) Exibir todas as embarcações cadastradas

SELECT * FROM EMBARCACAO;

EMB_REG EMB_NOME TIP_NUM PRO_NUM
1 Mariner 1 1
2 Patrul 1 2
3 TOURISTER 3 1

Query 2) Exibir o tipo da embarcação com o nome Mariner

SELECT * FROM EMBARCACAO

INNER JOIN TIPO ON EMBARCACAO.tip_num = TIPO.tip_num;

EMB_REG EMB_NOME TIP_NUM PRO_NUM TIP_NUM TIP_NOME TIP_PROPOSITO
1 Mariner 1 1 1 militar patrulhamento
2 Patrul 1 2 1 militar patrulhamento
3 TOURISTER 3 1 3 social turismo

Query 3) Mostrar a descrição das embarcações militares

SELECT EMBARCACAO.emb_nome, DESCRICAO.* FROM EMBARCACAO, DESCRICAO,TIPO

WHERE EMBARCACAO.tip_num = TIPO.tip_num and TIPO.tip_nome = 'militar' and DESCRICAO.emb_reg = EMBARCACAO.emb_reg;

EMB_NOME EMB_REG DES_PESO DES_LARGURA DES_COMPRIMENTO DES_ALTURA DES_MATERIAL DES_PROPULSAO
Mariner 1 60 ton 20 30 5 madeira diesel
Patrul 2 19 ton 4 2 1 fibra de vidro remo

Query 4) Exibir as distâncias entre as embarcações e a interseccao do Equador com Greenwich

SELECT EMBARCACAO.emb_nome, SDO_GEOM.SDO_DISTANCE(TELEFONE_MOVEL.tel_pos,MDSYS.SDO_GEOMETRY(2001,NULL,MDSYS.SDO_POINT_TYPE(0,0,0),NULL,NULL)  AS distancia FROM EMBARCACAO;

EMB_NOME DISTANCIA
Mariner 8452917.82
Patrul 5085331.12
TOURISTER 1947928.95

Prosseguimos então para a publicação do dicionário de dados:

Dicionário de Dados

EMBARCACAO

Entidade que contém os dados basicos da embarcação

4 atributos

 

Manipulação de dados (membros da equipe)
Exclusão (owner)

emb_reg

Registro da Embarcação

VARCHAR(20)

Primary Key

NOT NULL

tip_num

Número do Tipo da Embarcação

VARCHAR(20)

Foreign Key

NOT NULL

pro_num

Código do Proprietário da Embarcação

VARCHAR(20)

Foreing Key

NOT NULL

emb_nome

Nome da Embarcação

VARCHAR(40)

 

NOT NULL

PROPRIETÁRIO

Entidade que contém os proprietários de embarcações

4 atributos

 

Manipulação de dados (membros da equipe)
Exclusão (owner)

pro_num

Código único de proprietário

VARCHAR(20)

Primary Key

NOT NULL

pro_nome

Nome do proprietário

VARCHAR(30)

 

NOT NULL

pro_CPF

CPF do proprietário

VARCHAR(20)

 

 

pro_CNPJ

CNPJ do proprietário

VARCHAR(2)

 

 

CARGA

Entidade que contém as Cargas.

5 atributos

 

Manipulação de dados (membros da equipe)
Exclusão (owner)

emb_reg

Registro da embarcação que a transporta.

VARCHAR(20)

Foreign Key

NOT NULL

car_num

Código da Carga

VARCHAR(20)

Primary Key

NOT NULL

car_tipo

Tipo da Carga

VARCHAR(20)

 

NOT NULL

car_peso

Peso da Carga

VARCHAR(20)

Primary Key

NOT NULL

car_perigo

Perigo da Carga

VARCHAR(50)

 

NOT NULL

DESCRICAO
Entidade que contém a descrição básica da embarcaçao
7 atributos
emb_reg
Código da Embarcação
VARCHAR(20)
Foreign Key
NOT NULL
des_peso
Peso
VARCHAR(20)
NOT NULL
des_largura
Largura
VARCHAR(20)
NOT NULL
des_comprimento
Comprimento
VARCHAR(20)
NOT NULL
des_altura
Altura
VARCHAR(20)
NOT NULL
des_material
Material
VARCHAR(20)
NOT NULL
des_propulsao
Propulsão
VARCHAR(20)
NOT NULL
TIPO
Entidade que contém informações sobre o tipo da embarcação
3 Atributos
tip_num
Código do Tipo
VARCHAR(20)
Primary Key
NOT NULL
tip_nome
Nome do tipo
VARCHAR(20)
NOT NULL
tip_proposito
Propósito do tipo
VARCHAR(20)
NOT NULL
LOCALIZAÇÃO
Entidade georeferenciada
3 atributos
emb_reg
Registro da Embarcação
VARCHAR(20)
Foreign Key
NOT NULL
loc_pos
Posicao da Embarcação
MDSYS.SDO_GEOMETRY
NOT NULL
loc_origemdado
Origem do Posicionamento
VARCHAR(20)
NOT NULL

Diretório de Dados


Entidade

Atributo

Relacionamento

Entidade-Relacionamento

EMBARCACAO

(FK) tip_num

(PK) tip_num

TIPO

EMBARCACAO

(FK) pro_num

(PK) pro_num

PROPRIETARIO

CARGA

(FK) emb_reg

(PK) emb_reg

EMBARCACAO

LOCALIZADOR

(FK) emb_reg

(PK) emb_reg

EMBARCACAO

DESCRICAO

(FK) emb_reg

(PK) emb_reg

EMBARCACAO

Recursos de Dados

Oracle 10g Spatial

seti.fcmf.ita.br

ORCL

Windows 2000 Pro

1 GB

24 h/dia

 

Dicionário de Metadados

Parte 2)

Converteu-se então o modelo acima para o modelo hierarquico:

Em seguida foi feito o modelo rede:

Foi feito também o modelo objeto-relacional:

 

3. Conclusão

Concluimos que os modelos mais adequados ao banco de dados a ser desenvolvido são: Relacional e Objeto-relacional, que fornecem uma maneira mais propícia e organizada de se construir relações 1..n e n..1.

Aprendeu-se também ao longo dessa listex como funciona, na prática a programação de um aplicativo de banco de dados utilizando SQL e o SGBD Oracle 10g..

 
 

 
 
             
Hosted by www.Geocities.ws

1