LISTEX 4 - CE-240 Projeto de Sistema de BD

 

Aluna: LUCIANA SANTOS

 

Título: Implementação de um BD Modelo de Dados Relacional e sua Conversão para os Modelos de Dados Hierárquico, Rede e Orientado a Objetos:

 

 

 

1. – Objetivos do lab:

 

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. - Descrição dos Principais Passos realizados no Exercício:

 

1) Quanto à implementação do Modelo de Dados Relacional, cada aluno deverá:

 

(a) Implementar e testar a 3ªFN do Modelo de Dados Relacional do seu Protótipo de Aplicativo de BD no SGBD JDATASTORE da BORLAND;

 

RESOLUÇÃO:

 

Dada a 3ªFN do Modelo de Dados Relacional do Protótipo de Aplicativo de BD SIS_PAR abaixo:

 

SI-ALO

Num_localidade

loc_atendimento

loc_naoatendimento

 

SI-AGI

num_grupodeinteresse

num_parceiro

 

SI-AGE

num_grupodeexclusao

num_parceiro

 

SI_PAR

num_parceiro

num_localidade

end_parceiro

nome_parceiro

 

 

Utilizando a ferramenta JDATASTORE da BORLAND devidamente instalada e configurada no microcomputador, e utilizando o Tutorial do JDATASTORE das notas de aula do Professor (arquivo: Aula07.2bCes30Ce24004f(Tutorial_1-JDataStore)), o Protótipo de Aplicativo de BD citado foi implementado com o código fonte abaixo, em SQL (Structured Query Language).

 

create table SI_ALO (

num_localidade int not null,

loc_atendimento varchar (20),

loc_naoatendimento varchar (20),

primary key (num_localidade));

 

create table SI_AGI (

num_grupodeinteresse int not null,

num_parceiro int,

primary key (num_grupodeinteresse));

 

create table SI_AGE (

num_grupodeexclusao int not null,

num_parceiro int,

primary key (num_grupodeexclusao));

 

create table SI_PAR (

num_parceiro int not null,

num_localidade int,

end_parceiro varchar (20),

nome_parceiro varchar (20),

primary key (num_parceiro));

 

·        Feito isso, foi realizada a inserção das chaves estrangeiras com o código fonte abaixo:

 

alter table SI_PAR add constraint fk1 foreign key (num_localidade) references SI_ALO(num_localidade);

 

·        O próximo passo, com as relações já configuradas, foi a inserção da massa de dados, conforme código fonte abaixo:

 

insert into SI_ALO  values(100, 'Bairro Norte', 'Bairro Centro-Sul'););

insert into SI_ALO  values(200, 'Bairro Centro-Sul', 'Bairro Leste');

insert into SI_ALO  values(300, 'Bairro Leste', 'Bairro Norte');

 

insert into SI_PAR  values(1001, 100, 'R.Alpargatas, 37', 'Truck');

insert into SI_PAR  values(1002, 200, 'Av. da Gloria, 3007', 'Transp');

insert into SI_PAR  values(1003, 300, 'Tv. do Chao, 603', 'Joia');

 

insert into SI_AGE  values(40, 1001);

insert into SI_AGE  values(50, 1002);

insert into SI_AGE  values(60, 1003);

 

insert into SI_AGI  values(10, 1001);

insert into SI_AGI  values(20, 1002);

insert into SI_AGI  values(30, 1003);

 

·        Obtendo-se como resultado a implementação do Aplicativo de BD como abaixo:

 

 

 

·        As Entidades do Protótipo de Aplicativo de BD SIS_PAR ficam então, como segue:

 

SI_ALO

Num_localidade

loc_atendimento

loc_naoatendimento

100

Bairro Norte

Bairro Centro-Sul

200

Bairro Centro-Sul

Bairro Leste

300

Bairro Leste

Bairro Norte

 

SI_AGI

num_grupodeinteresse

num_parceiro

10

1001

200

1002

30

1003

 

SI_AGE

num_grupodeexclusao

num_parceiro

40

1001

50

1002

60

1003

 

SI_PAR

num_parceiro

num_localidade

end_parceiro

nome_parceiro

1001

100

R. Alpargatas, 37

Truck

1002

200

Av. da Gloria, 3007

Transp SA

1003

300

Tv. Do Chão, 603

Joia

 

 

(b) Utilizar a heurística das 5 mais ou menos 2 Entidades; Atributos; Tuplas; Formulários e Relatórios; ou Consultas (Queries) para implementar e testar o seu Protótipo de Aplicativo de BD, visando integrá-lo, mais tarde, aos demais Protótipos em desenvolvimento.

 

RESOLUÇÃO:

 

As Entidades SI_ALO, SI_AGE e SI_AGI e SI_PAR foram implementadas no Protótipo de Aplicativo de BD SIS_PAR seguindo a heurística dos 5 mais ou menos 2 Entidades; Atributos; Tuplas; Formulários e Relatórios e dispostas de forma a facilitar os futuros níveis de integração com outras fases dos Bancos de Dados Setoriais (BDS), Bancos de Dados Corporativo (BDC) e do Banco de Dados Holding (BDH) HALCS.

 

(c) Implementar 03 (três) consultas (ou queries), envolvendo 1, 2 e 3 relações do seu Aplicativo de Banco de Dados.

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

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

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

 

RESOLUÇÃO:

 

Após a aplicação da consulta SQL (Queries) dada pelo código fonte abaixo (usando comandos equivalentes a SELECT, Project e JOIN pois o dialeto do JDataStore não segue o padrão ANSI), obteve-se a implementação da consulta envolvendo somente uma relação / tabela:

 

select loc_atendimento

from SI_ALO

where SI_ALO.num_localidade = 100;

 

Devendo-se obter como reposta, após a aplicação dos filtros, a tabela abaixo:

 

Loc_atendimento

Bairro Norte

 

O que fica demonstrado na tela capturada exibida abaixo:

 

 

 

Após a aplicação da consulta SQL (Queries) dada pelo código fonte abaixo (usando comandos equivalentes a SELECT, Project e JOIN pois o dialeto do JDataStore não segue o padrão ANSI), obteve-se a implementação da consulta envolvendo duas relações / tabelas:

 

select loc_naoatendimento

from SI_ALO, SI_PAR

where SI_PAR.nome_parceiro = 'Truck'

            and SI_PAR.num_localidade=SI_ALO.num_localidade;

 

Devendo-se obter como reposta, após a aplicação dos filtros, a tabela abaixo:

 

Loc_naoatendimento

Bairro Centro-Sul

 

O que fica demonstrado na tela capturada exibida abaixo:

 

 

 

Após a aplicação da consulta SQL (Queries) dada pelo código fonte abaixo (usando comandos equivalentes a SELECT, Project e JOIN, pois o dialeto do JDataStore não segue o padrão ANSI), obteve-se a implementação da consulta envolvendo três relações / tabelas:

 

select num_grupodeinteresse, num_grupodeexclusao

from SI_AGI, SI_AGE,  SI_PAR

where SI_AGI.num_parceiro = SI_PAR.num_parceiro

            and SI_AGE.num_parceiro= SI_PAR.num_parceiro

            and SI_PAR.num_parceiro=1001;

 

Devendo-se obter como reposta, após a aplicação dos filtros, a tabela abaixo:

 

Num_grupodeinteresse

Num_grupodeexclusao

10

40

 

O que fica demonstrado na tela capturada exibida abaixo:

 

 

 

(d) Realizar testes de verificação no seu Protótipo de Aplicativo de BD na 3ªFN, por analogia com os exemplos desenvolvidos pelo Prof. em Sala de Aula, com o Aplicativo de BD de Peças, Fornecedores e Carregamentos;

 

RESOLUÇÃO:

 

Os exemplos em sala de aula sugerem testes de acesso a uma, duas e três tabelas / relações e acessos encadeados.

 

Acesso a uma Tabela:

 

Problema: Listar todas as informações do Parceiro ‘Joia’:

 

Utilizando o código fonte (em dialeto SQL JDataStore) abaixo:

 

select *

from SI_PAR

where SI_PAR.nome_parceiro='Joia';

 

Devendo-se obter como reposta, após a aplicação dos filtros, a tabela abaixo:

 

Num_parceeiro

Num_localidade

End_parceiro

Nome_parceiro

1003

300

Tv. Do Chão, 603

Joia

 

O que fica evidenciado na tela capturada exibida abaixo:

 

 

Acesso a duas Tabelas:

 

Problema: Listar o número do Grupo de Interesse do Parceiro Transp:

 

Utilizando o código fonte (em dialeto SQL JDataStore) abaixo:

 

select num_grupodeinteresse

from SI_PAR, SI_AGI

where SI_PAR.nome_parceiro='Transp'

    and SI_PAR.num_parceiro=SI_AGI.num_parceiro;

 

Devendo-se obter como reposta, após a aplicação dos filtros, a tabela abaixo:

 

Nuum_grupodeinteresse

20

 

O que fica demonstrado na tela capturada exibida abaixo:

 

 

Acesso a três Tabelas:

 

Problema: Listar o Número do Grupo de Interesse que atende a Localidade 100.

 

Utilizando o código fonte (em dialeto SQL JDataStore) abaixo:

 

select num_grupodeinteresse

from SI_PAR, SI_AGI, SI_ALO

where SI_PAR.num_parceiro=SI_AGI.num_parceiro

    and SI_PAR.num_localidade=SI_ALO.num_localidade

    and SI_ALO.num_localidade=100;

 

Devendo-se obter como reposta, após a aplicação dos filtros, a tabela abaixo:

 

num_grupodeinteresse

10

 

O que fica demonstrado na tela capturada exibida abaixo:

 

 

Consultas Encadeadas:

 

Problema: Listar o Nome e o Endereço dos Parceiros que atendem as Localidades cujo Número do Grupo de Interesse for maior que a média dos Números dos Grupos de Interesse.

 

Utilizando o código fonte (em dialeto SQL JDataStore) abaixo:

 

select nome_parceiro, end_parceiro

from SI_PAR, SI_AGI

where SI_AGI.num_grupodeinteresse>(select AVG(num_grupodeinteresse)

                        from SI_AGI)

            and SI_PAR.num_parceiro=SI_AGI.num_parceiro;

 

Devendo-se obter como reposta, após a aplicação dos filtros, a tabela abaixo:

 

Nome_parceiro

End_parceiro

Joia

Tv. do Chao, 603

 

O que fica demonstrado na tela capturada exibida abaixo:

 

 

(e) Apresentar a Versão 1.0 dos 4 (quatro) Componentes do Sistema de Dicionário de Dados do seu Aplicativo de BD;

 

RESOLUÇÃO:

 

1) Dicionário de Dados – DD:

 

Um DD deve conter a descrição dos objetos de um Aplicativo de BD;

 

 

 

 

 

2) Diretório de Dados:

 

Um Diretório de Dados deve agregar ao Dicionário de Dados informações sobre relacionamentos entre Dados, Entidades e Usuários;

 

No BD de Gestão Administrativa – GAD existem três Aplicativos de Banco de Dados: SIS-ORC, SIS-PAR e SIS-CLI para gerenciar Orçamento, Parcerias e Clientes. Entende-se a necessidade de criação de um Aplicativo de BD SIS-PAR com as seguintes ENTIDADES:

 

 

 

 

 

 

4) Dicionário de Metadados:

 

O Modelo Entidade-Relacionamento,  como é chamado o Dicionário de Metadados, , utilizado está descrito abaixo:

 

No contexto de Parcerias (Aplicativo SIS-PAR), devemos gerenciar o conjunto de PARCEIROS (fornecedores de Serviço de Entrega) subdividindo-os em dois Grupos dependendo das LOCALIDADES de origem e destino para o Serviço de Entrega.

 

O primeiro grupo é formado por parceiros que a ALC tem interesse em manter relacionamento comercial, pois se mantém compatibilidade entre a LOCALIDADE onde o PARCEIRO mantém Serviço e a LOCALIDADE da Entrega. Esse é o chamado GRUPO de INTERESSE.

 

Por outro lado, o grupo de parceiros em que a ALC não tem interesse em acionar para o fornecimento de Serviços (pois não há compatibilidade entre a LOCALIDADE onde o PARCEIRO mantém Serviço e a LOCALIDADE da Entrega) é definido como GRUPO de EXCLUSÃO.

 

 

(f) Elaborar e implementar, em Linguagem Natural, em Linguagem Estruturada de Consultas (Structured Query Language - SQL), pelo menos 03 (três) diferentes Consultas ao seu Aplicativo de BD, em níveis crescentes de complexidade (da mais simples para a mais complexa), utilizando os comandos Select; Project; Join; ou equivalentes;

 

RESOLUÇÃO:

 

Consulta com grau de dificuldade Simples:

 

Consulta: Qual o endereço do Parceiro Transp?

 

select end_parceiro

from SI_PAR

where SI_PAR.nome_parceiro='Transp';

 

Consulta com grau de dificuldade Média:

 

Consulta: Qual o local de atendimento e o número do Grupo de Interesse do Parceiro Truck ?

 

select loc_atendimento, num_grupodeinteresse

from SI_PAR, SI_AGI, SI_ALO

where SI_PAR.nome_parceiro='Truck'

            and SI_ALO.num_localidade=SI_PAR.num_localidade

            and SI_AGI.num_parceiro=SI_PAR.num_parceiro;

 

Consulta com grau de dificuldade Difícil:

 

Consulta: Qual o número do Grupo de Exclusão e os Nomes dos Parceiros para o Bairro ‘Centro-Sul’?

 

select num_grupodeexclusao, nome_parceiro

from SI_PAR, SI_AGE, SI_ALO

where SI_PAR.num_localidade=SI_ALO.num_localidade

            and SI_ALO.loc_naoatendimento= 'Bairro Centro-Sul'

            and SI_AGE.num_parceiro=SI_PAR.num_parceiro;

 

(e) Publicar os Resultados das 03 (três) Consultas ao seu Aplicativo de BD, copiados e colados em HTML na sua subhomepage.

 

RESOLUÇÃO:

 

Resultados Publicados no link LISTEX04.

 

Consulta com grau de dificuldade Simples:

 

 

 

Consulta com grau de dificuldade Média:

 

 

Consulta com grau de dificuldade Difícil:

 

 

 

2) Quanto a Pesquisa e Conversão do seu Aplicativo de BD Modelo de Dados Relacional na 3ªFN para os Modelos de Dados Hierárquico, Redes e Orientado a Objetos, cada aluno deverá:

 

(a) Pesquisar, Analisar e Estudar exemplos do Prof. Da Matéria, de artigos ou de livros, e por analogia, realizar a publicação, em HTML na sua subhomepage, das conversões do Modelo de Dados Relacional do seu Aplicativo de BD para os Modelos de Dados Hierárquico, Rede, e Orientado a Objetos; e

 

RESOLUÇÃO:

 

A pesquisa abaixo foi transcrita do livro-texto “Sistema de Banco de Dados” doa autores: Abraham Silberschatz, Henry .Korth e S. Sudarshan (3ª Edição – Makron Books)

 

Modelo de Dados de Rede:

 

É um Modelo Lógico com base em Registros. Os dados no Modelo em Rede são representados por um conjunto de Registros e as relações entre esses são representadas por links (ligações), as quais podem ser vistas pelos ponteiros. Os Registros são organizados no BD por um conjunto arbitrário de gráficos

 

Modelo de Dados Hierárquico:

 

Outro exemplo de Modelo Lógico com base em Registros. O Modelo Hierárquico é similar ao Modelo em Rede, pois os dados e suas relações são representados, respectivamente, por Registros e Links. A diferença é que no Modelo Hierárquico os Registros estão Organizados em Árvores em vez de gráficos arbitrários.

 

Modelo de Dados Orientado a Objetos:

 

É um Modelo Lógico com base em Objetos. Como o MER, o modelo Orientado a Objetos tem por base um conjunto de Objetos. Um objeto contém valores armazenados em variáveis instâncias dentro do objeto. Um objeto contém conjuntos de códigos que operam esse objeto. Esses conjuntos de códigos são chamados métodos.

 

Os objetos que contém os mesmos tipos de valores e os mesmos métodos são agrupados em classes. Uma classe pode ser vista como uma definição de tipos para objetos. Essa combinação compacta de dados e métodos abrangendo uma definição de tipo é similar ao tipo abstrato em uma linguagem de programação.

 

O único modo pelo qual um objeto pode ter acesso aos dados de outro objeto é por meio do método desse outro objeto. Essa ação é chamada “Enviar mensagem ao objeto”. Assim, a interface de métodos de um objeto define a parte externa “visível” de um objeto.A parte interna de um objeto - as instâncias variáveis e o código do método - não são visíveis externamente. O resultado são dois níveis de abstração de dados.

 

(b) 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

 

RESOLUÇÃO:

 

Vamos converter a seguinte tabela do Modelo Relacional conforme solicitado:

 

SI-ALO

Num_localidade

loc_atendimento

loc_naoatendimento

 

 

SI_PAR

num_parceiro

num_localidade

end_parceiro

nome_parceiro

 

 

Conversão para o Modelo de Dados de Rede:

 

 

 

Conversão para o Modelo de Dados Hierárquico:

 

 

Conversão para o Modelo de Dados Orientado a Objetos:

 

O Modelo Orientado a Objetos tem uma representação gráfica semelhante ao do MER. Há, no entanto, uma troca com o Nome da Entidade no Local do Nome da Classe/Objeto, e os Atributos da Entidade no Local dos Atributos da Classe/Objeto.

 

SI_PAR

num_parceiro

num_localidade

end_parceiro

nome_parceiro

 

SI_ALO

num_localidade

loc_atendimento

loc_naoatendimento

 

(c) Concluir que Modelo de Dados de BD é o mais adequado para o desenvolvimento do seu Aplicativo de BD, apresentando os principais resultados e justificativas.

 

RESOLUÇÃO

 

O Modelo Relacional difere dos modelos “Hierárquico” e “em Rede” por não usar nem ponteiros nem links. Ele relaciona os registros por valores próprios a eles. Como não é necessário o uso de ponteiros, há uma maior facilidade em sua utilização. Além disso, o uso do Modelo Relacional é mais comum, estando disponíveis diversas ferramentas CASE (Computer Aided Software Engeneering) e RAD (Rapid Application Development) disponíveis para implementação de Aplicativos de BD por esse Modelo.

 

Portanto, o Modelo de Dados Relacional será utilizado para implementação do Aplicativo de BD SIS_PAR.

 

3. - Principais Conclusões, Recomendações e Sugestões:

 

Recomenda-se utilizar um Sistema Gerenciador de Banco de Dados (SGBD) disponível, com um dialeto SQL parecido ao do padrão ANSI para Implementar e Testar o Protótipo de Aplicativo de Banco de Dados SIS_PAR com uma Modelagem Entidade - Relacionamento visando reduzir o desperdício de recursos nas futuras fases de integração e melhorar a eficiência operacional dos Bancos de Dados Setoriais (BDS), Bancos de Dados Corporativo (BDC) e do Banco de Dados Holding (BDH) HALCS;

 

 

Hosted by www.Geocities.ws

1