Home Page Image


Relatório da ListEx4
                        

1. Introdução

           Neste trabalho iniciaremos o processo de implementação, na prática, do Protótipo de Aplicativo de Banco de Dados. Para tal, será utilizado o software Oracle 10g Spatial como instrumento para a implementação.
           Esta lista de exercícios tem por objetivo a implementação da Terceira Forma Normal (3ªFN) do Protótipo de Aplicativo de Banco de Dados (BD) da temática de Portos, utilizando um Modelo de Dados Relacional em um Sistema Gerenciador de Banco de Dados (SGBD), visando reduzir o desperdício de rescursos 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 de Holding (BDH).
            Além disso, esta lista também visa a pesquisa dos Modelos de Dados Hierárquico, Rede e Orientado a Objetos, e a conversão da 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.
             

2. Conteúdo

           Neste trabalho aplicaremos implementaremos a Terceira Forma Normal do Protótipo de Aplicativo de BD utilizando um Modelo de Dados Relacional em um SGBD, realizaremos testes de verificação e apresentaremos a Versão 1.0 do Sistema de Dicionário de Dados.

 

2.1. Implementação

            A implementação foi realizada através da criação das tabelas e, posteriormente, da inserção de dados nas respectivas tabelas.

2.1.1. Criação das Tabelas

CREATE TABLE PORTO (
            por_codigo     VARCHAR(20) NOT NULL,
            por_nome        VARCHAR(255) NOT NULL,
            por_endereco  VARCHAR(255) NOT NULL
);

CREATE TABLE EMBARCACAO (
            emb_codigo    VARCHAR(20)NOT NULL,
            emb_nome      VARCHAR(255) NOT NULL,
            emb_classe      VARCHAR(20) NOT NULL,
            emb_agencia   VARCHAR(50) NOT NULL,
            emb_bandeira VARCHAR(30) NOT NULL
);

CREATE TABLE ATRACACAO (
            atr_codigo      VARCHAR(20) NOT NULL,
            por_codigo     VARCHAR(20) NOT NULL,
            emb_codigo    VARCHAR(20) NOT NULL,
            hor_codigo     VARCHAR(20) NOT NULL,
            atr_berco         VARCHAR(20) NOT NULL,
            atr_origem      VARCHAR(50) NOT NULL,
            atr_destino      VARCHAR(50) NOT NULL
);

CREATE TABLE HORARIO (
            hor_codigo     VARCHAR(20) NOT NULL,
            hor_prevchegada        VARCHAR(20) NOT NULL,
            hor_chegada   VARCHAR(20) NOT NULL,
            hor_saida        VARCHAR(20) NOT NULL
);

CREATE TABLE EMPREGADO (
            emp_cpf                     VARCHAR(20) NOT NULL,
            emp_nome      VARCHAR(255) NOT NULL,
            emp_endereco            VARCHAR(255) NOT NULL,
            por_codigo     VARCHAR(20) NOT NULL,
            emp_cargo      VARCHAR(50) NOT NULL
);

 

2.1.2. Definição das Chaves Primária e Estrangeira

ALTER TABLE PORTO ADD ( PRIMARY KEY (por_codigo));

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

ALTER TABLE ATRACACAO ADD ( PRIMARY KEY (atr_codigo));

ALTER TABLE ATRACACAO ADD ( FOREIGN KEY (por_codigo) REFERENCES PORTO);

ALTER TABLE ATRACACAO ADD ( FOREIGN KEY (emb_codigo) REFERENCES EMBARCACAO);

ALTER TABLE ATRACACAO ADD ( FOREIGN KEY (hor_codigo) REFERENCES HORARIO);

ALTER TABLE HORARIO ADD ( PRIMARY KEY (hor_codigo));

ALTER TABLE EMPREGADO ADD ( PRIMARY KEY (emp_cpf));

ALTER TABLE EMPREGADO ADD ( FOREIGN KEY (por_codigo) REFERENCES PORTO);

 

2.1.3. Inserção das Tuplas
INSERT INTO PORTO VALUES ( '001', 'PORTO DE MANAUS', 'RUA MARQUES DE SANTA CRUZ, 25 CENTRO MANAUS-AM');

INSERT INTO PORTO VALUES ( '002', 'PORTO DE BELEM', 'AV PRESIDENTE VARGAS, 41 BELEM-PA);

INSERT INTO PORTO VALUES ( '003', 'PORTO DE MACAPA', 'RUA FILINTO MULLER, 1380 NOVO HORIZONTE MACAPA-AP');

INSERT INTO EMBARCACAO VALUES ( '1001', 'NORSUL', 'CARGA GERAL', 'WILSON SONS', 'GERMANY');

INSERT INTO EMBARCACAO VALUES ( '1002', 'TURIN EXPRESS', 'FULL CONTEINER', 'HAPAG LLOYD', 'ANTIGUA');

INSERT INTO EMBARCACAO VALUES ( '1003',  'CSAV PARANAGUA', 'FULL CONTEINER', 'LIBRA', 'BRAZIL');

INSERT INTO ATRACACAO VALUES ( '2001', '001', '1001', '3001', '11', 'BELEM', 'MACAPA');

INSERT INTO ATRACACAO VALUES ( '2002', '002',  '1002', '3002', '12', 'MACAPA', 'PORTO VELHO');

INSERT INTO ATRACACAO VALUES ( '2003', '003', '1003', '3003', '13', 'MANAUS', 'SANTAREM');

INSERT INTO HORARIO VALUES ( '3001', '27/02/07 - 19H00', '27/02/07 - 19H00', '12/03/07 - 21H00');

INSERT INTO HORARIO VALUES ( '3002', '10/03/07 - 10h00', '10/03/07 - 10h20', '13/03/07 - 12h00');

INSERT INTO HORARIO VALUES ( '3003', '25/01/07 - 12h00', '25/01/07 - 12h30', '10/03/07 - 23h00');

INSERT INTO EMPREGADO VALUES ( '31302002998', 'JOAO DA SILVA', 'RUA DOS CARIJOS 32 MANAUS-AM', '001', 'ASSISTENTE');

INSERT INTO EMPREGADO VALUES ( '00393843837', 'MARCOS DE OLIVEIRA MELLO', 'RUA DAS FLORES, 555 BELEM-PA', '002', 'OPERADOR DE MAQUINAS');

INSERT INTO EMPREGADO VALUES ( '39394942298', 'EDUARDO BRAZAO', 'AV JOAO MAURICIO, 394 MACAPA-AP', '003', 'FAXINEIRO');

INSERT INTO EMPREGADO VALUES ( '33849399303', 'EMILIO SANTIAGO', 'RUA MAOME,31 MANAUS-AM', '001', 'GERENTE');

 

2.2.  Testes de Verificação

            Inicialmente, foram realizadas algumas consultas simples para verificar o sucesso da criação das tabelas.

SELECT *
FROM PORTO

POR_CODIGO

POR_NOME

POR_ENDERECO

001

PORTO DE MANAUS

RUA MARQUES DE SANTA CRUZ, 25 CENTRO MANAUS-AM

002

PORTO DE BELEM

AV PRESIDENTE VARGAS, 41 BELEM-PA

003

PORTO DE MACAPA

RUA FILINTO MULLER, 1380 NOVO HORIZONTE MACAPA-AP

SELECT *
FROM EMBARCACAO

EMB_CODIGO

EMB_NOME

EMB_CLASSE

EMB_AGENCIA

EMB_BANDEIRA

1001

NORSUL

CARGA GERAL

WILSON SONS

GERMANY

1002

TURIN EXPRESS

FULL CONTEINER

HAPAG LLOYD

ANTIGUA

1003

CSAV PARANAGUA

FULL CONTEINER

LIBRA

BRAZIL

 

SELECT *
FROM ATRACACAO

_CODIGO

POR_CODIGO

EMB_CODIGO

HOR_CODIGO

ATR_BERCO

ATR_ORIGEM

ATR_DESTINO

2001

001

1001

3001

11

BELEM

MACAPA

2002

002

1002

3002

12

MACAPA

PORTO VELHO

2003

003

1003

3003

13

MANAUS

SANTAREM

SELECT *
FROM HORARIO

HOR_CODIGO

HOR_PREVCHEGADA

HOR_CHEGADA

HOR_SAIDA

3001

27/02/07 - 19H00

27/02/07 - 19H00

12/03/07 - 21H00

3002

10/03/07 - 10h00

10/03/07 - 10h20

13/03/07 - 12h00

3003

25/01/07 - 12h00

25/01/07 - 12h30

10/03/07 - 23h00

 

SELECT *
FROM EMPREGADO

EMP_CPF

EMP_NOME

EMP_ENDERECO

POR_CODIGO

EMP_CARGO

31302002998

JOAO DA SILVA

RUA DOS CARIJOS 32 MANAUS-AM

001

ASSISTENTE

00393843837

MARCOS DE OLIVEIRA MELLO

RUA DAS FLORES, 555 BELEM-PA

002

OPERADOR DE MAQUINAS

39394942298

EDUARDO BRAZAO

AV JOAO MAURICIO, 394 MACAPA-AP

003

FAXINEIRO

33849399303

EMILIO SANTIAGO

RUA MAOME,31 MANAUS-AM

001

GERENTE

 

 

2.2.1. 1ª Consulta

            “Listar todas as informações do Porto de Manaus”.

SELECT *
FROM PORTO
WHERE por_nome=’PORTO DE MANAUS’

POR_CODIGO

POR_NOME

POR_ENDERECO

001

PORTO DE MANAUS

RUA MARQUES DE SANTA CRUZ, 25 CENTRO MANAUS-AM

 

2.2.2. 2ª Consulta

            “Listar os horários de chegada das embarcações em cada berço.”

SELECT ATRACACAO.atr_berco, HORARIO.hor_chegada
FROM ATRACACAO INNER JOIN HORARIO
ON ATRACACAO.hor_codigo=HORARIO.hor_codigo;

ATR_BERCO

HOR_CHEGADA

11

27/02/07 - 19H00

12

10/03/07 - 10h20

13

25/01/07 - 12h30

 

2.2.3. 3ª Consulta

            “Listar o código, nome e bandeira da embarcação, o código da atracação e o código e o nome do porto cuja embarcação possui como destino Macapá.”

SELECT EMBARCACAO.emb_codigo, EMBARCACAO.emb_nome, EMBARCACAO.emb_bandeira, ATRACACAO.atr_codigo, PORTO.por_codigo, PORTO.por_nome
FROM ATRACACAO INNER JOIN EMBARCACAO ON ATRACACAO.emb_codigo=EMBARCACAO.emb_codigo INNER JOIN PORTO
ON ATRACACAO.por_codigo=PORTO.por_codigo
WHERE ATRACACAO.atr_destino='MACAPA';

EMB_CODIGO

EMB_NOME

EMB_BANDEIRA

ATR_CODIGO

POR_CODIGO

POR_NOME

1001

NORSUL

GERMANY

2001

001

PORTO DE MANAUS

 

2.3. Sistema de Dicionário de Dados

            A versão 1.0 do Sistema de Dicionário de Dados do Protótipo de Aplicativo de BD da temática Portos está representada a seguir.

 

2.3.1. Dicionário de Dados

            O Dicionário de Dados é composto pela descrição de Atributos, Entidades, Relacionamentos e Objetos associados.

PORTO: Esta tabela representa o cadastro dos portos e apresenta 3 atributos, descritos a seguir.

  • #por_codigo: Chave primária, utilizado para identificar os portos. É do tipo VARCHAR(20) e não deve ser nulo. Sua exclusão implica na exclusão de todos os registros relacionados a ele.
  • por_nome: Atributo que indica o nome do porto. É do tipo VARCHAR(200) e não pode ser nulo.
  • por_endereco: Atributo que indica o endereço do porto. É do tipo VARCHAR(200) e não pode ser nulo.

 

            Os dados somente podem ser inseridos ou alterados pelos operadores do Sistema Gerenciador de Banco de Dados e não há restrições quanto à sua integridade.

 

EMBARCACAO: Esta tabela representa o cadastro das embarcações e apresenta cinco atributos, descritos a seguir.

  • #emb_codigo: Chave primária, usado para identificar as embarcações. É do tipo VARCHAR(20) e não pode ser nulo. Sua exclusão implica na exclusão de todos registros relacionados a ele.
  • emb_nome: Atributo que indica o nome da embarcação. É do tipo VARCHAR(200) e não pode ser nulo.
  • emb_classe: Atributo que indica a classe da embarcação, ou seja, indica qual o tipo da mesma. É do tipo VARCHAR(200) e não pode ser nulo.
  • emb_agencia: Atributo que indica a agencia da embarcação. É do tipo VARCHAR(200) e não pode ser nulo.
  • emb_bandeira: Atributo que indica a bandeira da embarcação, ou seja, indica o país de origem da mesma. É do tipo VARCHAR(200) e não pode ser nulo.

 

            Os dados somente podem ser inseridos ou alterados pelos operadores do Sistema Gerenciador de Banco de Dados e não há restrições quanto à sua integridade.

 

ATRACACAO: Esta tabela representa os dados relativos à atracação da embarcação nos portos, possuindo referência às tabelas PORTO, EMBARCACAO e HORARIO. Apresenta sete atributos, descritos a seguir.

  • #atr_codigo: Chave primária, usado para identificar as atracações das embarcações. É do tipo VARCHAR(20) e não pode ser nulo. Sua exclusão implica na exclusão de todos registros relacionados a ele.
  • por_codigo: Chave estrangeira importada da tabela PORTO.
  • emb_codigo: Chave estrangeira importada da tabela EMBARCACAO.
  • hor_codigo: Chave estrangeira importada da tabela HORARIO.
  • atr_berco: Atributo que indica o berço relativo à atracação. É do tipo VARCHAR(20) e não pode ser nulo.
  • atr_origem: Atributo que indica o local de origem da embarçação. É do tipo VARCHAR(200) e não pode ser nulo.
  • atr_destino: Atributo que indica o local de destino da embarçação. É do tipo VARCHAR(200) e não pode ser nulo.

 

            Os dados somente podem ser inseridos ou alterados pelos operadores do Sistema Gerenciador de Banco de Dados e não há restrições quanto à sua integridade.

 

HORARIO: Esta tabela representa as datas e horários relativos à atracação da embarcação. Apresenta quatro atributos, descritos a seguir.

  • #hor_codigo: Chave primária, usado para identificar os horários. É do tipo VARCHAR(20) e não pode ser nulo. Sua exclusão implica na exclusão de todos registros relacionados a ele.
  • hor_prevchegada: Atributo que indica o horário previsto de chegada da embarcação. É do tipo VARCHAR(20) e não pode ser nulo.
  • hor_chegada: Atributo que indica o horário de chegada da embarcação. É do tipo VARCHAR(20) e não pode ser nulo.
  • hor_prevsaida: Atributo que indica o horário previsto de saída da embarcação. É do tipo VARCHAR(20) e não pode ser nulo.

 

            Os dados somente podem ser inseridos ou alterados pelos operadores do Sistema Gerenciador de Banco de Dados e não há restrições quanto à sua integridade.

 

EMPREGADO: Esta tabela representa o cadastro dos empregados dos portos e está relacionada a PORTO. Apresenta cinco atributos, descritos a seguir.

  • #emp_cpf: Chave primária, usado para identificar os empregados. É do tipo VARCHAR(20) e não pode ser nulo. Sua exclusão implica na exclusão de todos registros relacionados a ele.
  • emp_nome: Atributo que indica o nome do empregado. É do tipo VARCHAR(255) e não pode ser nulo.
  • emp_endereco: Atributo que indica o endereço do empregado. É do tipo VARCHAR(255) e não pode ser nulo.
  • por_codigo: Atributo que indica o código do porto o empregado trabalha. É do tipo VARCHAR(20) e não pode ser nulo.
  • emp_cargo: Atributo que indica o cargo ocupado pelo empregado. É do tipo VARCHAR(50) e não pode ser nulo.

 

            Os dados somente podem ser inseridos ou alterados pelos operadores do Sistema Gerenciador de Banco de Dados e não há restrições quanto à sua integridade.

 

2.3.2. Diretório de Dados

            O Diretório de Dados            descreve os processos associados às entidades.

  • A entidade PORTO está relacionada com a entidade ATRACACAO através da chave primária por_codigo. Cada PORTO pode ter mais de uma ATRACACAO, enquanto que cada ATRACACAO só pode ocorrer em um PORTO.
  • A entidade EMBARCACAO está relacionada com a entidade ATRACACAO através da chave primária emb_codigo. Cada EMBARCACAO pode ter mais de uma ATRACACAO, enquanto que cada ATRACACAO somente pode estar relacionada a uma EMBARCACAO.
  • A entidade HORARIO está relacionada com a entidade ATRACACAO através da chave primária hor_codigo. Cada HORARIO pode ocorrer em mais de uma ATRACACAO, enquanto que cada ATRACACAO somente pode ocorrer em um HORARIO.
  • A entidade PORTO está relacionada com a entidade EMPREGADO através da chave primária por_codigo. Cada PORTO pode ter mais de um EMPREGADO, enquanto que cada EMPREGADO pode trabalhar somente em um PORTO.

 

2.3.3. Dicionarização de Recurso de Dados

            SGBD: Oracle 10g Spatial
            Address: http://seti.fcmf.ita.br/
            Alias: Orcl
            Projeto: Protótipo de Aplicativo de Banco de Dados
            SO: Windows XP Media Center Edition Version 2002 Service Pack 2
            Memória RAM: 1GB

 

2.3.4. Dicionário de Metadados

             

Figura 1 – Dicionário de Metadados do Protótipo de Aplicativo de BD

 

2.3.5. Conversão do Aplicativo de Banco de Dados

2.3.5.1. Modelo de Dados Hierárquico

 

 Figura 2 – Modelo de Dados Hierárquico


2.3.5.2. Modelo de Dados Rede

 


Figura 3 – Modelo de Dados Rede

 

2.3.5.3. Modelo Orientado a Objeto


Figura 4 – Modelo Orientado a Objetos

3. Conclusão
           
             Nesta lista de exercícios foi implementada a Terceira Forma Normal do Protótipo de Aplicativo de Banco de Dados da temática de Portos, do Setor de Transportes. Também foi realizada conversão da 3ªFN do Protótipo de Aplicativo de BD no Modelo de Dados Relacional para os Modelos Hierárquico, Rede e Orientado a Objetos.
            Através desses procedimentos, resultamos na Versão 1.0 do Sistema de Dicionário de Dados e nos Modelos de Dados Relacional, Hierárquico, Rede e Orientado a Objetos.           Dessa forma, o Protótipo de Aplicativo de BD já é passível de ser integrado às demais temáticas do Setor de Transportes, que são as temáticas de Rotas, Embarcações e Cargas.

           


           

   
           
Hosted by www.Geocities.ws

1