Instituto Tecnológico de Aeronáutica
Divisão da Ciência da
Computação
Curso de Pós-Graduação
CE-240 Projeto de Banco de Dados
Professor. Adilsom Marques da Cunha
Listex 04
Wellingtonn Vergílio Fortes
Barra do Piraí, 10 de abril de 2004
Implementação e Conversão para Modelo Orientado a Objeto e Hieráquico do SIS-MANUT
Melhorar a experiência em desenvolvimento de Banco de Dados e visualizar as vantagem que os modelo de Banco de Dados Orientado à Objeto e Hierárquico em relação ao Relacional.
Desenvolver de um Protótipo de aplicativo de Banco de Dados (BD) na Terceira Forma Normal (3FN), do Banco de Dados SIS-MANUT e implementa-lo nos modelos de Banco de Dados Orientado à Objeto e Hierárquico, e observar as qualidades de cada modelo.
Inicialmente será desenvolvido o banco de dados e sua documentação, posteriormente será aplicado técnicas de banco de dados Orientado à Objeto e Hierárquico.
oficina { ofi_codofic, ofi_nome, ofi_endereco, ofi_bairro,
ofi_cidade, ofi_uf, ofi_tel}
veículo {vei_codveiculo, vei_placa, vei_ano, vei_modelo}
manutencao { man_codmanut, man_dataentrada, man_datasaida }
MATERIAL {mat_codmaterial,
mat_descrição, mat_quantidade, mat_valorunit}
servico {ser_codservicos, ser_descricao, ser_valor}
cotacao { cot_codcotacao, cot_data, cot_aprovacao}
OCORRENCIA {oco_cod, man_codmanut,
vei_codveiculo}
TEM{ tem_cod, man_codmanut,
ser_codservico}
VINCULO{ vin_cod ,
mat_codmaterial, ser_codservico}
PRESTA { pre_cod , man_codmanut,
ofi_codofic}
2.1
Criando o Banco de dados Versão 1.0 e suas tabelas.
Criando o Banco de Dados



Comandos em SQL usados para criação das Entidades ou Tabelas
create
table MANUTENCAO( man_codmanut varchar (10) not null ,
man_dataentrada
date not null, man_datasaida date not null, primary key(man_codmanut));
create
table VEICULO( vei_codveiculo varchar (10) not null ,
vei_placa
varchar (7) not null, vei_ano varchar (4) not null, vei_modelo varchar (255)
not null, primary key(vei_codveiculo));
create
table COTACAO( cot_codcotacao varchar (10) not null ,
cot_data
date not null,cot_aprovacao varchar (3) not null,man_codmanut varchar (10) not
null, primary key(cot_codcotacao));
create
table MATERIAL( mat_codmaterial varchar (10) not null ,
mat_descricao
varchar (255) not null, mat_quantidade int,
mat_valorunit
int, primary key(mat_codmaterial));
create
table SERVICO( ser_codservico varchar (10) not null ,
ser_descricao
varchar (255) not null, ser_valor int,primary key(ser_codservico));
create
table OFICINA( ofi_codofic varchar (10) not null ,
ofi_nome
varchar (80) not null, ofi_endereco varchar (255)not null,
ofi_bairro
varchar (70) not null, ofi_cidade varchar (70) not null, ofi_uf varchar (2) not
null, ofi_tel varchar (11) not null, primary key(ofi_codofic));
create
table OCORRENCIA( oco_cod varchar (10) not null ,
man_codmanut
varchar (10) not null,vei_codveiculo varchar (10) not null, primary
key(oco_cod));
create
table TEM( tem_cod varchar (10) not null ,
man_codmanut
varchar (10) not null,ser_codservico varchar (10) not null, primary
key(tem_cod));
create
table VINCULO( vin_cod varchar (10) not null ,
mat_codmaterial
varchar (10) not null,ser_codservico varchar (10) not null, primary
key(vin_cod));
create table
PRESTA( pre_cod varchar (10) not null ,
man_codmanut
varchar (10) not null,ofi_codofic varchar (10) not null,
primary
key(pre_cod));

Comandos SQL usados para criar os relacionamentos entre entidades ou tabelas
Alter table
OCORRENCIA add constraint fk_ocorrencia
foreign key
(man_codmanut) references MANUTENCAO(man_codmanut);
Alter table
TEM add constraint fk_tem foreign key (man_codmanut)
references
MANUTENCAO(man_codmanut);
Alter table
PRESTA add constraint fk_presta foreign key (man_codmanut)
references
MANUTENCAO(man_codmanut);
Alter table
TEM add constraint fk_tem_servico foreign key (ser_codservico) references
SERVICO(ser_codservico);
Alter table
VINCULO add constraint fk_servico_vinculo foreign key (ser_codservico)
references SERVICO(ser_codservico);
Alter table
VINCULO add constraint fk_vinculo_material foreign key (mat_codmaterial)
references MATERIAL(mat_codmaterial);
Alter table OCORRENCIA add constraint fk_ocorrencia_veiculo foreign key (vei_codveiculo) references VEICULO(vei_codveiculo);
Alter table
COTACAO add constraint fk_cotacao_manutencao foreign key (man_codmanut)
references MANUTENCAO(man_codmanut);
Alter table PRESTA add constraint fk_presta_oficina foreign key (ofi_codofic) references OFICINA(ofi_codofic);

|
oficina { ofi_codofic, ofi_nome,
ofi_endereco, ofi_bairro, ofi_cidade, ofi_uf, ofi_tel} |
|
|
ESTRUTURA |
|
|
Nome: |
Conteúdo: |
|
oficina |
Informações sobre as Oficinas usadas |
|
ofi_codofic |
Caracter(10)
- Código da Oficina. |
|
ofi_nome |
Caracter
(80)- Nome da Oficina. |
|
ofi_endereco |
Caracter
(255) – Endereço da Oficina. |
|
ofi_bairro |
Caracter
(70) – Bairro da Oficina. |
|
ofi_cidade |
Caracter
(70) – Cidade da Oficina. |
|
ofi_uf |
Caracter
(02) - Unidade Federal da Oficina. |
|
ofi_tel |
Caracter
(11) - Telefone da Oficina. |
|
INTEGRIDADE |
|
|
Nome: |
Conteúdo: |
|
ofi_codofic |
Não
Nulo e Único. |
|
ofi_nome |
Não
Nulo. |
|
ofi_endereco |
Não
Nulo. |
|
ofi_bairro |
Não
Nulo. |
|
ofi_cidade |
Não
Nulo. |
|
ofi_uf |
Não
Nulo. |
|
ofi_tel |
Não
Nulo. |
|
SEGURANÇA E PRIVACIDADE |
|
|
Nome: |
Conteúdo: |
|
ofi_codofic |
Chave primária, exclui-se todos os registros relacionados. |
|
ofi_nome |
Sem
Restrição. |
|
ofi_endereco |
Sem
Restrição. |
|
ofi_bairro |
Sem
Restrição. |
|
ofi_cidade |
Sem
Restrição. |
|
ofi_uf |
Sem
Restrição. |
|
ofi_tel |
Sem
Restrição. |
|
veículo {vei_codveiculo, vei_placa, vei_ano, vei_modelo} |
|
|
ESTRUTURA |
|
|
Nome: |
Conteúdo: |
|
veículo |
Informações sobre os Veículos da Empresa |
|
vei_codveiculo |
Caracter(10)
- Código do Veiculo. |
|
vei_placa |
Caracter
(7)- Placa de um veículo. |
|
vei_ano |
Caracter
(4) - Ano de Fabricação um veículo. |
|
vei_modelo |
Caracter
(255) - Modelo de veículo. |
|
INTEGRIDADE |
|
|
Nome: |
Conteúdo: |
|
vei_codveiculo |
Não
Nulo. |
|
vei_placa |
Não
Nulo. |
|
vei_ano |
Não
Nulo. |
|
vei_modelo |
Não
Nulo. |
|
SEGURANÇA E PRIVACIDADE |
|
|
Nome: |
Conteúdo: |
|
vei_codveiculo |
Chave primária, exclui-se todos os registros relacionados. |
|
vei_placa |
Sem
Restrição. |
|
vei_ano |
Sem
Restrição. |
|
vei_modelo |
Sem
Restrição. |
|
manutencao { man_codmanut,
man_dataentrada, man_datasaida } |
|
|
ESTRUTURA |
|
|
Nome: |
Conteúdo: |
|
manutencao |
Informações sobre as Manutenções aplicada aos veiculos |
|
man_codmanut |
Caracter(10)
- Código da Manutenção. |
|
man_dataentrada |
Date
– Data da entrada do veiculo na oficina para manutenção |
|
man_datasaida |
Date
– Data da saida do veiculo na oficina para manutenção |
|
INTEGRIDADE |
|
|
Nome: |
Conteúdo: |
|
man_codmanut |
Não
Nulo. |
|
man_dataentrada |
Não
Nulo. |
|
man_datasaida |
Não
Nulo. |
|
SEGURANÇA E PRIVACIDADE |
|
|
Nome: |
Conteúdo: |
|
man_codmanut |
Chave primária, exclui-se todos os registros relacionados. |
|
man_dataentrada |
Sem
Restrição. |
|
man_datasaida |
Sem
Restrição. |
|
MATERIAL {mat_codmaterial, mat_descrição, mat_quantidade,
mat_valorunit} |
|
|
ESTRUTURA |
|
|
Nome: |
Conteúdo: |
|
MATERIAL |
Informações sobre os Materiais usados na manutenção |
|
mat_codmaterial |
Caracter(10)
- Código da Oficina. |
|
mat_descrição |
Caracter
(255)- Número da placa de um veículo. |
|
mat_quantidade |
Numerico
– Quantidade de Peças |
|
mat_valorunit |
Numérico
– Valor unitário das peças |
|
INTEGRIDADE |
|
|
Nome: |
Conteúdo: |
|
mat_codmaterial |
Não
Nulo. |
|
mat_descrição |
Não
Nulo. |
|
mat_quantidade |
Não
Nulo. |
|
mat_valorunit |
Não
Nulo. |
|
SEGURANÇA E PRIVACIDADE |
|
|
Nome: |
Conteúdo: |
|
mat_codmaterial |
Chave Primária, exclui-se todos os registros relacionados. |
|
mat_descrição |
Sem
Restrição. |
|
mat_quantidade |
Sem
Restrição. |
|
mat_valorunit |
Sem
Restrição. |
|
servico {ser_codservicos, ser_descricao, ser_valor} |
|
|
ESTRUTURA |
|
|
Nome: |
Conteúdo: |
|
servico |
Informações sobre os Serviços efetuados na manutenção |
|
ser_codservicos |
Caracter(10)
- Código da Oficina. |
|
ser_descricao |
Caracter
(255)- Número da placa de um veículo. |
|
ser_valor |
Numérico
– Valor do Serviço Efetuado. |
|
INTEGRIDADE |
|
|
Nome: |
Conteúdo: |
|
ser_codservicos |
Não
Nulo. |
|
ser_descricao |
Não
Nulo. |
|
ser_valor |
Não
Nulo. |
|
SEGURANÇA E PRIVACIDADE |
|
|
Nome: |
Conteúdo: |
|
ser_codservicos |
Chave Primária, exclui-se todos os registros relacionados. |
|
ser_descricao |
Sem
Restrição. |
|
ser_valor |
Sem
Restrição. |
|
cotacao { cot_codcotacao, cot_data, cot_aprovacao} |
|
|
ESTRUTURA |
|
|
Nome: |
Conteúdo: |
|
cotacao |
Informações sobre as Cotação Recebidas |
|
cot_codcotacao |
Caracter(10)
- Código da Oficina. |
|
cot_data |
Data
– Data do Orçamento. |
|
cot_aprovacao |
Caracter
(03) - Aprovação. |
|
INTEGRIDADE |
|
|
Nome: |
Conteúdo: |
|
cot_codcotacao |
Não
Nulo. |
|
cot_data |
Não
Nulo. |
|
cot_aprovacao |
Não
Nulo. |
|
SEGURANÇA E PRIVACIDADE |
|
|
Nome: |
Conteúdo: |
|
cot_codcotacao |
Chave Primária, exclui-se todos os registros relacionados. |
|
cot_data |
Sem
Restrição. |
|
cot_aprovacao |
Sem
Restrição. |
|
OCORRENCIA {oco_cod, man_codmanut, vei_codveiculo} |
|
|
ESTRUTURA |
|
|
Nome: |
Conteúdo: |
|
OCORRENCIA |
Informações sobre os veículos que sofreram manutenção |
|
oco_cod |
Caracter(10)
- Código da Ocorrência. |
|
man_codmanut |
Caracter(10)
- Código da Manutenção. |
|
vei_codveiculo |
Caracter
(10) - Código do Veiculo |
|
INTEGRIDADE |
|
|
Nome: |
Conteúdo: |
|
oco_cod |
Não
Nulo. |
|
man_codmanut |
Não
Nulo. |
|
vei_codveiculo |
Não
Nulo. |
|
SEGURANÇA E PRIVACIDADE |
|
|
Nome: |
Conteúdo: |
|
oco_cod |
Chave Primária, exclui-se todos os registros relacionados. |
|
man_codmanut |
Chave Estrangeira, exclui-se os vínculos com as outras
tabelas |
|
vei_codveiculo |
Chave Estrangeira, exclui-se os vínculos com as outras
tabelas |
|
TEM{ tem_cod, man_codmanut, ser_codservico} |
|
|
ESTRUTURA |
|
|
Nome: |
Conteúdo: |
|
TEM |
Informações sobre os serviços efetuados na manutenção |
|
tem_cod |
Caracter(10)
- Código da tabela tem. |
|
man_codmanut |
Caracter
(10)- Código da Manutenção. |
|
ser_codservico |
Caracter
(10) - Código do Serviço. |
|
INTEGRIDADE |
|
|
Nome: |
Conteúdo: |
|
tem_cod |
Não
Nulo. |
|
man_codmanut |
Não
Nulo. |
|
ser_codservico |
Não
Nulo. |
|
SEGURANÇA E PRIVACIDADE |
|
|
Nome: |
Conteúdo: |
|
tem_cod |
Chave Primária, exclui-se todos os registros relacionados. |
|
man_codmanut |
Chave Estrangeira, exclui-se os vínculos com as outras
tabelas |
|
ser_codservico |
Chave Estrangeira, exclui-se os vínculos com as outras
tabelas |
|
VINCULO{ vin_cod ,
mat_codmaterial, ser_codservico} |
|
|
ESTRUTURA |
|
|
Nome: |
Conteúdo: |
|
VINCULO |
Informações sobre os materiais usado pelos serviços |
|
vin_cod |
Caracter(10)
- Código do Vinculo. |
|
mat_codmaterial |
Caracter
(10)- Código do Material. |
|
ser_codservico |
Caracter
(10) - Código do Serviço. |
|
INTEGRIDADE |
|
|
Nome: |
Conteúdo: |
|
vin_cod |
Não
Nulo. |
|
mat_codmaterial |
Não
Nulo. |
|
ser_codservico |
Não
Nulo. |
|
SEGURANÇA E PRIVACIDADE |
|
|
Nome: |
Conteúdo: |
|
vin_cod |
Excluindo este registro, exclui-se todos os registros
relacionados. |
|
mat_codmaterial |
Chave Estrangeira, exclui-se os vínculos com as outras
tabelas |
|
ser_codservico |
Chave Estrangeira, exclui-se os vínculos com as outras
tabelas |
|
PRESTA { pre_cod , man_codmanut, ofi_codofic} |
|
|
ESTRUTURA |
|
|
Nome: |
Conteúdo: |
|
PRESTA |
Informações sobre as Oficinas que prestam determinada manutenção |
|
pre_cod |
Caracter(10)
- Código da Tabela Presta. |
|
man_codmanut |
Caracter
(10)- Código da Manutenção. |
|
ofi_codofic |
Caracter
(10) - Código da Oficina. |
|
INTEGRIDADE |
|
|
Nome: |
Conteúdo: |
|
pre_cod |
Não
Nulo. |
|
man_codmanut |
Não
Nulo. |
|
ofi_codofic |
Não
Nulo. |
|
SEGURANÇA E PRIVACIDADE |
|
|
Nome: |
Conteúdo: |
|
pre_cod |
Excluindo este registro, exclui-se todos os registros
relacionados. |
|
man_codmanut |
Chave Estrangeira, exclui-se os vínculos com as outras
tabelas |
|
ofi_codofic |
Chave Estrangeira, exclui-se os vínculos com as outras
tabelas |
4
Diretório de Dados
4.1
Hardware
O Banco de Dados será implantado em um servidor
fechado da empresa ITAUTEC. Este servidor será o InforServer 3030 .
Característica:
·
Inforserver 3030 Dual
·
Processadores Pentium 4 3.2 Ghz Xeon
·
1 Gb de Ram
·
Placa Mãe Gigabyte
·
Placa de Vídeo off-board
·
2 HDs SCSI de 70 Gb
·
Unidade de Fita DAT DDS4
·
Placa
Rede 3COM 10/100/1000
Os terminais de
acesso poderão ter a configuração mínima abaixo:
·
Pentium III 800 Mhz
·
128 de Ram
·
HD 10 Gb
4.2
Softwares
O banco de dados a ser utilizado será o JDATASTORE que vem junto com JBUILDER.
Sistema Operacional do Servidor: Windows 2003 Advance Server
Implementado RAID 1.
Sistema Operacional dos Terminais: Windows 9x, Windows 2000 Professional, Windows XP.
4.3
Procedimentos de Implementação
Os procedimentos serão seguidos conforme a ordem abaixo:
· Instalação da parte física da rede
· Instalação do Sistema Operacional do Servidor
· Configuração de Segurança no Servidor
· Implantação do SGBD JDATASTORE
· Implantação do Banco SYS-MANUT
· Configuração das Estações para acesso a rede
· Instalação dos Clientes do Banco de Dados
5 Dicionário de Recursos
|
Localização dos Dados |
d:/SIS-MANUT/SYS_MANUT.gdb |
|
Alias: |
SYSMANUT |
|
Projeto: |
“Sistema de Gestão de Frota de Apoio à Logística de Cargas - SIGEF-ALC”. |
|
Características protocolo utilizado: |
TCP/IP |
6 Dicionário de Metadados

7 Criando a Massa de Dados
Para inserção de dados foram criados os conjuntos de comandos SQL e executados juntos assim inserindo o dados em todas tabelas.

Os comandos em SQL.
Insert into
MANUTENCAO( man_codmanut,man_dataentrada, man_datasaida)
VALUES('A1','2004-05-11','2004-12-19');
Insert into
MANUTENCAO( man_codmanut,man_dataentrada, man_datasaida)
VALUES('A2','2004-05-01','2004-02-14');
Insert into
MANUTENCAO( man_codmanut,man_dataentrada, man_datasaida)
VALUES('A3','2004-06-01','2004-07-01');
Insert into VEICULO( vei_codveiculo,vei_placa, vei_ano,vei_modelo)
values('B1','MND4567','2000','FORD
40000');
Insert into VEICULO( vei_codveiculo,vei_placa, vei_ano,vei_modelo)
values('B2','MLD4667','1999','FORD
30000');
Insert into VEICULO( vei_codveiculo,vei_placa, vei_ano,vei_modelo)
values('B3','CLD4667','2001','FORD
20000');
Insert into
COTACAO(cot_codcotacao,cot_data,cot_aprovacao,man_codmanut)
VALUES('C1','2004-01-01','SIM','A1'
);
Insert into
COTACAO(cot_codcotacao,cot_data,cot_aprovacao,man_codmanut)
VALUES('C2','2004-02-01','NAO','A2'
);
Insert into
COTACAO(cot_codcotacao,cot_data,cot_aprovacao,man_codmanut)
VALUES('C3','2004-03-01','SIM','A3'
);
Insert into OFICINA(ofi_codofic,ofi_nome , ofi_endereco, ofi_bairro,ofi_cidade,ofi_uf, ofi_tel) VALUES('D1','Of. Teste','Av. Luis,85','Antigo','São Jose','SP','354364454' );
Insert into OFICINA(ofi_codofic,ofi_nome , ofi_endereco, ofi_bairro,ofi_cidade,ofi_uf, ofi_tel) VALUES('D2','Of. Arruma','Rua João,5','Centro','Barra do Piraí','RJ','35564454' );
Insert into OFICINA(ofi_codofic,ofi_nome , ofi_endereco, ofi_bairro,ofi_cidade,ofi_uf, ofi_tel) VALUES('D3','Of. do Paulo','Rua Anterior,78','Aterro','Volta Redonda','RJ','35555454' );
Insert into MATERIAL( mat_codmaterial,mat_descricao,mat_quantidade,mat_valorunit)
VALUES('F1','Lata de Oleo',12,15 );
Insert into MATERIAL( mat_codmaterial,mat_descricao,mat_quantidade,mat_valorunit)
VALUES('F2','Lata de Oleo de Freio',32,12 );
Insert into MATERIAL( mat_codmaterial,mat_descricao,mat_quantidade,mat_valorunit)
VALUES('F3','Pastilha de Freio',10,40 );
Insert into SERVICO( ser_codservico ,ser_descricao, ser_valor)
VALUES('H1','Troca de Óleo',34);
Insert into SERVICO( ser_codservico ,ser_descricao, ser_valor)
VALUES('H2','Troca de Caixa de Marcha',234);
Insert into SERVICO( ser_codservico ,ser_descricao, ser_valor)
VALUES('H3','Reparo na Biela',534);
Insert into
TEM( tem_cod, man_codmanut,ser_codservico)
VALUES('E1','A2','H3');
Insert into
TEM( tem_cod, man_codmanut,ser_codservico)
VALUES('E2','A3','H1');
Insert into
TEM( tem_cod, man_codmanut,ser_codservico)
VALUES('E3','A1','H2');
Insert into
VINCULO( vin_cod,mat_codmaterial,ser_codservico)
values('I1','F2','H3');
Insert into
VINCULO( vin_cod,mat_codmaterial,ser_codservico)
values('I2','F1','H2');
Insert into
VINCULO( vin_cod,mat_codmaterial,ser_codservico)
values('I3','F3','H1');
Insert into
OCORRENCIA( oco_cod,man_codmanut,vei_codveiculo)
values('J1','A2','B3');
Insert into
OCORRENCIA( oco_cod,man_codmanut,vei_codveiculo)
values('J2','A3','B1');
Insert into
OCORRENCIA( oco_cod,man_codmanut,vei_codveiculo)
values('J3','A1','B2');
Insert into
PRESTA( pre_cod,man_codmanut,ofi_codofic)
VALUES('L1','A1','D1');
Insert into
PRESTA( pre_cod,man_codmanut,ofi_codofic)
VALUES('L2','A2','D2');
Insert into
PRESTA( pre_cod,man_codmanut,ofi_codofic)
VALUES('L3','A3','D3');
8 Consulta ao Banco de Dados
Linguagem Natural
- Mostras o nome e telefone das oficinas do estado do Rio de Janeiro
SQL :
select ofi_nome,ofi_tel from oficina where ofi_uf='RJ'

Linguagem Natural
- Mostrar as proposta ou cotação de manutenção que não foram aprovadas
SQL
select cotacao.cot_codcotacao,manutencao.man_codmanut
from manutencao,cotacao where manutencao.man_codmanut=cotacao.man_codmanut and
cotacao.cot_aprovacao='NAO';

Linguagem Natural
- Mostrar as datas no qual o veiculo especificado sofreu manutenção
SQL
select veiculo.vei_placa,manutencao.man_dataentrada, manutencao.man_datasaida from manutencao,ocorrencia, veiculo where veiculo.vei_placa='MND4567' and manutencao.man_codmanut=ocorrencia.man_codmanut and ocorrencia.vei_codveiculo=veiculo.vei_codveiculo

9 Conversão para modelo Hiráquico
Este modelo de banco de dados seque um a estrutura de um organograma de uma empresa. Assim ele demonstra a herarquia das relações.

10 Modelo de Dados de Rede.
O Modelo de Dados de Rede à 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.

11 Modelo de Dados Orientado à Objeto.
Modelos de Dados Orientados a Objetos apresentam um estilo de organização de sistemas como uma gama de objetos que integram estruturas de dados e seus comportamentos. Os conceitos, princípios e mecanismos são diferentes dos outros modelos.

12 Conclusão
Esta listex forçou nos a aplicar as técnicas e projetar a primeira versão do Banco SYS-MANUT. E assim, nos capacitou e agregou nos mais conhecimento.