102
Curso de Engenharia de Computação COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E BANCO DE DADOS ORIENTADO A OBJETOS: CARACTERÍSTICAS E IMPLEMENTAÇÃO DE UM PROTÓTIPO David Rodrigues Machado Itatiba São Paulo Brasil Dezembro de 2009

COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

  • Upload
    voduong

  • View
    218

  • Download
    1

Embed Size (px)

Citation preview

Page 1: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

Curso de Engenharia de Computação

COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E BANCO DE DADOS ORIENTADO A OBJETOS: CARACTERÍSTICAS E IMPLEMENTAÇÃO DE UM

PROTÓTIPO

David Rodrigues Machado

Itatiba – São Paulo – Brasil

Dezembro de 2009

Page 2: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

ii

Curso de Engenharia de Computação

COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E BANCO DE DADOS ORIENTADO A OBJETOS: CARACTERÍSTICAS E IMPLEMENTAÇÃO DE UM

PROTÓTIPO

David Rodrigues Machado

Monografia apresentada à disciplina de Trabalho de

Conclusão de Curso II, do curso de Engenharia de

Computação da Universidade São Francisco, sob a

orientação do Prof. Ms. José Aparecido Carrilho, como

exigência parcial para conclusão do curso de graduação.

Orientador: Prof. Ms. José Aparecido Carrilho

Itatiba – São Paulo – Brasil

Dezembro de 2009

Page 3: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

iii

Comparação entre Banco de Dados Relacionais e Banco de Dados

Orientado a Objetos: Características e Implementação de um Protótipo

David Rodrigues Machado

Monografia defendida e aprovada em 07 de dezembro de 2009 pela Banca

Examinadora assim constituída:

Prof. Ms. José Aparecido Carrilho (Orientador)

USF – Universidade São Francisco – Itatiba – SP.

Prof Ms. Cláudio Maximiliano Zaina (Membro Interno)

USF – Universidade São Francisco – Itatiba – SP.

Prof. Ms. Debora Meyhofer Ferreira (Membro Interno)

USF – Universidade São Francisco – Itatiba – SP.

O registro de arguição e defesa consta de “ATA DE ARGUIÇÃO FINAL DE

MONOGRAFIA”, devidamente assinada e arquivada na coordenação do curso.

Page 4: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

iv

“Saber ler e escrever não é o fim da educação, sequer o início.”

Mahatma Gandhi

In: ATTENBOROUGH, RICHARD. A Sabedoria de Gandhi

Page 5: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

v

A meus queridos pais, Maria Niva e José Maria, que não terminaram o primeiro grau, mas sempre me deram apoio.

Page 6: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

vi

Agradecimentos

Agradecimento especial ao Prof. José Aparecido Carrilho, que com sua experiência e

ensinamentos durante a orientação, me indicou a “direção da luz” para que o trabalho fosse

concluído.

Ao Prof. Cláudio Maximiliano Zaina, pela supervisão durante a disciplina de Trabalho

de Conclusão de Curso II, além de ter sido o professor de diversas disciplinas durante o meu

curso de Engenharia de Computação.

Ao Prof. Alencar de Melo Junior, pelas suas orientações iniciais durante a supervisão

do Trabalho de Conclusão de Curso I.

Aos meus colegas de sala, Leandro, Paulo, Rafael, Márcio, Gustavo e João Paulo, não

só pela amizade, mas pela colaboração que me deram em relação às disciplinas durante estes

cinco anos de curso.

Ao Presidente da República Luiz Inácio Lula da Silva pela criação do programa

Prouni, pois sem isso, provavelmente nunca teria cursado um curso superior.

Agradeço a todas as pessoas que de alguma forma, contribuíram para que eu chegasse

até aqui. Mesmo quando não tive confiança em mim mesmo de que conseguiria durante as

dificuldades do curso. Isto inclui todo o corpo docente que lecionou para mim, os quais

alguns deles não estão mais presentes na Universidade São Francisco.

Page 7: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

vii

Sumário

Lista de Siglas .......................................................................................................................... ix

Lista de Figuras ........................................................................................................................ x

Lista de Tabelas ........................................................................................................................ xi

Resumo .................................................................................................................................... xii

Abstract .................................................................................................................................. xiii

1 INTRODUÇÃO ................................................................................................................ 1

1.1 Objetivos ....................................................................................................................... 3

1.2 Objetivos Específicos .................................................................................................... 3

1.3 Organização do Trabalho .............................................................................................. 4

2 ASPECTOS TEÓRICOS ................................................................................................. 5

2.1 Banco de Dados Relacional........................................................................................... 5

2.1.1 Estrutura das Tabelas e seus Relacionamentos ..................................................... 5

2.1.2 Chaves .................................................................................................................. 8

2.1.3 Linguagens de Consultas ...................................................................................... 8

2.1.4 SQL ....................................................................................................................... 9

2.2 Banco de Dados Orientado a Objetos ........................................................................... 9

2.2.1 Novas Aplicações de Banco de Dados ............................................................... 10

2.2.2 Estrutura do Modelo de Objetos ......................................................................... 11

2.2.3 Herança ............................................................................................................... 11

2.2.4 Identidade de Objeto (OID) e Ponteiros ............................................................. 13

2.2.5 Linguagens de Programação Persistente ............................................................ 14

2.3 Vantagens e Desvantagens dos Modelos Relacional e Orientado a Objetos .............. 15

2.3.1 Vantagens do Modelo Relacional ....................................................................... 15

2.3.2 Desvantagens do Modelo Relacional ................................................................. 15

2.3.3 Vantagens do Modelo de Objetos ....................................................................... 16

2.3.4 Desvantagens do Modelo de Objetos ................................................................. 17

3 PROJETO DO PROTÓTIPO ....................................................................................... 18

3.1 Modelagem do Banco de Dados ................................................................................. 18

3.1.1 Modelagem Relacional para o Protótipo ............................................................ 19

Page 8: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

viii

3.1.2 Modelagem das Classes de Objetos para o Protótipo ......................................... 20

3.1.3 Modelagem das Tabelas para o Modelo Relacional ........................................... 21

3.2 Softwares utilizados no Projeto ................................................................................... 21

3.2.1 MySQL ............................................................................................................... 22

3.2.2 db4objects (db4o) ............................................................................................... 23

3.3 Exemplo MySQL X db4o ........................................................................................... 24

3.3.1 Exemplo MySQL ................................................................................................ 25

3.3.2 Exemplo db4o ..................................................................................................... 26

3.4 O Protótipo .................................................................................................................. 27

4 TESTES ........................................................................................................................... 30

4.1 Testes de Inserção ....................................................................................................... 30

4.2 Testes de Atualização .................................................................................................. 31

4.3 Testes de Consulta ....................................................................................................... 32

4.4 Testes de Remoção ...................................................................................................... 33

4.5 Testes com Procedures SQL ....................................................................................... 34

4.6 Análise dos Resultados................................................................................................ 36

5 CONCLUSÃO ................................................................................................................. 38

5.1 Contribuições .............................................................................................................. 39

5.2 Extensões ..................................................................................................................... 39

Referências Bibliográficas ..................................................................................................... 40

Bibliografia Consultada ......................................................................................................... 42

Apêndice A – Protótipo para Testes nos Bancos de Dados .................................................. 43

Apêndice B – Resultados dos Testes nos Bancos de Dados ................................................. 84

Page 9: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

ix

Lista de Siglas

AVE Alta Velocidade Espanhola

BD Banco de Dados

CAD Computer-Aided Design

CASE Computer-Aided Software Engineering

CRUD Create, Read, Update , Delete

db4o db4objects

GPL General Public License

IDE Integrated Development Environment

NQ Native Query

ODMG Object Database Management Group

OID 1. Object Identifier

OIS Office Information System

OLAP On-line Analytical Processing

ORM Object-Relational Mapping

QBE

RDBMS

Query by Example

Relational Database Management System

SODA Simple Object Data Access

SQL Structured Query Language

Page 10: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

x

Lista de Figuras

Figura 1 – Exemplo de um Modelo Relacional em um sistema bancário ................................. 2

Figura 2 – Exemplo de um Modelo Orientado a Objetos em um sistema bancário .................. 2

Figura 3 – Exemplo de especialização em hierarquia em um modelo de Escola de

Informática................................................................................................................................ 12

Figura 4 – Casos de uso para o protótipo de um sistema de Escola de Informática. .............. 18

Figura 5 – Modelo Relacional para o protótipo de um sistema de Escola de Informática. ..... 19

Figura 6 – Modelo Orientado a Objetos para o protótipo de um sistema de Escola de

Informática................................................................................................................................ 20

Figura 7 – Modelagem das Tabelas do Modelo Relacional .................................................... 21

Figura 8 - Representação da arquitetura de um servidor Mysql .............................................. 22

Figura 9 - Armazenamento de objetos em um B.D Relacional e em um B.D db4o................ 23

Figura 10 – Diagrama das telas do protótipo para Escola de Informática. .............................. 28

Figura 11 – Gráfico do teste de inserção nos bancos de dados para 4500 registros. ............... 31

Figura 12 – Gráfico do teste de atualização nos bancos de dados para 4500 registros. .......... 32

Figura 13 – Gráfico do teste de consulta nos bancos de dados para 4500 registros................ 33

Figura 14 – Gráfico do teste de remoção nos bancos de dados para 4500 registros. .............. 34

Figura 15 – Gráfico do teste de inserção entre procedures SQL e Banco de Dados Relacional

usando Java. .............................................................................................................................. 35

Figura 16 – Gráfico do teste de atualização entre procedures SQL e Banco de Dados

Relacional usando Java. ............................................................................................................ 35

Figura 17 – Gráfico do teste de consulta entre procedures SQL e Banco de Dados Relacional

usando Java. .............................................................................................................................. 35

Figura 18 – Gráfico do teste de remoção entre procedures SQL e Banco de Dados Relacional

usando Java. .............................................................................................................................. 35

Page 11: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

xi

Lista de Tabelas

Tabela 1 – Tabela de dados referentes a Pessoas. ...................................................................... 6

Tabela 2 – Tabela de dados referentes a Funcionários ............................................................... 6 Tabela 3 – Resultado da projeção. ............................................................................................. 6 Tabela 4 – Resultado da restrição. ............................................................................................. 6 Tabela 5 - Tabela resultante da junção entre a tabela Funcionários sobre Pessoas. ................... 7 Tabela 6 – Exemplo de especialização de classes com herança para uma Escola de

Informática................................................................................................................................ 12 Tabela 7 - Detalhes do benchmark open source PolePosition gerado para comparar o db4o 24

Tabela 8 – Resumo dos resultados nos testes efetuados para 4500 registros. ......................... 36

Page 12: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

xii

MACHADO, David Rodrigues. Comparação entre Banco de Dados Relacionais e Banco de

Dados Orientado a Objetos: Características e Implementação de um Protótipo. 2009. 41p.

Monografia (Bacharelado em Engenharia de Computação) – Curso de Engenharia de

Computação da Universidade São Francisco, Campus de Itatiba.

Resumo

A busca de um modelo ideal para Banco de Dados é constante. Entre esse modelos es-

tão o Banco de Dados Relacional e o Banco de Dados Orientado a Objetos. O Modelo de Da-

dos Relacional é o conceito abstrato que define maneiras de armazenar, manipular e recuperar

dados estruturados, unicamente na forma de coleções de tabelas, sendo elas simples estruturas

com linhas e colunas. As tabelas se relacionam através de chaves que determinam que cada

registro seja único. A linguagem de consulta predominante neste modelo é o SQL. O Modelo

de Dados Orientado a Objetos é baseado no paradigma de programação orientada a objetos e

propõe trabalhar com os dados utilizando dos mesmos conceitos de objetos: classes, polimor-

fismo, herança e encapsulamento. O Identificador de Objetos (OID) permite identificar uni-

camente um objeto, através de referências que se assemelham aos ponteiros. Para que o arma-

zenamento dos dados seja efetivado, é necessária uma linguagem de programação que prove-

ja persistência dos dados. Este projeto avalia os Modelos de Banco de Dados Relacional e de

Objetos, comparando-os através de um protótipo de uma aplicação e de testes realizados, mo-

delados para uma Escola de Informática. Fez-se uso na implementação da linguagem de pro-

gramação Java e os Bancos de Dados Mysql (Relacional) e db4objects (Orientado a Objetos).

PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a Objetos,

MySQL, db4objects.

Page 13: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

xiii

Abstract

The search for an ideal model for the database is constant. Between these models are

the Relational Database and the Database Object Oriented. The Relational Data Model is the

abstract concept that defines ways to store, manipulate and retrieve structured data, only in the

form of collections of tables, and they are simple structures with rows and columns. The ta-

bles are related by keys that determine that each record is unique. The query language predo-

minant in this model is the SQL. The Data Model Object Oriented is based on the paradigm of

object-oriented programming, and proposes to work with data using the same concepts of

objects: classes, polymorphism, inheritance and encapsulation. The Object Identifier (OID)

permits identify an object through references that are similar to pointers. For the storage of

data be effective, you need a programming language that provides data persistence. This pro-

ject evaluates the models Relational and the of Objects, comparing them through a prototype

implementation and testing, modeled for a School of Informatics. The implementation was

done using the Java programming language and the MySQL Database (Relational) and

db4objects (Object Oriented).

KEYWORDS: Relational Database, Object Oriented Database, MySQL, db4objects.

Page 14: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

1

1 INTRODUÇÃO

A quantidade de informação a ser persistida cresce bruscamente, ano após ano, com a

necessidade de se armazenar cada vez mais dados em todos os tipos de aplicações. Desta

maneira, buscam-se sempre formas mais eficientes, rápidas, seguras, estáveis, viáveis e,

porque não, fáceis para o armazenamento de dados. Atualmente não se armazenam apenas

caracteres e simples valores numéricos, mas uma infinidade de dados como vídeos, imagens,

áudios, objetos complexos, etc. Além da utilização do Banco de Dados Relacional, outra

forma de armazenamento que está ganhando espaço no mercado, ainda que tímida, é o Banco

de Dados Orientado a Objetos. Mas fica a pergunta: “será que os Bancos de Dados Orientado

a Objetos são tão revolucionários como foi o paradigma orientado a objetos para as

linguagens de programação?”. Pensando nisso, veio então a motivação para este Trabalho de

Conclusão do Curso, que tem como base a comparação do amplamente usado Banco de

Dados Relacional, com o Banco de Dados Orientado a Objetos, busca-se assim comparar as

diferenças, vantagens e desvantagens entre esses dois modelos.

Modelo Relacional: O modelo relacional usa um conjunto de tabelas para representar

os dados e as relações entre eles. Cada coluna de uma tabela possui um nome único. Uma

linha do objeto representa um relacionamento entre um conjunto de valores. Esse conjunto de

relacionamentos dentro de uma tabela faz com que exista uma curta correspondência entre o

conceito de tabela e o conceito matemático de relação (que deu origem ao nome deste modelo

de dados). Este foi um dos primeiros modelos de dados a se estabelecer em aplicações

comerciais (Silberschatz et al., 1999). A Figura 1 mostra um exemplo de um modelo de

Banco de Dados Relacional.

Page 15: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

2

Figura 1 – Exemplo de um Modelo Relacional em um sistema bancário.

Modelo Orientado a Objetos: O modelo orientado a objetos trabalha com um conjunto de

objetos. O objeto, por sua vez, possui valores armazenados em variáveis de instâncias, além

de conter um conjunto de métodos que o manipulam. Os objetos que possuem os mesmos

atributos e métodos são agrupados em classes que também podem ser definidas como um

tipo. Essa definição faz com que seja similar ao tipo abstrato de uma linguagem de

programação orientada a objetos. O modo que um objeto A acessa os dados de outro B é

através do método de B (enviar mensagem). A interface de métodos de um objeto indica a sua

parte externa visível. As variáveis de instâncias e o código dos métodos são a parte interna

que não são visíveis externamente (Silberschatz et al., 1999). A Figura 2 mostra a

representação do mesmo exemplo da Figura 1 em um Modelo Orientado a Objetos.

Figura 2 – Exemplo de um Modelo Orientado a Objetos em um sistema bancário.

Page 16: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

3

São apresentados ao longo do trabalho o estudo, a comparação e a descrição das

características do Banco de Dados Relacional e do Banco de Dados Orientado a Objetos, com

o objetivo de avaliar os benefícios e pontos negativos de cada um.

Para a avaliação destes modelos foi necessário desenvolver um protótipo de uma

aplicação para realização de testes, visando avaliar as duas formas de armazenamento de

dados e o desempenho de cada uma delas.

1.1 Objetivos

O objetivo deste trabalho é avaliar as características de um Banco de Dados

Relacional, comparando-as com um Banco de Dados Orientado a Objetos. Haverá

apresentação das características, vantagens e desvantagens de cada um destes modelos e

avaliação do desempenho para determinadas tarefas.

Para fazer a avaliação foi necessário implementar um protótipo de uma aplicação para

testar os Bancos de Dados.

1.2 Objetivos Específicos

O foco deste trabalho é a análise das características do Banco de Dados Relacional e

do Banco de Dados Orientado a Objetos e a comparação entre eles. Esta análise envolveu a

implementação de um protótipo para uma Escola de Informática para testar os bancos, a fim

de descrever suas vantagens e desvantagens. O intuito do projeto é avaliar se o modelo de

Banco de Dados Orientado a Objetos é realmente vantajoso e em quais casos ele poderá obter

melhor desempenho.

A linguagem escolhida para o protótipo foi Java porque, além de ser uma linguagem

orientada a objetos, é compatível com Banco de Dados Orientado a Objetos, permite trabalhar

com dados persistentes e, ainda, é amplamente utilizada atualmente, além de ser gratuita e

multiplataforma.

O protótipo se conecta a um Banco de Dados Relacional, o MySQL, escolhido por ser

gratuito e bastante usado. Essa aplicação também será integrada a um Banco de Dados

Orientado a Objetos. São vários Bancos de Dados Orientado a Objetos existentes como,

Jasmine, db4objects (db4o), O2, Object Store, etc. Foi escolhido o db4objects pois é de

código aberto e flexível, usado com abrangência de 2% em alguns países e permite que sua

Page 17: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

4

aplicação armazene e recupere dados com apenas uma linha de código, mesmo com

complexas estruturas de objetos em sua aplicação (Guerra, 2007).

1.3 Organização do Trabalho

Os conceitos teóricos são apresentados no capítulo 2, onde há uma descrição do Banco

de Dados Relacional e do Orientado a Objetos, relatando também as vantagens e

desvantagens observadas em cada modelo. No capítulo 3 são descritos a metodologia,

modelagem e codificação empregadas para a implementação do protótipo para uma Escola de

Informática, usando os Banco de Dados MySQL e db4objects (db4o). No capítulo 4, há uma

descrição dos testes e dos resultados obtidos. No capitulo 5 são relatadas as conclusões

obtidas neste projeto.

Page 18: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

5

2 ASPECTOS TEÓRICOS

Serão abordadas neste capítulo as características dos Modelos de Bancos de Dados

Relacional e Orientado a Objetos, descrevendo as vantagens e desvantagens de cada modelo

que são relevantes para realização do trabalho.

2.1 Banco de Dados Relacional

Banco de Dados Relacional é o conceito abstrato que define maneiras de armazenar,

manipular e recuperar dados estruturados unicamente na forma de uma coleção de tabelas,

cada uma das quais possui um único nome, sendo elas simples estruturas com linhas e

colunas. Ele foi um dos primeiros modelos de dados a se estabelecer em aplicações

comerciais e, atualmente, é utilizado em numerosas aplicações no âmbito do processamento

de dados tradicional, sendo o modelo mais amplamente usado (Silberschatz et al., 1999).

2.1.1 Estrutura das Tabelas e seus Relacionamentos

Considere a Tabela 1 sobre Pessoas que consiste em quatro colunas: Código, Nome,

CPF, e Telefone. Essas colunas contêm os atributos das Pessoas. Para cada atributo existe

uma coleção de valores permitidos, chamado de domínio do atributo. O atributo Nome, por

exemplo, é o conjunto de todos os nomes de Pessoas. Suponha que Código, Nome, CPF e

Telefone (v1, v2, v3 e v4) estejam no domínio D1, D2, D3 e D4 respectivamente, então a linha da

tabela Pessoas que contém v1, v2, v3 e v4, será um subconjunto de (Silberschatz et al., 1999):

D1 x D2 x D3 x D4

Matematicamente existe uma relação como um subconjunto de um produto cartesiano

de um conjunto de domínios, semelhantes à definição de uma tabela. O que difere é que se

designa nome aos atributos e matematicamente se usam “nomes” numéricos, utilizando o nu-

mero inteiro 1 para representar o atributo cujo o domínio aparece em primeiro lugar no con-

junto de domínios e 2 para o atributo que tem o domínio que aparece em segundo e assim por

diante. Como as tabelas usam o conceito matemático de relação, pode se usar os termos ma-

temáticos “relação” e “tupla” (registros) no lugar de tabela e linhas (Silberschatz et al., 1999).

Page 19: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

6

Na Tabela 1 existem três tuplas. Suponha que a tupla variável t se refere à primeira

tupla da relação. Usamos a notação t[Nome] = “David Rodma” t[CPF] = 303.072.794-52.

Uma alternativa seria escrever t[1] para os valores da tupla no primeiro atributo, t[2] para o

segundo e assim por diante. Matematicamente t r para representar que a tupla t esta na re-

lação r. Existe a possibilidade de um atributo possuir o mesmo domínio. Por exemplo, a rela-

ção Pessoas possui quatro atributos, Código, Nome, CPF e Telefone. A relação Funcionários

possui o mesmo domínio, o conjunto formado pelos nomes de Pessoas. O valor nulo, que

indica valor desconhecido ou inexistente, pertence a qualquer domínio possível. O Telefone

na relação Pessoas pode possuir um valor nulo caso a pessoa não tenha telefone (Silberschatz

et al., 1999).

As manipulações das tabelas são feitas através de operadores, como, por exemplo,

busca de dados. São os operadores de restrição, projeção ou junção que vão derivar as tabelas

de outras tabelas. A operação de restrição, também conhecida como seleção, extrai linhas es-

pecíficas de uma tabela. A operação de projeção extrai colunas específicas de uma tabela. Já a

operação de junção une duas tabelas com base em valores comuns em uma coluna em comum

(Date, 2000).

Tabela 1 – Tabela de dados referentes a Pessoas.

PESSOAS

Código Nome CPF Telefone

00005 David Rodma 303.072.794-52 (11) 4032-7592

00010 Rubens Ewald Filho 301.207.030-8 (11) 4033-3559

00015 Martin Scorsese 569.645.569-89 (11) 5658-5455

Tabela 2 – Tabela de dados referentes a Funcionários

FUNCIONÁRIOS

Código Data_Admissão Quant_Horas_Trabalhada

00005 18/02/2008 210

00010 25/04/1999 245

Restrição: Projeção:

Funcionários (Tabela 2) nos quais Pessoas sobre o Código e CPF:

„Quantidades de Horas Trabalhadas > 220‟: Tabela 3 – Resultado da projeção.

Tabela 4 – Resultado da restrição.

Código CPF

00005 303.072.794-52

00010 301.207.030-8

00015 569.645.569-89

Código Data_Admissão Quant_Horas_Trabalhada

00010 25/04/1999 245

Page 20: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

7

No exemplo de junção (Tabela 5), a tabela Pessoas (Tabela 1) e Funcionários (Tabela

2) têm uma coluna Código em comum, de maneira que podem ser juntadas com base no códi-

go em comum entre essas colunas. Assim, produz as linhas cujos códigos entre elas sejam

iguais. A saída obtida pela operação pode servir como entrada para outra tabela.

Junção:

Pessoas e Funcionários sobre Pessoas:

Tabela 5 - Tabela resultante da junção entre a tabela Funcionários sobre Pessoas.

Código Nome CPF Telefone Data_Admissão Quant_Horas_Trabalhada

00005 David Rodma 303.072.794-52 (11) 4032-7592 18/02/2008 210

00010 Rubens Ewald Filho 301.207.030-8 (11) 4033-3559 25/04/1999 245

Em um modelo relacional as tabelas não são estruturas físicas e sim lógicas. Em rela-

ção ao nível físico, o sistema tem vários modos para armazenar os dados: arquivos seqüenci-

ais, indexação, hashing, cadeia de ponteiros, compactação entre outras. Repare que não há

nenhum ponteiro no nível lógico conectando uma tabela a outra, como no exemplo mostrado

entre a linha que contem o Código da tabela Pessoas e a linha Código da tabela Funcionários,

onde a conexão não é feita por ponteiro e sim pelo aparecimento do valor Código entre as

duas tabelas. Podem existir ponteiros no nível físico, mas são ocultados do usuário (Date,

2000).

Agregando as tabelas, restrições, projeções e junções, o modelo relacional é constituí-

do dos componentes seguintes (Date, 2000):

Tipos escalares (incluindo o tipo booleano);

Gerador de tipo de relação: É uma interpretação pretendida para esse tipo de re-

lação gerada;

Variáveis de relações: Para as relações geradas que atribuem valores de relações

as variáveis de relações. Exemplo: insert, update e delete;

Operações relacionais: Para derivar valores de relações de outros valores de rela-

ções.

No exemplo da Tabela 1 a relação Pessoas, de Código (tipo inteiro) 0010 chama-se

Rubens Ewald Filho (tipo texto), possuindo o CPF de nº 301.207.030-8 e Telefone (11) 4033-

3559. Esta proposição foi adquirida trocando Código (cabeçalho) pelo valor 0010 (corpo),

Page 21: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

8

Nome por Rubens Ewald Filho e CPF por 301.207.030-8.

2.1.2 Chaves

As tabelas se relacionam através de chaves. Uma chave é um conjunto de um ou mais

atributos que determinam que cada registro seja único na tabela. A unicidade dos registros é

determinada por sua chave, que é muito importante para a criação dos índices. Existem dois

tipos de chaves. A chave primária nos permite distinguir as várias entidades de um conjunto

identificando cada registro e garantindo a unicidade. Ela não pode se repetir. Um exemplo de

chave primária seria o campo Código presente na Tabela 1 e Tabela 2. A chave estrangeira é

formada através de um relacionamento com a chave primária de outra tabela. Define um

relacionamento entre as tabelas e pode ocorrer repetidas vezes. Caso a chave primária seja

composta na origem, a chave estrangeira também o será (Silberschatz et al., 1999).

Para se determinar a chave primária para um esquema de relações deve se observar

aspectos como conjuntos de entidades fracas, conjunto de relacionamento, tabelas combinadas

e atributos multivalorados (Silberschatz et al., 1999).

2.1.3 Linguagens de Consultas

As informações dos Bancos de Dados são obtidas através de uma linguagem de

consulta, que, normalmente, são de nível mais alto que as linguagens mais comuns. As

linguagens de consultas são divididas em procedural e não-procedural. Na primeira, o usuário

deve informar ao sistema a realização de uma sequência de operações para obter o resultado

que se deseja. Já na segunda, o usuário descreve a informação que se deseja, sem fornecer um

procedimento específico para obtê-la. Entre as linguagens “puras”, a álgebra relacional é

procedural e o cálculo relacional de tupla ou domínio são não-procedurais (Silberschatz et al.,

1999).

Os sistemas de banco de dados comerciais incorporam tanto a linguagem procedural

como a não-procedural. Entre as linguagens comerciais, a que mais se destaca é o SQL, o qual

é usado pela maioria dos Bancos de Dados Relacionais.

Page 22: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

9

2.1.4 Structure Query Language (SQL)

Originalmente desenvolvida pela IBM, a princípio foi chamado de Sequel, essa

linguagem foi implantada como parte de um projeto (Sistema R) no inicio da década de 70. A

linguagem foi sendo aprimorada e teve seu nome alterado para SQL (Structure Query

Language). O SQL tem representado o padrão para as linguagens dos Bancos de Dados

Relacionais, devido em parte, à necessidade de uma linguagem de consulta mais fácil para o

usuário. O SQL combina construtores em álgebra e cálculo relacional, e não é apenas uma

“linguagem de consulta” como também possui recursos para definição de estruturas de dados

para modificação de dados e especificações de restrições de segurança (Silberschatz et al.,

1999).

A estrutura básica do SQL é:

Select A1, A2, ... , An

From R1, R2, ... , Rm

Where P

Select: relaciona os atributos desejados no resultado de uma consulta.

From: associa as relações que serão pesquisadas durante a evolução de uma expressão.

Where: um predicado que envolve atributos da relação que aparece na cláusula From.

Cada Ai representa um atributo e cada Ri, uma relação. P é um predicado.

Os valores em SQL podem ser tratados de várias maneiras. Para isso inclui várias

operações (rename, union, intersect, except), ordenação (order by), duplicidade, funções (avg,

min, max, sum, count), subconjuntos aninhados (in, not in), verificação de relações vazias

(exist, not exist), comparações de conjuntos (> some, <=some, =some, < > some, > all, < all

etc), remoção (delete), inserção (insert), atualizações (update), tipos de domínios (char,

integer etc) e definições de relação (create table, primary key etc) (Silberschatz et al., 1999).

2.2 Banco de Dados Orientado a Objetos

Muitas aplicações são limitadas por restrições impostas ao Modelo Relacional (ou

sistema de SQL de modo geral). O modelo Orientado a Objetos, baseado no paradigma de

programação Orientada a Objetos, que surgiu primeiramente para a linguagem Simula 67, e

mais tarde introduzida para Smalltalk, C++, Java, entre outras, vem como uma alternativa

para reverter às limitações impostas ao Modelo Relacional (Silberschatz et al., 1999).

Page 23: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

10

Como os Banco de Dados Orientados a Objetos são influenciados pelas Linguagens de

Programação Orientada a Objetos, utiliza os conceitos de Objetos, Classes, Polimorfismo,

Herança, Encapsulamento, descritos a seguir:

Objeto: modelam entidades físicas ou abstratas do mundo real. Os objetos podem ser divido

em persistentes - que são armazenados após a execução de uma aplicação, podendo ser

recuperados e compartilhados e transientes - que persistem somente durante a execução do

programa, não sendo muito útil para um Banco de Dados;

Classes: Estrutura para conter em determinado modelo, os dados que devem ser

representados e as operações que devem ser efetuadas com eles (Santos, 2003);

Métodos: Operações contidas em uma classe (Santos, 2003);

Polimorfismo: Permite manipulação de instâncias de classes que herdam de uma mesma

classe ancestral de forma unificada (Santos, 2003);

Herança: Reutilização de classes que permite usar uma “classe pai” como base, herdando

todos os campos e métodos não privados da classe base (Santos, 2003);

Encapsulamento: “Capacidade de ocultar dados dentro de modelos, permitindo que somente

operações especializadas ou dedicadas manipulem os dados ocultos” (Santos, 2003).

2.2.1 Novas Aplicações de Banco de Dados

Os Bancos de Dados convencionais encontram certas dificuldades em relação a novas

aplicações que surgiram no mercado. Entre essas novas aplicações estão os Banco de Dados

Multimídia (imagens, vídeo-on-demand, dados geográfico e espaciais, áudio etc), Sistema de

Informação de Escritório (OIS), Banco de Dados Hipertexto (como, por exemplo, World Wide

Web, que é uma hipermídia), Projetos Auxiliados por Computador (CAD), Engenharia de

Software Auxiliado por Computador (CASE), etc (Silberschatz et al., 1999).

Com o aumento da capacidade e do menor custo do hardware (disco, processamento,

memória, banda larga), e, a melhoria do gerenciamento de Banco de Dados, as novas

aplicações que não foram previstas no passado encontram dificuldades para serem modeladas

no Banco de Dados Relacional (Silberschatz et al., 1999). Além disso, as novas aplicações

estão se tornando mais complexas de se expressar. Por exemplo, um sistema da Secretária de

Segurança Pública, precisa tratar, constantemente, imagens, impressões digitais e assinaturas.

O Modelo Orientado a Objetos pode tornar-se uma alternativa aos problemas encontrados no

Modelo Relacional.

Page 24: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

11

2.2.2 Estrutura do Modelo de Objetos

Um objeto se assemelha a uma entidade no Modelo Relacional. O paradigma de objeto

trabalha com o encapsulamento de dados que representam um objeto em uma única unidade,

com um conjunto de variáveis que contém dados de objetos, semelhantes aos atributos no

Modelo Relacional. A comunicação entre o sistema é realizada através de mensagens

(chamadas de métodos), que são as solicitações que ocorrem entre os objetos ou execução de

um método solicitado. Os métodos são uma parte do código que executam a mensagem e

retornam um valor. Esta abordagem de métodos pode ser motivada, como por exemplo, em

uma empresa que tem funcionários com cargos diferentes, em que a maneira de se calcular o

salário é diversificada, pois você pode ter funcionários recebendo por hora, salário fixo, bônus

de vendas, etc. Essa forma de executar métodos diferentes é chamada de polimorfismo. O

método polimórfico seria encapsulado no código para calcular o salário dos funcionários que

obteria em resposta a mensagem calcular_salario. O encapsulamento faz com que se acessem

somente os métodos necessários para sua execução, já que as respostas são feitas através de

mensagens que modificam os métodos e variáveis, sem alterar o resto do sistema

(Silberschatz et al., 1999).

Outra característica do Modelo de Objetos é a presença de classes de objetos, que são

objetos similares presentes em um Banco de Dados. Isto inclui as variáveis de mesmo nome,

tipo e métodos, que respondem a mesma mensagem. Os objetos que formam a classe são

chamados de instância de sua classe. O conceito de classes em um Modelo Orientado a

Objetos assemelha-se a um conjunto de entidades num Modelo Relacional (Silberschatz et al.,

1999).

2.2.3 Herança

Um Banco de Dados de Objetos geralmente é composto de várias classes, muitas

vezes similares. Essas classes podem ser “herdadas” pelas subclasses (“classes filhas”), das

superclasses (“classes pais”), podendo então, as subclasses reaproveitarem parte do código,

como os atributos e métodos.

Um exemplo de herança seria ter uma classe “Pessoas” e a outra classe “Funcionários”

para representar uma Escola de Informática. Ambas possuem variáveis similares para Nome,

Endereço, CPF, etc, em que, hierarquicamente, a classe Funcionários poderia herdar de

Pessoas. Desta maneira, como a classe Funcionários herda as variáveis da classe Pessoas,

Page 25: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

12

FUNCIONÁRIOS ALUNOS

PROFESSORES PESSOAL ADMINISTRATIVO

PESSOAS

seria necessário somente a implementação das variáveis específicas a classe Funcionários,

como salário, data de admissão, entre outras. Esta hierarquia se assemelha a especialização

(ISA) no modelo relacional (Silberschatz et al., 1999). As especializações são chamadas de

subclasses, portando, Funcionários são uma subclasse de Pessoas e inversamente Pessoas é

uma superclasse de Funcionários como mostra a Figura 3.

Figura 3 – Exemplo de especialização em hierarquia em um modelo de Escola de Informática.

Na Tabela 6 é apresentado o exemplo de implementação de classes com herança, no

qual o protótipo do projeto se baseia:

Tabela 6 – Exemplo de especialização de classes com herança para uma Escola de Informática.

Class Funcionarios isa Pessoas{

int cod_func;

String CTPS;

float quant_horas_trabalhada;

float salário_hora;

date data_admissao;

float salário_total;

};

Class Pessoas{

int cod;

String nome;

String rg;

String cpf;

String sexo;

date data_nasc;

String tipo;

String endereco;

String bairro;

String cidade;

String uf;

String cep;

String telefone;

String celular;

String email;

};

Class Alunos isa Pessoas {

int matricula;

String responsavel;

String situacao

float saldo;

date data_ultimo_pagamento;

date data_matricula;

float nota;

int frequencia;

};

Class Pessoal_Administrativo isa Funcionarios{

String cargo;

};

Class Professores isa Funcionarios {

String area;

String curso_habilitados;

};

Page 26: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

13

2.2.4 Identidade de Objeto (OID) e Ponteiros

No modelo Orientado a Objetos, o objeto mantém a identidade mesmo que sua

propriedade se altere (variáveis, métodos, etc). Esse conceito não se aplica ao Modelo

Relacional, porque as tuplas só são diferenciadas pelos valores que contém. A forma de

identidade que o Modelo de Objeto usa é embutida, ou seja, é atribuído um identificador

automático, ao contrário do Relacional em que se precisa atribuir uma chave primária em uma

tabela como identificador único (Silberschatz et al., 1999).

A identidade de objeto (OID) permite identificar unicamente um objeto, podendo ser

números longos, caracteres, entre outros, onde a habilidade de armazenar é mais importante

do que um nome de fácil compreensão pelo usuário. O objeto armazena uma referência do

objeto que o representa. O problema é que os identificadores são específicos do sistema e

devem ser traduzidos se houver necessidade de mudar para outro sistema, pois este já possui

identificadores únicos externo ao sistema (Silberschatz et al., 1999).

Os OIDs podem privar o programador de se preocupar com a implementação das

chaves, mas em muitos casos, não elimina totalmente o uso de chaves pelo usuário. As chaves

podem ser necessárias para facilitar referências ao mundo exterior e também servir como

bases de pesquisas dentro do Banco de Dados (Date, 2000).

Ao se criar um objeto, ele recebe um identificador. Linguagens Orientadas a Objetos

não foram originalmente adaptadas para trabalharem com objetos persistentes, portanto o

identificador somente será utilizado durante a execução do programa. Após o término, o

objeto é excluído e o identificador fica sem sentido (Silberschatz et al., 1999).

A idéia de identidade de objeto está relacionada com ponteiros. Um exemplo de se

obter identidade é através de ponteiros para localização física. Um OID em C++ é um

ponteiro de memória. Os identificadores em Banco de Dados em C++ são implementados

através de ponteiros persistentes que, ao contrário de ponteiros de memória, permanecem

válidos mesmo após o encerramento do programa. Porém a localização física de um objeto

pode se alterar com o tempo. Para isso, existem várias formas de permanência de identidade:

intraprocedimento, intraprograma, interprograma e persistente, sendo esta última necessária

para o sistema de armazenamento de objetos, pois a persistência não é unicamente durante a

execução do programa, mas, sim, entre as mudanças de estruturas dos dados (Silberschatz et

al., 1999).

Page 27: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

14

2.2.5 Linguagens de Programação Persistente

O que difere uma linguagem de programação de um Banco de Dados é a manipulação

de dados persistentes que continuam a existir mesmo que o programa se encerre, como por

exemplo, as tabelas do Banco de Dados Relacionais. Isso é diferente das linguagens de

programação que só manipulam arquivos.

A linguagem relacional SQL é mais efetiva para manipular dados, mas outras

linguagens de programação são exigidas para a implementação de uma aplicação como

interface de usuário e rede. A forma mais comum para realizar a interface entre o Banco de

Dados e a linguagem de programação é a introdução da linguagem SQL no meio do código.

Esta solução possui o inconveniente de converter tuplas e objetos para fora do Paradigma

Orientado a Objetos, podendo ocorrer erros de difícil identificação. Além disso, a conversão

ocupa parte substancial do código. Uma possível solução seria a integração com uma máquina

conectada na rede compartilhando o mesmo sistema (Silberschatz et al., 1999).

A linguagem de programação persistente é uma linguagem de programação estendida

com estrutura para tratar dados persistentes. A vantagem é não precisar alterar o formato dos

objetos para armazenamento de dados além de que as mudanças que ocorrem são de forma

transparente. Outra vantagem é que não se necessita de código explicíto que mova os dados

do banco para a memória para então manipulá-los (Silberschatz et al., 1999).

As mais importantes linguagens orientadas a objetos com versões persistentes são

C++, Smaltalk e Java. Essas linguagens permitem manipular os dados diretamente sem ter

que passar por uma linguagem do Modelo Relacional, como o SQL. A desvantagem de

manipular os dados pela linguagem de programação é que elas são mais poderosas, tornando

mais fácil cometer erros no Banco de Dados. A complexidade da codificação também se torna

maior. O Grupo de Gerenciamento de Banco de Dados Objetos, conhecido ODMG (Object

Database Management Group) se empenhou em tentar padronizar as extensões de linguagens

C++, Smaltalk e Java para trabalhar com persistência, definindo bibliotecas e estendendo-as o

menos possível (Silberschatz et al., 1999).

As linguagens de programação orientada a objetos já possuem o conceito de objetos e

estrutura para criá-los, mas esses objetos são transientes, ou seja, desaparecem quando o

programa se encerra. Para tornár-lo persistente, existem várias formas a serem

implementadas. Entre elas estão Persistência por Classe – é a mais simples, onde se declara

que uma classe é persistente; Persistência por Marcação - Os objetos são marcados como

transientes e a decisão de persistência é declarada depois, mas antes do programa se encerrar;

Page 28: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

15

Persistência por Referência – Um ou mais objetos são declarados como persistentes (raiz). A

partir disto, todos os objetos referenciados a partir dos objetos raízes são considerados

persistentes, assim como as referências feitas a partir destes mesmos objetos. Um ponto

negativo para essa solução é que a seqüência de cadeias de referência pode ter um alto custo

para aplicação (Silberschatz et al., 1999).

2.3 Vantagens e Desvantagens dos Modelos Relacional e

Orientado a Objetos

Nesta seção são apresentadas as principais vantagens e desvantagens dos Modelos

Relacional e Orientado a Objetos.

2.3.1 Vantagens do Modelo Relacional

As principais vantagens do Modelo Relacional são:

Bastante usado e com um grande legado (Date, 2000);

Grande número de ferramentas e características que implementam o SQL, como padrões

de conectividade, ferramentas de relatório, ferramentas de OLAP e de backup, padrões de

recuperação e ferramentas gráficas;

Quando o sistema de Modelo Relacional é instalado, já vem pronto para uso (Date, 2000);

Todas as entidades, ainda que elas sejam relacionamentos, são representados do mesmo

modo uniforme especificamente por meio de linhas em relações;

O Banco de Dados pode ser manipulado e alterado independentemente da aplicação

(Date, 2000);

Utilização de diversas aplicações em um mesmo Banco de Dados (Paterson et al., 2006).

2.3.2 Desvantagens do Modelo Relacional

As principais desvantagens do Modelo Relacional são:

Necessidade de seleção de chaves entre tabelas;

Necessidade de mapeamento para conversão entre a linguagem de programação orientada

Page 29: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

16

a objetos e o formato relacional para transformar objetos em estruturas de tabelas, o que o

torna mais lento em tempo de compilação e execução e ainda exige parte substancial de

código (Silberschatz et al., 1999);

Codificação de conversão entre Objetos e Tuplas opera fora do paradigma de programação

orientada a objetos e há um risco maior de erros não detectados (Silberschatz et al., 1999);

Utilização de códigos sem significado semântico para poder identificar tuplas de seleção;

Dificuldade de modelar novas aplicações e objetos complexos, como por exemplo, dados

multimídia (Silberschatz et al., 1999).

2.3.3 Vantagens do Modelo de Objetos

As principais vantagens do Modelo de Objetos são:

Utilização dos princípios das linguagens de programação orientada a objetos (Silberschatz

et al., 1999);

Não é necessária a seleção de chaves para as várias classes de objetos e utilizar códigos

sem significado semântico para poder identificar tuplas de seleção;

Maior consistência em manipulações de dados;

Armazenamento direto de tipos de dados complexos (Silberschatz et al., 1999);

Habilidade de alterar a definição de um objeto sem modificar o resto do sistema

(Silberschatz et al., 1999);

Utilização de identificador de objeto (OID) único e imutável, criado pelo sistema

automaticamente e que são implementados em baixo nível (Silberschatz et al., 1999);

Permite manipular o Banco de Dados diretamente com a linguagem de programação sem

intermediação de outra linguagem, o que possibilita ter objetos muito complexos sem

necessidade de transformar os dados (Silberschatz et al., 1999).

Page 30: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

17

2.3.4 Desvantagens do Modelo de Objetos

As principais desvantagens do Modelo de Objetos são:

Pouco usado (Date, 2000);

Ferramentas gráficas para desenvolvimento possuem poucos recursos. Ausência das

ferramentas e características disponíveis em SQL;

Quando o sistema é instalado não fica disponível para uso imediato, ele é adaptado para

construções de classes e métodos (Date, 2000);

Instabilidade no direcionamento de aplicações, já que tudo se resume a objetos;

Linguagens para consultas não padronizadas (Date, 2000);

Modificações de um esquema de banco de dados orientados a objeto é mais complicado

que o modelo relacional, pois possui tipos complexos e herança;

Gasta-se mais tempo para implementação do código para manusear objetos persistentes e

apresenta dificuldades de especificar restrições (Date, 2000);

Mais chance de cometer erros no Banco de Dados, já que as linguagens de programação

são mais poderosas (Silberschatz et al., 1999);

Identificadores são específicos do sistema e devem ser traduzidos se houver necessidade

de mudar para outro sistema (Silberschatz et al., 1999).

Page 31: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

18

3 PROJETO DO PROTÓTIPO

Para dar inicío ao projeto do protótipo, foi definido um problema para ser modelado. O

problema escolhido para ele foi de uma Escola de Informática. Os casos de uso do protótipo

estão definidos na Figura 4 que resume as interacções entre o usuário e o protótipo.

Figura 4 – Casos de uso para o protótipo de um sistema de Escola de Informática.

Conforme os casos de uso descrito na Figura 4, as ações disponíveis para um

Funcionário de Escola de Informática são de Cadastrar Pessoas (Alunos ou Funcionários),

Cadastrar Turmas, Cadastrar Cursos, Matricular Alunos e Calcular Salário do Funcionário. Os

cadastros feitos no protótipo podem ser alterados, consultados e removidos.

3.1 Modelagem do Banco de Dados

O projeto do protótipo foi modelado com os dois modelos de Banco de Dados, o

Relacional e o de Objetos. A Figura 5 exibe a modelagem para o Banco de Dados Relacional

e a Figura 6 mostra a Modelagem Orientada a Objetos com suas respectivas classes. A Figura

7 apresenta a modelagem das Tabelas.

Page 32: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

19

3.1.1 Modelagem Relacional para o Protótipo

Figura 5 – Modelo Relacional para o protótipo de um sistema de Escola de Informática.

Page 33: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

20

3.1.2 Modelagem das Classes de Objetos para o Protótipo

Figura 6 – Modelo Orientado a Objetos para o protótipo de um sistema de Escola de Informática.

Page 34: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

21

3.1.3 Modelagem das Tabelas para o Modelo Relacional

Figura 7 – Modelagem das Tabelas do Modelo Relacional

3.2 Softwares utilizados no Projeto

Os seguintes softwares foram utilizados para o desenvolvimento deste projeto:

IDE NetBeans 6.7 - IDE Java de Código Livre (NetBeans, 2009);

MySQL 5.4 - Banco de Dados Relacional;

db4objects (db4o) 7.4 - Banco de Dados para Objetos (Informações, 2009);

Windows Vista Home 32 bits - Sistema Operacional.

Page 35: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

22

3.2.1 MySQL

O MySQL é um gerenciador de Banco de Dados Relacional que utiliza a linguagem

SQL. Desenvolvido para proporcionar economia na Web (Maior, 2009) e a sua crescente

popularização se devem, principalmente, por ser gratuito e com código aberto (licença GPL).

Está disponível para vários sistemas operacionais (Windows, Linux, MacOS, FreeBSD,

OpenBS, etc) . Ele foi produzido pela empresa alemã MySQL AB, disponível desde 1996,

mas tem uma história de desenvolvimento que remonta a 1979 (Welling-Thomson, 2005).

Mais tarde o MySQL foi comprado pela Sun Microsystems que hoje está preste a pertencer a

Oracle (Oreskovic-Finkle, 2009). Ele utiliza SQL e permite armazenar, consultar, classificar e

recuperar dados de forma eficiente e garante o acesso a multiusuários, assegurando que

somente usuários autorizados acessem os dados (Welling-Thomson, 2005). Usado em mais de

10 milhões de máquinas com 50 mil downloads diários (Sun, 2008), alguns de seus usuários

são o Facebook, Google, Nokia, Paggo, NASA, globo.com, NBC etc. (MySQL Customers,

2009). Segundo a Sun, seus benefícios são ferramentas para fácil desenvolvimento e

implantação de infra-estruturas da Web complexas, dimensionável para suportar cerca de um

milhão de usuários ao mesmo tempo e implantação em várias camadas que reduz custos e

torna a implantação mais segura e simples (Maior, 2009). A Figura 8 mostra a representação

da arquitetura MySQL.

Figura 8 - Representação da arquitetura de um servidor Mysql (Palkovic, 2008).

Page 36: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

23

3.2.2 db4objects (db4o)

O db4objects (db4o) é um Banco de Dados Orientado a Objetos open source,

projetado para aplicações do tipo embarcada, cliente-servidor e desktop. Foi usado para a

implementação do protótipo no projeto. Possui modo nativo para Java e .Net. Usa uma única

biblioteca de desenvolvimento que se integra facilmente às aplicações e executa de forma

altamente confiável e escalável tarefas de persistência com somente algumas linhas de código,

não importando o quanto são complexas as estruturas. Não necessita utilizar-se de consultas

SQL para CRUD (Create, Read, Update e Delete), eliminando a troca de orientado a objetos

por performance (db4o, 2009).

Empresas como a Boing, Bosch, Hertz, BMW, Intel, Seagate entre outras (Customers

and Partners, 2009), já utilizam o db4o. Apresenta vantagens em relação ao Banco de Dados

Relacional: oferece rapidez de inserção, utiliza pouco recurso computacional, tem fácil

aprendizado, acesso direto ao Banco de Dados sem utilizar ORM (Mapeamento Objeto-

Relacional) e ambiente de administração zero, já que as rotinas de melhoria podem ser feitas

por um programador (Guerra, 2007). Na Espanha, a Indra Sistemas, uma empresa de

desenvolvimento de softwares, foi contratada para criar o centro de controle do sistema

espanhol de trens bala AVE. Neste projeto, o db4o foi utilizado como a base de dados de

tempo real para controlar o tráfego. A capacidade de processamento do sistema da Indra fica

em torno de 200 mil objetos por segundo (Rosenberg, 2009). A Figura 9 mostra que o objeto

é desmontado para o armazenamento em estruturas de tabelas no Banco de Dados Relacional.

Já no db4o, o objeto é diretamente armazenado como objeto.

Figura 9 - Armazenamento de objetos em um B.D. Relacional e em um B.D. db4o (Paterson et al., 2006).

De acordo com a empresa que produz o db4o, este banco roda até 44 vezes mais

rápido que os Bancos de Dados conhecidos como Hibernate com Mysql (db4o, 2009). O

benchmark de licença GPL, PolePosition, tem um método de teste chamado Barcelona que faz

escrita, leitura, consultas e remoção de objetos com uma estrutura de herança de 5 níveis

(PolePosition, 2009). Segundo o teste, o db4o se saiu melhor em relação a vários Bancos de

Page 37: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

24

Dados conforme detalhes da Tabela 7.

Tabela 7 - Detalhes do benchmark open source PolePosition gerado para comparar o db4o (Benchmarks, 2009).

Os recursos de consultas são fundamentais para qualquer Banco de Dados e o db4o

oferece vários métodos de recuperação de dados (Paterson et al., 2006):

QBE (Query by Example): No método QBE, você cria um modelo de objeto, que é uma

instância da classe que você deseja pesquisar. Se atribuir valores para um ou mais atributos no

seu modelo, então db4o procura por objetos no Banco de Dados com os atributos

correspondentes. É um método simples e de fácil aprendizagem, mas só é ideal para consultas

que não precisam de operadores lógicos.

SODA (Simple Object Data Access): Constrói um grafo de consulta navegando referências

em classes e as restrições que impõe. Utiliza strings para identificar os campos. Rápido, mas o

conceito pode ser difícil de acostumar.

NQ (Native Query): É uma consulta nativa expressa inteiramente na linguagem de

programação e com checagem de tipos durante a compilação. Oferece consultas com várias

vantagens importantes.

3.3 Exemplo MySQL X db4o

Seguem dois códigos simples de exemplo para inserção, atualização, consulta e

remoção, escrito linguagem Java. O primeiro utiliza o Banco de Dados Relacional MySQL e o

segundo o Banco de Dados Orientado a Objetos db4o.

mais rápido

mais lento

Page 38: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

25

3.3.1 Exemplo MySQL

Criando a tabela do Banco de Dados Relacional MySQL utilizando comandos SQL: CREATE TABLE PESSOAS(

COD INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,

NOME VARCHAR(40)

)ENGINE=INNODB;

Código em Java utilizando o MySQL: package exemplorelacional;

import java.sql.*;

/**

*

* @author David

*/

public class Main {

public static void main(String[] args) throws SQLException {

//Variável da conexão com o Banco de Dados

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/Banco", "root", "");

//Variável que permite inserir os comandos SQL

Statement stm = conn.createStatement();

//Variável para obter o resultado da consulta

ResultSet result;

//INSERÇÃO

stm.executeUpdate("INSERT INTO Pessoas VALUES ('" + 20 + "','David');");

//ATUALIZAÇÃO

stm.executeUpdate("UPDATE Pessoas SET NOME='Jaqueline' WHERE cod=" + 20);

//CONSULTA

result = stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + 20);

//Imprime o resultado da consulta

while (result.next()) {

System.out.println("Código: " + result.getString("cod"));

System.out.println("Nome: " + result.getString("nome"));

}

//REMOÇÃO

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + 20);

}

}

Saída do Programa: Código: 20

Nome: Jaqueline

Page 39: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

26

3.3.2 Exemplo db4o

Declaração da classe Pessoas em Java: package exemploobjetos;

/**

*

* @author David

*/

public class Pessoas {

private int cod;

private String nome;

public void setCod(int cod) {

this.cod = cod;

}

public void setNome(String nome) {

this.nome = nome;

}

public int getCod() {

return (cod);

}

public String getNome() {

return (nome);

}

}

Código em Java utilizando o Banco de Dados Orientado a Objetos db4o: package exemploobjetos;

import com.db4o.*;

/**

*

* @author David

*/

public class Main {

public static void main(String[] args) {

//Variável do arquivo do Banco de Dados

ObjectContainer db = Db4o.openFile("Banco.yap");

//Criando um objeto do tipo Pessoas

Pessoas p = new Pessoas();

//Objeto do tipo Pessoas para obter o objeto que se deseja do banco

Pessoas achou_p;

//Variável para obter o resultado do objeto recuperado

ObjectSet result;

Page 40: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

27

//INSERÇÃO

p.setCod(20);//Instanciando o objeto com o código 20

p.setNome("David");//Instanciando o objeto com o nome David

db.set(p);//Armazenando o objeto no banco

//ATUALIZAÇÃO

p.setCod(20);//Instanciando o objeto com o código 20

result = db.get(p);//Recupera o objeto p do Banco

achou_p = (Pessoas) result.next();//retorna o objeto se existir

achou_p.setCod(20);//Instanciando o objeto encontrado com código 20

achou_p.setNome("Jaqueline");//Alterando o objeto para o nome Jaqueline

db.set(achou_p);//Armazenando o objeto no Banco

//CONSULTA

p.setCod(20);

result = db.get(p);

achou_p = (Pessoas) result.next();

//Imprime o resultado da consulta

System.out.println("Código: " + achou_p.getCod());

System.out.println("Nome: " + achou_p.getNome());

//REMOÇÃO

p.setCod(20);

result = db.get(p);

achou_p = (Pessoas) result.next();

db.delete(achou_p);//Apaga o objeto

db.close();//Fechando o Banco

}

}

Saída do Programa: Código: 20

Nome: Jaqueline

3.4 O Protótipo

O protótipo consiste em dois programas Java com interface gráfica. Um utiliza o

Banco de Dados Relacional MySQL e o outro o Banco de Dados Orientado a Objetos db4o,

ambos fazendo as mesmas operações conforme os casos de usos descritos na Figura 4 do

capítulo 3 (p. 18). A Figura 10 mostra o protótipo em uso e suas respectivas telas.

Page 41: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

28

Figura 10 – Diagrama das telas do protótipo para Escola de Informática.

Para a implementação do protótipo relacional foi necessário instalar o MySQL,

configurar o servidor local e a conexão, em seguida criar o Banco de Dados com suas

respectivas tabelas para então dar início a implementação em Java. Houve certa dificuldade

no Modelo Relacional em relação a implementação do código Java, pois o compilador não

fazia verificação de sintaxe dos comandos SQL, que era considerados como string pelo

compilador, o que ocasionava em muitos erros e exceções que eram somente identificados na

hora das execução do protótipo. Umas das facilidades encontradas na implementação do

protótipo relacional é que ele possui recursos e ferramentas que facilitam a implementação. A

IDE Java NetBeans por exemplo, oferece opção de criar um programa básico,

automaticamente, apenas é necessário indicar as tabelas a serem utilizadas. Isto facilita, em

partes, a implementação, pois incluiu os botões new, delete, refresh, save com as suas

respectivas operações já implementadas e prontas para serem utilizadas. Além disso, inclui

uma tabela automaticamente no programa, que facilita para o usuário visualizar e manipular

os dados. Esse programa básico foi então adaptado para as necessidades do protótipo e foram

Page 42: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

29

feitos vários ajustes para se adaptar as necessidades dos casos de usos para uma Escola de

Informática.

A diferença observada no protótipo orientado a objetos, que utiliza o db4o, é que não

foi necessário instalar, configurar e criar o Banco de Dados para dar início a implementação

do protótipo. A única tarefa necessária é a adição da biblioteca do db4o no projeto. As

instruções foram implementadas, manualmente, na codificação. Neste processo foi necessário

declarar as classes, com as suas respectivas heranças, que iriam compor os objetos para a

modelagem de uma Escola de Informática. Para salvar um objeto foram necessárias algumas

linhas de código para armazenar, diretamente, a classe como objeto no banco. O mesmo vale

para recuperar, atualizar e apagar.

Page 43: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

30

4 TESTES

Para testar os Bancos de Dados foi necessário criar um protótipo de teste em Java,

especificamente, para avaliar o Banco de Dados Relacional (MySQL) e o Orientado a Objetos

(db4o), utilizando as mesmas classes e tabelas contidas no protótipo de aplicação para Escola

de Informática. Ele retorna o tempo em milisegundos (ms) durante a manipulação de 4500

registros no Banco de Dados (Apêndice A, p. 43-83 segue a codificação do programa de testes

do banco). Os testes foram repetidos três vezes e foi calculada a média e o desvio padrão

(resultados de todos os testes no Apêndice B, p. 84-89). O objetivo foi verificar o tempo gasto

para inserção, atualização, consulta e remoção dos dados e analisar os resultados obtidos.

Foram avaliados nos testes: comparação entre as tabelas sem relacionamentos e objetos sem

heranças, comparação entre tabelas com relacionamentos e objetos com heranças. O primeiro

teste foi para inserção conforme o gráfico da Figura 11. Em seguida, foram efetuados os de

atualização, consulta e remoção (Figura 12, Figura 13 e Figura 14 respectivamente).

4.1 Testes de Inserção

O teste realizado para inserção mostrou que o db4o é excelente nesta tarefa como se vê

no gráfico da Figura 11. A diferença observada entre a inserção db4o e o MySQL foram bem

grande, dando grande vantagem ao Banco de Dados Orientando a Objetos. Mesmo quando se

trata de objetos com herança, o tempo gasto foi praticamente o mesmo dos que não possui.

Quando não há herança foram cerca de 0,47 segundos para inserção de 4500 registros

enquanto as tabelas sem relacionamentos no MySQL gastaram 140,21 segundos. Os objetos

com herança consumiram 0,53 segundos enquanto que as inserções em tabelas com

relacionamentos gastaram 370,8 segundos. No Banco de Dados Relacional foi observado que

existe perda de desempenho quando é necessário relacionar tabelas para inserir dados

conforme o gráfico.

Page 44: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

31

Figura 11 – Gráfico do teste de inserção nos bancos de dados para 4500 registros.

4.2 Testes de Atualização

Na atualização, o Banco de Dados Orientado a Objetos não teve o bom desempenho

mostrado na inserção. O Banco de Dados Relacional MySQL foi superior ao db4o tanto na

atualização de tabelas sem relacionamentos, como também nas que possuiam relacionamentos

conforme a Figura 12. A atualização de tabelas sem relacionamentos gastaram 137,53

segundos e objetos sem herança demorou 407,51 segundos. Com relacionamentos foram

148,53 segundos equanto que os objetos com herança teve um tempo de 219,76 segundos.

Curiosamente, os objetos com herança foram mais rápidos do que os objetos sem herança,

possivelmente, porque a busca do objeto para atualização no banco é feita somente nos

objetos que são do mesmo tipo do filho que se deseja. Por exemplo, se existe a classe Pessoas

e a sua classe filha Alunos e deseja-se recuperar um aluno para atualização, o banco fará a

busca somente por objetos do tipo Alunos, o que poderia explicar o melhor desempenho em

relação aos objetos sem herança. Se a busca fosse por um objeto do tipo Pessoas, a busca para

atualização no banco se daria para todos do mesmo tipo, o que teoricamente, gastaria mais

tempo, porém isto é apenas uma reflexão e não uma afirmação, tendo como base o resultado

0

50000

100000

150000

200000

250000

300000

350000

400000

900 1800 2700 3600 4500

Tem

po

(m

s)

Número de registros

Inserção

Tabelas sem relacionamentos (Java + jdbc/MySQL)

Objetos sem herança (Java + db4o)

Tabelas com relacionamento (Java + jdbc/MySQL)

Objetos com herança (Java + db4o)

Page 45: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

32

do teste. O gráfico mostra que a busca por objetos com herança é mais rápido do que os sem

herança, e chegando até ficar mais próximo do tempo gasto no Banco de Dados Relacional.

Possivelmente, aumentando a quantidade de classes com heranças e tabelas relacionadas pode

ser que o db4o supere o MySQL, mas este procedimento não foi realizado.

Figura 12 – Gráfico do teste de atualização nos bancos de dados para 4500 registros.

4.3 Testes de Consulta

Nos testes de consulta, o MySQL foi bem superior ao db4o, mostrando que o Banco de

Dados Relacional é bem superior em consultas do que o Banco de Dados Orientado a Objetos,

conforme o gráfico da Figura 13. Em consultas com uma única tabela foram gastos 1,83

segundos enquanto consultas de objetos sem herança gastaram 406,33 segundos. As tabelas

relacionadas tiveram um tempo de 3,93 segundos enquanto consultas de objetos com herança

gastou 229,34 segundos. Novamente, os objetos com herança tiveram melhor desempenho do

que os sem herança. A diferença de consultas entre tabelas sem relacionamento e com

relacionamento foi mínima.

0

50000

100000

150000

200000

250000

300000

350000

400000

450000

900 1800 2700 3600 4500

Tem

po

(m

s)

Número de registros

Atualização

Tabelas sem relacionamentos (Java + jdbc/MySQL)

Objetos sem herança (Java + db4o)

Tabelas com relacionamento (Java + jdbc/MySQL)

Objetos com herança (Java + db4o)

Page 46: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

33

Figura 13 – Gráfico do teste de consulta nos bancos de dados para 4500 registros.

4.4 Testes de Remoção

Novamente, o MySQL teve o melhor tempo geral para remoção de 4500 registros,

como demonstra o gráfico da Figura 14. Foram cerca de 140,79 segundos contra 189,45

segundos gastos com objetos sem herança. Tabelas com relacionamentos levaram um tempo

de 141,63 segundos contra 233,59 segundos dos objetos com herança. Porém, o teste revelou

que o desempenho do db4o ganha em performance em relação ao MySQL na medida que vão

se removendo mais registros. O tempo de remoção do Banco Relacional demonstrou-se

relativamente constante enquanto o Orientado a Objetos sofria queda de tempo gasto quanto

mais se removia. Possivelmente se o teste prosseguisse com mais registros, chegaria um

momento em que o tempo geral de remoção do db4o seria superior ao MySQL, revelando que

o db4o seria a melhor solução caso fosse removida uma grande quantidade de registros,

porém seria necessário realizar um novo teste com mais objetos para comprovar isso.

0

50000

100000

150000

200000

250000

300000

350000

400000

450000

900 1800 2700 3600 4500

Tem

po

(m

s)

Número de registros

Consulta

Tabelas sem relacionamentos (Java + jdbc/MySQL)

Objetos sem herança (Java + db4o)

Tabelas com relacionamento (Java + jdbc/MySQL)

Objetos com herança (Java + db4o)

Page 47: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

34

Figura 14 – Gráfico do teste de remoção nos bancos de dados para 4500 registros.

4.5 Testes com Procedures SQL

O objetivo deste teste foi avaliar o quanto a linguagem de programação interfere no

desempenho do Banco de Dados Relacional. Para isso foram criadas procedures SQL

diretamente no Banco de Dados MySQL. Elas efetuam os mesmos testes anteriores, mas neste

caso, não foi usado nenhuma linha de código Java, somente comandos SQL. As Procedures

foram então comparadas com as manipulações de dados no Banco de Dados Relacional

utilizando a linguagem Java conforme os gráficos da Figura 15, Figura 16, Figura 17 e

Figura 18.

0

50000

100000

150000

200000

250000

900 1800 2700 3600 4500

Tem

po

(m

s)

Número de registros

Remoção

Tabelas sem relacionamentos (Java + jdbc/MySQL)

Objetos sem herança (Java + db4o)

Tabelas com relacionamento (Java + jdbc/MySQL)

Objetos com herança (Java + db4o)

Page 48: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

35

0

50000

100000

150000

200000

250000

300000

350000

400000

450000

4500

Tem

po

(m

s)

Número de registros:

Inserção

Tabelas sem relacionamentos (Java +

jdbc/MySQL)

Procedures de tabelas sem relacionamento

(MySQL)

Tabelas com relacionamento (Java +

jdbc/MySQL)

Procedures de tabelas com relacionamento

(MySQL)

I - Desvio Padrão

0

20000

40000

60000

80000

100000

120000

140000

160000

4500

Tem

po

(m

s)

Número de registros:

Atualização

Tabelas sem relacionamentos (Java +

jdbc/MySQL)

Procedures de tabelas sem relacionamento

(MySQL)

Tabelas com relacionamento (Java +

jdbc/MySQL)

Procedures de tabelas com relacionamento

(MySQL)

I - Desvio Padrão

0

1000

2000

3000

4000

5000

6000

4500

Tem

po

(m

s)

Número de registros:

Consulta

Tabelas sem relacionamentos (Java +

jdbc/MySQL)

Procedures de tabelas sem relacionamento

(MySQL)

Tabelas com relacionamento (Java +

jdbc/MySQL)

Procedures de tabelas com relacionamento

(MySQL)

I - Desvio Padrão

0

20000

40000

60000

80000

100000

120000

140000

160000

4500

Tem

po

(m

s)

Número de registros:

Remoção

Tabelas sem relacionamentos (Java +

jdbc/MySQL)

Procedures de tabelas sem relacionamento

(MySQL)

Tabelas com relacionamento (Java +

jdbc/MySQL)

Procedures de tabelas com relacionamento

(MySQL)

I - Desvio Padrão

Figura 18 – Gráfico do teste de remoção entre procedures SQL e Banco de Dados Relacional usando Java.

Figura 17 – Gráfico do teste de consulta entre procedures SQL e Banco de Dados Relacional usando Java.

Figura 15 – Gráfico do teste de inserção entre procedures

SQL e Banco de Dados Relacional usando Java.

Figura 16 – Gráfico do teste de atualização entre

procedures SQL e Banco de Dados Relacional usando Java.

Page 49: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

36

Nos testes apresentados nos gráficos da Figura 15, Figura 16, Figura 17 e Figura 18,

houve diferença de tempo entre procedures SQL e as manipulações com os comandos SQL

dentro da linguagem Java. Considerando o desvio padrão, o ganho mais significativo para as

procedures foi para as consultas da Figura 17. Neste caso a linguagem de programação

interferiu no desempenho das consultas se comparados aos comandos SQL executados

diretamente no Banco de Dados. As procedures SQL foram em média 231,53% mais rápida

do que as consultas utilizando os comandos SQL dentro da linguagem Java para consultas

entre tabelas sem relacionamentos. Já com relacionamento, o ganho das procedures foi de

261,88% aproximadamente.

4.6 Análise dos Resultados

Os testes mostraram que o Banco de Dados Relacional foi melhor na maior parte dos

casos. O MySQL só perdeu na inserção de dados e teve uma boa economia de tempo para

consultas se comparado com o db4o. O Banco de Dados Orientado a Objetos tem

desempenho melhor para inserção. Para um grande número de remoção de registros o db4o

tende a ser mais rápido que o MySQL. A Tabela 8 mostra uma síntese de todos os resultados

nos testes de manipulações de 4500 registros. Outro fato observado nos testes é que a

linguagem de programação interfere negativamente no desempenho das consultas no Banco

de Dados Relacional conforme os resultados da Tabela 8, o que explica o melhor desempenho

das procedures SQL.

Tabela 8 – Resumo dos resultados nos testes efetuados para 4500 registros (tempo em segundos).

Síntese dos resultados para manipulações de 4500 registros (em segundos)

Inserção Atualização Consulta Remoção

Tabelas sem relacionamentos (MySQL) + Java 140,21 137,53 1,83 140,79

Procedures SQL sem relacionamentos (MySQL) 135,78 135,82 0,79 135,63

Objetos sem herança (db4o) + Java 0,47 407,51 406,33 189,95

Inserção Atualização Consulta Remoção

Tabelas com relacionamentos (MySQL) + Java 370,80 148,53 3,93 141,63

Procedures SQL com relacionamentos (MySQL) 376,06 139,72 1,50 136,22

Objetos com herança (db4o) + Java 0,53 219,76 229,34 233,59

mais rápido mais lento

Page 50: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

37

A provável causa que explica porque o Banco de Dados Relacional foi melhor nos

testes é que os testes foram implementados com dados simples, como strings e números, que

são dados que o Banco de Dados Relacional está apto a trabalhar e que foram previstos desde

o inicío em que foi projetado. Nos testes não houve objetos complexos, como, por exemplo,

vídeos e imagens no qual o Banco de Dados Orientado a Objetos parece ser o mais adequado

a trabalhar e, sim, dados comuns que a maior parte dos sistemas comerciais ainda utiliza. Se

fossem objetos complexos e dezenas de níveis de herança talvez os resultados fossem

diferentes. Analisando os resultados, conclui-se então que os Bancos de Dados Relacionais

são a melhor escolha para a manipulação de dados comuns.

Page 51: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

38

5 CONCLUSÃO

Dificilmente existirá uma forma de armazenamento de dados definitiva, mas o dever

de buscar as melhores soluções para cada caso em uma aplicação é sempre válida. Existe

muita controvérsia entre o uso dos Modelos de Dados Relacionais e de Objetos, mas ambos

possuem suas virtudes e defeitos. A maior razão de se usar o Modelo Relacional é por ser o

mais utilizado em aplicações comerciais e possuir um grande legado, pois antigas informações

de empresas e aplicações ainda são dependentes desse modelo de dados. O grande benefício

do Modelo de Orientado a Objetos é de utilizar os conceitos de programação orientada a

objetos, que faz que com que ele não perca as sutilezas da linguagem de programação, pois

não necessita de um “tradutor” entre linguagem de programação e a de consulta ao se

trabalhar com dados persistentes, armazenando objetos complexos diretamente no banco.

Os testes realizados com o Banco de Dados Orientado a Objetos (db4o) mostraram

que ele insere objetos rapidamente. Em contra partida, ele se saiu pior em todos os outros

testes com dados simples, e, para acrescentar, o Banco de Dados Orientados a Objetos não

conta com algumas facilidades, ferramentas e legados encontrada no mundo relacional. Este

estudo respondeu a questão que deu origem ao projeto, e a resposta é que o Banco de Dados

Orientados a Objetos ainda não é tão revolucionários como foi o paradigma orientado a

objetos para as linguagens de programação.

O projeto revelou através de testes, que o tradicional Banco de Dados Relacional ainda

é a melhor escolha para manipulação de dados comuns se comparado com o Banco de Dados

Orientado a Objetos. Além disso, tem um grande poder de consulta segundo os testes

realizados, o que é muito importante para um Banco de Dados, pois os usuários acabam

consultando mais os dados do que inserindo, atualizando ou removendo. Outros aspectos ao

seu favor são a maturidade, popularidade, ferramentas e facilidades herdadas através dos anos,

as quais se mostra estáveis até os dias atuais.

Page 52: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

39

5.1 Contribuições

Resumidamente, as principais contribuições gerais deste estudo são a implementação

de aplicações integradas com Banco de Dados Relacionais e Orientado a Objetos, servindo

como direcionamento para decisão de qual modelo de Banco de Dados deve ser implantado

para determinados casos.

5.2 Extensões

Este trabalho pode ser continuado da seguinte forma:

Análise do Modelo Objeto-Relacional;

Manipulação Persistente de Objetos Complexos;

Comparação entre Banco de Dados Orientado a Objetos e Banco de Dados

Objeto-Relacional.

Page 53: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

40

Referências Bibliográficas

Bem-Vindo ao NetBeans e ao site www.netbeans.org. [ca. 2009]. Disponível via URL em:

http://netbeans.org/index_pt_PT.html. Acesso em: 21 nov. 2009.

Benchmarks: Performance advantages to store complex object structures. [ca. 2009]

Disponível via URL em: http://www.db4o.com/about/productinformation/benchmarks/.

Acesso em: 21 nov. 2009.

Customers and Partners. [ca. 2009]. Disponível via URL em:

http://www.db4o.com/about/customers/. Acesso em: 20 nov. 2009.

DATE, C. J. Introdução a Sistemas de Banco de Dados. 7. Ed. Rio de Janeiro: Editora

Campus, 2000.

db4o: Banco de objetos de código aberto. [ca. 2009]. Disponível via URL em:

http://www.db4o.com/portugues/db4o%20Product%20Information%20V5.0(Portuguese).pdf.

Acesso em: 17 jun. 2009.

GUERRA, Glaucio. DB4Objects na terra de gigantes do BD relacional com Java: Parte I.

Out. 2007. Disponível via URL em:

http://www.devmedia.com.br/articles/viewcomp.asp?comp=4121. Acesso em: 14 jun. 2009.

Informações em português. [ca. 2009]. Disponível via URL em:

http://www.db4o.com/portugues/. Acesso em: 17 jun. 2009.

Maior rapidez com o MySQL. [ca. 2009]. Disponível via URL em:

http://br.sun.com/practice/systems/mysql/index.jsp. Acesso em: 17 jun. 2009.

MySQL Customers. Nov. [ca. 2009]. Disponível via URL em:

http://www.mysql.com/customers/. Acesso em: 20 nov. 2009.

ORESKOVIC, Alexei; FINKLE, Jim. Sun está perdendo US$100 milhões por mês, afirma

Oracle. Nov. 2009. Disponível via URL em:

http://www.estadao.com.br/noticias/economia,sun-esta-perdendo-us100-milhoes-por-mes-

afirma-oracle,439061,0.htm. Acesso em: 21 nov. 2009.

PALKOVIC, Rick. Sun e MySQL: O que ele acrescenta aos desenvolvedores. Fev. 2008.

Disponível via URL em: http://br.sun.com/emrkt/innercircle/newsletter/0408/feature-

tech.html. Acesso em: 17 jun. 2009.

PATERSON, Jim; EDLICH, Stefan; HÖRNING, Henrik; HÖRNING, Reidar. The Definitive

Guide to db4o. New York: Apress, 2006.

PolePosition. [ca. 2009]. Disponível via URL em: http://www.polepos.org/. Acesso em: 20

nov. 2009.

Page 54: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

41

ROSENBERG, Dave. INDRA: Sistema de Missão Crítica para controle de trens de alta

velocidade. [ca. 2009]. Disponível via URL em:

http://www.db4o.com/portugues/db4o%20Success%20Story%20%20INDRA%20Sistemas(P

ortuguese).pdf. Acesso em: 17 jun. 2009.

SANTOS, Rafael. Introdução à Programação Orientada a Objetos Usando Java. São

Paulo: Elsevier; Rio de Janeiro: Editora Campus, 2003.

SILBERSCHATZ; Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de Banco de

Dados. 3. Ed. São Paulo: Markron Books, 1999.

Sun Microsystems oficializa a compra da MySQL no Brasil. Set. 2008. Disponível via

URL em: http://br.sun.com/sunnews/press/2008/20080929b.jsp. Acesso em: 20 nov. 2009.

WELLING, Luke; THOMSON, Laura. PHP e MySQL: Desenvolvimento WEB. 3. Ed. Rio

de Janeiro: Editora Campus, 2005.

Page 55: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

42

Bibliografia Consultada

ESKELSEN, Cassio Rogerio. db4o: Banco de Dados Orientado a Objetos. Dez. 2005.

Disponível via URL em: http://www.bizness.com.br/weblog/post/2008/08/05/db4o-Banco-de-

Dados-Orientado-a-Objetos.aspx. Acesso em: 21 nov. 2009.

GARCIA-MOLINA, Hector; ULLMAN, Jeffrey D.; WIDOM, Jennifer. Implementação de

Sistemas de Banco de Dados. Rio de Janeiro: Editora Campus, 2001.

Page 56: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

43

Apêndice A – Protótipo para Testes nos Bancos de Dados

Classe Pessoas: /*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package testeescolainformatica;

/**

*

* @author David

*/

public class Pessoas {

private int cod;

private String nome;

private String rg;

private String cpf;

private String sexo;

private String data_nasc;

private String tipo;

private String endereco;

private String bairro;

private String cidade;

private String uf;

private String cep;

private String telefone;

private String celular;

private String email;

public void setCod(int cod) {

this.cod = cod;

}

public void setNome(String nome) {

this.nome = nome;

}

public void setRg(String rg) {

this.rg = rg;

}

public void setCpf(String cpf) {

this.cpf = cpf;

}

public void setSexo(String sexo) {

this.sexo = sexo;

}

public void setDataNasc(String data_nasc) {

this.data_nasc = data_nasc;

}

Page 57: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

44

public void setTipo(String tipo) {

this.tipo = tipo;

}

public void setEndereco(String endereco) {

this.endereco = endereco;

}

public void setBairro(String bairro) {

this.bairro = bairro;

}

public void setCidade(String cidade) {

this.cidade = cidade;

}

public void setUf(String uf) {

this.uf = uf;

}

public void setCep(String cep) {

this.cep = cep;

}

public void setTelefone(String telefone) {

this.telefone = telefone;

}

public void setCelular(String celular) {

this.celular = celular;

}

public void setEmail(String email) {

this.email = email;

}

public int getCod() {

return (cod);

}

public String getNome() {

return (nome);

}

public String getRg() {

return (rg);

}

public String getCpf() {

return (cpf);

}

public String getSexo() {

return (sexo);

}

public String getDataNasc() {

return (data_nasc);

}

public String getTipo() {

Page 58: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

45

return (tipo);

}

public String getEndereco() {

return (endereco);

}

public String getBairro() {

return (bairro);

}

public String getCidade() {

return (cidade);

}

public String getUf() {

return (uf);

}

public String getCep() {

return (cep);

}

public String getTelefone() {

return (telefone);

}

public String getCelular() {

return (celular);

}

public String getEmail() {

return (email);

}

}

Classe Alunos: /*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package testeescolainformatica;

/**

*

* @author David

*/

public class Alunos extends Pessoas {

private int cod_pessoa;

private String responsavel;

private String situacao;

private float saldo;

private String data_ultimo_pagamento;

public void setCodPessoa(int cod_pessoa) {

this.cod_pessoa = cod_pessoa;

}

public void setResponsavel(String responsavel) {

Page 59: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

46

this.responsavel = responsavel;

}

public void setSituacao(String situacao) {

this.situacao = situacao;

}

public void setSaldo(float saldo) {

this.saldo = saldo;

}

public void setDataUltimoPagamento(String data_ultimo_pagamento) {

this.data_ultimo_pagamento = data_ultimo_pagamento;

}

public int getCodPessoa() {

return (cod_pessoa);

}

public String getResponsavel() {

return (responsavel);

}

public String getSituacao() {

return (situacao);

}

public float getSaldo() {

return (saldo);

}

public String getDataUltimoPagamento() {

return (data_ultimo_pagamento);

}

}

Classe Funcionarios: /*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package testeescolainformatica;

/**

*

* @author David

*/

public class Funcionarios extends Pessoas {

private int cod_pessoa;

private String ctps;

private String data_admissao;

private float salario_hora;

private int quant_horas_trabalhadas;

public void setCodPessoa(int cod_pessoa) {

this.cod_pessoa = cod_pessoa;

}

public void setCtps(String ctps) {

Page 60: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

47

this.ctps = ctps;

}

public void setDataAdmissao(String data_admissao) {

this.data_admissao = data_admissao;

}

public void setSalarioHora(float salario_hora) {

this.salario_hora = salario_hora;

}

public void setQuantHorasTrabalhadas(int quant_horas_trabalhadas) {

this.quant_horas_trabalhadas = quant_horas_trabalhadas;

}

public int getCodPessoa() {

return (cod_pessoa);

}

public String getCtps() {

return (ctps);

}

public String getDataAdmissao() {

return (data_admissao);

}

public float getSalarioHora() {

return (salario_hora);

}

public int getQuantHorasTrabalhadas() {

return (quant_horas_trabalhadas);

}

}

Classe PessoalAdministrativo: /*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package testeescolainformatica;

/**

*

* @author David

*/

public class PessoalAdministrativo extends Funcionarios {

private int cod_pessoa;

private String cargo;

public void setCodPessoa(int cod_pessoa) {

this.cod_pessoa = cod_pessoa;

}

public void setCargo(String cargo) {

this.cargo = cargo;

}

Page 61: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

48

public int getCodPessoa() {

return (cod_pessoa);

}

public String getCargo() {

return (cargo);

}

}

Classe Professores:

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package testeescolainformatica;

/**

*

* @author David

*/

public class PessoalAdministrativo extends Funcionarios {

private int cod_pessoa;

private String cargo;

public void setCodPessoa(int cod_pessoa) {

this.cod_pessoa = cod_pessoa;

}

public void setCargo(String cargo) {

this.cargo = cargo;

}

public int getCodPessoa() {

return (cod_pessoa);

}

public String getCargo() {

return (cargo);

}

}

Classe TesteRelacional:

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package testeescolainformatica;

import java.sql.*;

/**

*

* @author David

*/

public class TesteRelacional {

Page 62: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

49

int TESTA_A = 900;

int TESTA_B = 1800;

int TESTA_C = 2700;

int TESTA_D = 3600;

int TESTA_E = 4500;

static long iniciar() {

return System.currentTimeMillis();

}

static long obterTempo(long inicio) {

return System.currentTimeMillis() - inicio;

}

TesteRelacional() throws SQLException {

System.out.println("\n");

System.out.println("Teste de inserção em uma tabela");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

Connection conn = null;

long inicio;

long insert_a, insert_b, insert_c, insert_d, insert_e;

long insert_plus_a, insert_plus_b, insert_plus_c, insert_plus_d,

insert_plus_e;

long update_a, update_b, update_c, update_d, update_e;

long update_plus_a, update_plus_b, update_plus_c, update_plus_d,

update_plus_e;

long query_a, query_b, query_c, query_d, query_e;

long query_plus_a, query_plus_b, query_plus_c, query_plus_d,

query_plus_e;

long delete_a, delete_b, delete_c, delete_d, delete_e;

long delete_plus_a, delete_plus_b, delete_plus_c, delete_plus_d,

delete_plus_e;

try {

Class.forName("com.mysql.jdbc.Driver").newInstance();

conn =

DriverManager.getConnection("jdbc:mysql://localhost:3306/BancoEscolaInforma

tica", "root", "");

} catch (InstantiationException ex) {

ex.printStackTrace();

} catch (IllegalAccessException ex) {

ex.printStackTrace();

} catch (ClassNotFoundException ex) {

ex.printStackTrace();

}

Statement stm = conn.createStatement();

stm.executeUpdate("ALTER TABLE Pessoas AUTO_INCREMENT = 1");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

stm.executeUpdate("insert into Pessoas values ('" + i +

"','David Rodrigues Machado','43.136.057-8','302.061.738-

42','Masculino','1982-09-03','Aluno','Rua João Franco, 265','Jd. São

Cristovão','Bragança Paulista','SP','12900-000','(11)4032-7493','(11)9891-

9560','[email protected]');");

Page 63: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

50

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Roberto Garcia','22.132.221-2','256.216.235-37','Masculino','1975-12-

25','Funcionario','Av. José Gomes da Rocha Leal,

1024','Centro','Atibaia','SP','11700-050','(11)4089-7895','(11)8977-

8799','[email protected]');");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Camila Aparecida Alves','45.666.332-2','401.567.234-

22','Feminino','1990-05-20','Professor','Travessa Itália, 34','Parque

Brasil','Extrema','MG','14543-150','(16)5211-3729','(16)7890-

8927','[email protected]');");

}

insert_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

stm.executeUpdate("insert into Pessoas values ('" + i +

"','David Rodrigues Machado','43.136.057-8','302.061.738-

42','Masculino','1982-09-03','Aluno','Rua João Franco, 265','Jd. São

Cristovão','Bragança Paulista','SP','12900-000','(11)4032-7493','(11)9891-

9560','[email protected]');");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Jaqueline Rodrigues Machado','43.136.057-8','302.061.738-

42','Masculino','1982-09-03','Funcionario','Rua João Franco, 265','Jd. São

Cristovão','Bragança Paulista','SP','12900-000','(11)4032-7493','(11)9891-

9560','[email protected]');");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','José Maria Rodrigues Machado','43.136.057-8','302.061.738-

42','Feminino','1982-09-03','Professor','Rua João Franco, 265','Jd. São

Cristovão','Bragança Paulista','SP','12900-000','(11)4032-7493','(11)9891-

9560','[email protected]');");

}

insert_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

stm.executeUpdate("insert into Pessoas values ('" + i +

"','David Rodrigues Machado','43.136.057-8','302.061.738-

42','Masculino','1982-09-03','Aluno','Rua João Franco, 265','Jd. São

Cristovão','Bragança Paulista','SP','12900-000','(11)4032-7493','(11)9891-

9560','[email protected]');");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Roberto Garcia','22.132.221-2','256.216.235-37','Masculino','1975-12-

25','Funcionario','Av. José Gomes da Rocha Leal,

1024','Centro','Atibaia','SP','11700-050','(11)4089-7895','(11)8977-

8799','[email protected]');");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Camila Aparecida Alves','45.666.332-2','401.567.234-

22','Feminino','1990-05-20','Professor','Travessa Itália, 34','Parque

Brasil','Extrema','MG','14543-150','(16)5211-3729','(16)7890-

8927','[email protected]');");

}

insert_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

stm.executeUpdate("insert into Pessoas values ('" + i +

"','David Rodrigues Machado','43.136.057-8','302.061.738-

42','Masculino','1982-09-03','Aluno','Rua João Franco, 265','Jd. São

Cristovão','Bragança Paulista','SP','12900-000','(11)4032-7493','(11)9891-

9560','[email protected]');");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Roberto Garcia','22.132.221-2','256.216.235-37','Masculino','1975-12-

25','Funcionario','Av. José Gomes da Rocha Leal,

1024','Centro','Atibaia','SP','11700-050','(11)4089-7895','(11)8977-

8799','[email protected]');");

Page 64: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

51

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Camila Aparecida Alves','45.666.332-2','401.567.234-

22','Feminino','1990-05-20','Professor','Travessa Itália, 34','Parque

Brasil','Extrema','MG','14543-150','(16)5211-3729','(16)7890-

8927','[email protected]');");

}

insert_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

stm.executeUpdate("insert into Pessoas values ('" + i +

"','David Rodrigues Machado','43.136.057-8','302.061.738-

42','Masculino','1982-09-03','Aluno','Rua João Franco, 265','Jd. São

Cristovão','Bragança Paulista','SP','12900-000','(11)4032-7493','(11)9891-

9560','[email protected]');");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Roberto Garcia','22.132.221-2','256.216.235-37','Masculino','1975-12-

25','Funcionario','Av. José Gomes da Rocha Leal,

1024','Centro','Atibaia','SP','11700-050','(11)4089-7895','(11)8977-

8799','[email protected]');");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Camila Aparecida Alves','45.666.332-2','401.567.234-

22','Feminino','1990-05-20','Professor','Travessa Itália, 34','Parque

Brasil','Extrema','MG','14543-150','(16)5211-3729','(16)7890-

8927','[email protected]');");

}

insert_e = obterTempo(inicio);

System.out.println("\n");

System.out.println("Teste de atualização em uma tabela");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

stm.executeUpdate("UPDATE Pessoas SET NOME='Jennifer Lynn

Connelly', RG='22.123.485-2', CPF='131.245.213-

53',SEXO='Feminino',DATA_NASC='1970-12-12',TIPO='Aluno',ENDERECO='Av.

Labirinto das Flores, 56',BAIRRO='Vila

Carreira',CIDADE='Extrema',UF='MG',CEP='14696-600',TELEFONE='(14)5055-

6351',CELULAR='(16)8654-8986',EMAIL='[email protected]' WHERE

cod=" + i);

stm.executeUpdate("UPDATE Pessoas SET NOME='Sabrina da Silva',

RG='44.987.654-8', CPF='310.534.400-41',SEXO='Feminino',DATA_NASC='1992-03-

01',TIPO='Funcionario',ENDERECO='Rua 24, 34',BAIRRO='Recanto

Londrina',CIDADE='Itatiba',UF='SP',CEP='13426-230',TELEFONE='(11)4066-

1334',CELULAR='(11)1375-2985',EMAIL='[email protected]' WHERE

cod=" + ++i);

stm.executeUpdate("UPDATE Pessoas SET NOME='Rubens Ewald

Filho', RG='20.311.215-2', CPF='179.767.293-

23',SEXO='Masculino',DATA_NASC='1955-11-30',TIPO='Professor',ENDERECO='Rua

Cinema Paradiso, 677',BAIRRO='Jd. das Palmeiras',CIDADE='Bragança

Paulista',UF='SP',CEP='12906-040',TELEFONE='(11)4032-

3700',CELULAR='(11)7309-1613',EMAIL='[email protected]' WHERE cod=" +

++i);

}

update_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

stm.executeUpdate("UPDATE Pessoas SET NOME='Jennifer Lynn

Connelly', RG='22.123.485-2', CPF='131.245.213-

53',SEXO='Feminino',DATA_NASC='1970-12-12',TIPO='Aluno',ENDERECO='Av.

Labirinto das Flores, 56',BAIRRO='Vila

Page 65: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

52

Carreira',CIDADE='Extrema',UF='MG',CEP='14696-600',TELEFONE='(14)5055-

6351',CELULAR='(16)8654-8986',EMAIL='[email protected]' WHERE

cod=" + i);

stm.executeUpdate("UPDATE Pessoas SET NOME='Sabrina da Silva',

RG='44.987.654-8', CPF='310.534.400-41',SEXO='Feminino',DATA_NASC='1992-03-

01',TIPO='Funcionario',ENDERECO='Rua 24, 34',BAIRRO='Recanto

Londrina',CIDADE='Itatiba',UF='SP',CEP='13426-230',TELEFONE='(11)4066-

1334',CELULAR='(11)1375-2985',EMAIL='[email protected]' WHERE

cod=" + ++i);

stm.executeUpdate("UPDATE Pessoas SET NOME='Rubens Ewald

Filho', RG='20.311.215-2', CPF='179.767.293-

23',SEXO='Masculino',DATA_NASC='1955-11-30',TIPO='Professor',ENDERECO='Rua

Cinema Paradiso, 677',BAIRRO='Jd. das Palmeiras',CIDADE='Bragança

Paulista',UF='SP',CEP='12906-040',TELEFONE='(11)4032-

3700',CELULAR='(11)7309-1613',EMAIL='[email protected]' WHERE cod=" +

++i);

}

update_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

stm.executeUpdate("UPDATE Pessoas SET NOME='Jennifer Lynn

Connelly', RG='22.123.485-2', CPF='131.245.213-

53',SEXO='Feminino',DATA_NASC='1970-12-12',TIPO='Aluno',ENDERECO='Av.

Labirinto das Flores, 56',BAIRRO='Vila

Carreira',CIDADE='Extrema',UF='MG',CEP='14696-600',TELEFONE='(14)5055-

6351',CELULAR='(16)8654-8986',EMAIL='[email protected]' WHERE

cod=" + i);

stm.executeUpdate("UPDATE Pessoas SET NOME='Sabrina da Silva',

RG='44.987.654-8', CPF='310.534.400-41',SEXO='Feminino',DATA_NASC='1992-03-

01',TIPO='Funcionario',ENDERECO='Rua 24, 34',BAIRRO='Recanto

Londrina',CIDADE='Itatiba',UF='SP',CEP='13426-230',TELEFONE='(11)4066-

1334',CELULAR='(11)1375-2985',EMAIL='[email protected]' WHERE

cod=" + ++i);

stm.executeUpdate("UPDATE Pessoas SET NOME='Rubens Ewald

Filho', RG='20.311.215-2', CPF='179.767.293-

23',SEXO='Masculino',DATA_NASC='1955-11-30',TIPO='Professor',ENDERECO='Rua

Cinema Paradiso, 677',BAIRRO='Jd. das Palmeiras',CIDADE='Bragança

Paulista',UF='SP',CEP='12906-040',TELEFONE='(11)4032-

3700',CELULAR='(11)7309-1613',EMAIL='[email protected]' WHERE cod=" +

++i);

}

update_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

stm.executeUpdate("UPDATE Pessoas SET NOME='Jennifer Lynn

Connelly', RG='22.123.485-2', CPF='131.245.213-

53',SEXO='Feminino',DATA_NASC='1970-12-12',TIPO='Aluno',ENDERECO='Av.

Labirinto das Flores, 56',BAIRRO='Vila

Carreira',CIDADE='Extrema',UF='MG',CEP='14696-600',TELEFONE='(14)5055-

6351',CELULAR='(16)8654-8986',EMAIL='[email protected]' WHERE

cod=" + i);

stm.executeUpdate("UPDATE Pessoas SET NOME='Sabrina da Silva',

RG='44.987.654-8', CPF='310.534.400-41',SEXO='Feminino',DATA_NASC='1992-03-

01',TIPO='Funcionario',ENDERECO='Rua 24, 34',BAIRRO='Recanto

Londrina',CIDADE='Itatiba',UF='SP',CEP='13426-230',TELEFONE='(11)4066-

1334',CELULAR='(11)1375-2985',EMAIL='[email protected]' WHERE

cod=" + ++i);

stm.executeUpdate("UPDATE Pessoas SET NOME='Rubens Ewald

Filho', RG='20.311.215-2', CPF='179.767.293-

23',SEXO='Masculino',DATA_NASC='1955-11-30',TIPO='Professor',ENDERECO='Rua

Cinema Paradiso, 677',BAIRRO='Jd. das Palmeiras',CIDADE='Bragança

Paulista',UF='SP',CEP='12906-040',TELEFONE='(11)4032-

3700',CELULAR='(11)7309-1613',EMAIL='[email protected]' WHERE cod=" +

Page 66: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

53

++i);

}

update_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

stm.executeUpdate("UPDATE Pessoas SET NOME='Jennifer Lynn

Connelly', RG='22.123.485-2', CPF='131.245.213-

53',SEXO='Feminino',DATA_NASC='1970-12-12',TIPO='Aluno',ENDERECO='Av.

Labirinto das Flores, 56',BAIRRO='Vila

Carreira',CIDADE='Extrema',UF='MG',CEP='14696-600',TELEFONE='(14)5055-

6351',CELULAR='(16)8654-8986',EMAIL='[email protected]' WHERE

cod=" + i);

stm.executeUpdate("UPDATE Pessoas SET NOME='Sabrina da Silva',

RG='44.987.654-8', CPF='310.534.400-41',SEXO='Feminino',DATA_NASC='1992-03-

01',TIPO='Funcionario',ENDERECO='Rua 24, 34',BAIRRO='Recanto

Londrina',CIDADE='Itatiba',UF='SP',CEP='13426-230',TELEFONE='(11)4066-

1334',CELULAR='(11)1375-2985',EMAIL='[email protected]' WHERE

cod=" + ++i);

stm.executeUpdate("UPDATE Pessoas SET NOME='Rubens Ewald

Filho', RG='20.311.215-2', CPF='179.767.293-

23',SEXO='Masculino',DATA_NASC='1955-11-30',TIPO='Professor',ENDERECO='Rua

Cinema Paradiso, 677',BAIRRO='Jd. das Palmeiras',CIDADE='Bragança

Paulista',UF='SP',CEP='12906-040',TELEFONE='(11)4032-

3700',CELULAR='(11)7309-1613',EMAIL='[email protected]' WHERE cod=" +

++i);

}

update_e = obterTempo(inicio);

System.out.println("\n");

System.out.println("Teste de consulta em uma tabela");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + i);

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + ++i);

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + ++i);

}

query_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + i);

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + ++i);

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + ++i);

}

query_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + i);

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + ++i);

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + ++i);

}

query_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + i);

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + ++i);

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + ++i);

}

Page 67: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

54

query_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + i);

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + ++i);

stm.executeQuery("SELECT * FROM Pessoas WHERE cod=" + ++i);

}

query_e = obterTempo(inicio);

System.out.println("\n");

System.out.println("Teste de remoção em uma tabela");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + i);

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + ++i);

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + ++i);

}

delete_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + i);

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + ++i);

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + ++i);

}

delete_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + i);

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + ++i);

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + ++i);

}

delete_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + i);

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + ++i);

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + ++i);

}

delete_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + i);

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + ++i);

stm.executeUpdate("DELETE FROM Pessoas Where Cod=" + ++i);

}

delete_e = obterTempo(inicio);

System.out.println("-----------------------------------------------

-----");

System.out.println("-------- TESTE DO BANCO DE DADOS RELACIONAL ---

-----");

System.out.println("--------------- com uma unica tabela ----------

-----");

System.out.println("-----------------------------------------------

-----");

System.out.println("inserção de " + TESTA_A + " objetos: " +

insert_a + " ms");

System.out.println("inserção de " + TESTA_B + " objetos: " +

insert_b + " ms");

System.out.println("inserção de " + TESTA_C + " objetos: " +

Page 68: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

55

insert_c + " ms");

System.out.println("inserção de " + TESTA_D + " objetos: " +

insert_d + " ms");

System.out.println("inserção de " + TESTA_E + " objetos: " +

insert_e + " ms");

System.out.println("atualização de " + TESTA_A + " objetos: " +

update_a + " ms");

System.out.println("atualização de " + TESTA_B + " objetos: " +

update_b + " ms");

System.out.println("atualização de " + TESTA_C + " objetos: " +

update_c + " ms");

System.out.println("atualização de " + TESTA_D + " objetos: " +

update_d + " ms");

System.out.println("atualização de " + TESTA_E + " objetos: " +

update_e + " ms");

System.out.println("Consulta de " + TESTA_A + " objetos: " +

query_a + " ms");

System.out.println("Consulta de " + TESTA_B + " objetos: " +

query_b + " ms");

System.out.println("Consulta de " + TESTA_C + " objetos: " +

query_c + " ms");

System.out.println("Consulta de " + TESTA_D + " objetos: " +

query_d + " ms");

System.out.println("Consulta de " + TESTA_E + " objetos: " +

query_e + " ms");

System.out.println("Remoção " + TESTA_A + " objetos: " + delete_a +

" ms");

System.out.println("Remoção " + TESTA_B + " objetos: " + delete_b +

" ms");

System.out.println("Remoção " + TESTA_C + " objetos: " + delete_c +

" ms");

System.out.println("Remoção " + TESTA_D + " objetos: " + delete_d +

" ms");

System.out.println("Remoção " + TESTA_E + " objetos: " + delete_e +

" ms");

System.out.println("-----------------------------------------------

-----");

System.out.println("-----------------------------------------------

-----");

//COM RELACIONAMENTO

System.out.println("\n");

System.out.println("Teste de inserção em tabelas relacionadas");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

stm.executeUpdate("ALTER TABLE Pessoas AUTO_INCREMENT = 1");

stm.executeUpdate("ALTER TABLE Alunos AUTO_INCREMENT = 1");

stm.executeUpdate("ALTER TABLE Funcionarios AUTO_INCREMENT = 1");

stm.executeUpdate("ALTER TABLE Pessoal_Administrativo

AUTO_INCREMENT = 1");

stm.executeUpdate("ALTER TABLE Professores AUTO_INCREMENT = 1");

int j = 1;

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

stm.executeUpdate("insert into Pessoas values ('" + i +

Page 69: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

56

"','David Rodrigues Machado','43.136.057-8','302.061.738-

42','Masculino','1982-09-03','Aluno','Rua João Franco, 265','Jd. São

Cristovão','Bragança Paulista','SP','12900-000','(11)4032-7493','(11)9891-

9560','[email protected]')");

stm.executeUpdate("insert into alunos VALUES (" + j + ",'" + i

+ "', 'José Maria Rodrigues Machado', 'Ativo', 50, '2009-10-02');");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Roberto Garcia','22.132.221-2','256.216.235-37','Masculino','1975-12-

25','Funcionario','Av. José Gomes da Rocha Leal,

1024','Centro','Atibaia','SP','11700-050','(11)4089-7895','(11)8977-

8799','[email protected]');");

stm.executeUpdate("insert into Funcionarios VALUES (" + j +

",'" + i + "', '52586/00215-SP','2008-02-18',220,30,null);");

stm.executeUpdate("insert into Pessoal_Administrativo VALUES ("

+ j++ + ",'Aux. Administrativo',null);");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Camila Aparecida Alves','45.666.332-2','401.567.234-

22','Feminino','1990-05-20','Professor','Travessa Itália, 34','Parque

Brasil','Extrema','MG','14543-150','(16)5211-3729','(16)7890-

8927','[email protected]');");

stm.executeUpdate("insert into Funcionarios VALUES (" + j +

",'" + i + "', '22516/00115-SP','2009-08-05',44,50,null);");

stm.executeUpdate("insert into Professores VALUES (" + j++ +

",'Web Design','Fireworks, Dreamweaver, HTML, Flash',null);");

}

insert_plus_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

stm.executeUpdate("insert into Pessoas values ('" + i +

"','David Rodrigues Machado','43.136.057-8','302.061.738-

42','Masculino','1982-09-03','Aluno','Rua João Franco, 265','Jd. São

Cristovão','Bragança Paulista','SP','12900-000','(11)4032-7493','(11)9891-

9560','[email protected]');");

stm.executeUpdate("insert into alunos VALUES (" + j + ",'" + i

+ "', 'José Maria Rodrigues Machado', 'Ativo', 50, '2009-10-02');");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Roberto Garcia','22.132.221-2','256.216.235-37','Masculino','1975-12-

25','Funcionario','Av. José Gomes da Rocha Leal,

1024','Centro','Atibaia','SP','11700-050','(11)4089-7895','(11)8977-

8799','[email protected]');");

stm.executeUpdate("insert into Funcionarios VALUES (" + j +

",'" + i + "', '52586/00215-SP','2008-02-18',220,30,null);");

stm.executeUpdate("insert into Pessoal_Administrativo VALUES ("

+ j++ + ",'Aux. Administrativo',null);");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Camila Aparecida Alves','45.666.332-2','401.567.234-

22','Feminino','1990-05-20','Professor','Travessa Itália, 34','Parque

Brasil','Extrema','MG','14543-150','(16)5211-3729','(16)7890-

8927','[email protected]');");

stm.executeUpdate("insert into Funcionarios VALUES (" + j +

",'" + i + "', '22516/00115-SP','2009-08-05',44,50,null);");

stm.executeUpdate("insert into Professores VALUES (" + j++ +

",'Web Design','Fireworks, Dreamweaver, HTML, Flash',null);");

}

insert_plus_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

stm.executeUpdate("insert into Pessoas values ('" + i +

"','David Rodrigues Machado','43.136.057-8','302.061.738-

42','Masculino','1982-09-03','Aluno','Rua João Franco, 265','Jd. São

Page 70: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

57

Cristovão','Bragança Paulista','SP','12900-000','(11)4032-7493','(11)9891-

9560','[email protected]');");

stm.executeUpdate("insert into alunos VALUES (" + j + ",'" + i

+ "', 'José Maria Rodrigues Machado', 'Ativo', 50, '2009-10-02');");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Roberto Garcia','22.132.221-2','256.216.235-37','Masculino','1975-12-

25','Funcionario','Av. José Gomes da Rocha Leal,

1024','Centro','Atibaia','SP','11700-050','(11)4089-7895','(11)8977-

8799','[email protected]');");

stm.executeUpdate("insert into Funcionarios VALUES (" + j +

",'" + i + "', '52586/00215-SP','2008-02-18',220,30,null);");

stm.executeUpdate("insert into Pessoal_Administrativo VALUES ("

+ j++ + ",'Aux. Administrativo',null);");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Camila Aparecida Alves','45.666.332-2','401.567.234-

22','Feminino','1990-05-20','Professor','Travessa Itália, 34','Parque

Brasil','Extrema','MG','14543-150','(16)5211-3729','(16)7890-

8927','[email protected]');");

stm.executeUpdate("insert into Funcionarios VALUES (" + j +

",'" + i + "', '22516/00115-SP','2009-08-05',44,50,null);");

stm.executeUpdate("insert into Professores VALUES (" + j++ +

",'Web Design','Fireworks, Dreamweaver, HTML, Flash',null);");

}

insert_plus_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

stm.executeUpdate("insert into Pessoas values ('" + i +

"','David Rodrigues Machado','43.136.057-8','302.061.738-

42','Masculino','1982-09-03','Aluno','Rua João Franco, 265','Jd. São

Cristovão','Bragança Paulista','SP','12900-000','(11)4032-7493','(11)9891-

9560','[email protected]');");

stm.executeUpdate("insert into alunos VALUES (" + j + ",'" + i

+ "', 'José Maria Rodrigues Machado', 'Ativo', 50, '2009-10-02');");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Roberto Garcia','22.132.221-2','256.216.235-37','Masculino','1975-12-

25','Funcionario','Av. José Gomes da Rocha Leal,

1024','Centro','Atibaia','SP','11700-050','(11)4089-7895','(11)8977-

8799','[email protected]');");

stm.executeUpdate("insert into Funcionarios VALUES (" + j +

",'" + i + "', '52586/00215-SP','2008-02-18',220,30,null);");

stm.executeUpdate("insert into Pessoal_Administrativo VALUES ("

+ j++ + ",'Aux. Administrativo',null);");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Camila Aparecida Alves','45.666.332-2','401.567.234-

22','Feminino','1990-05-20','Professor','Travessa Itália, 34','Parque

Brasil','Extrema','MG','14543-150','(16)5211-3729','(16)7890-

8927','[email protected]');");

stm.executeUpdate("insert into Funcionarios VALUES (" + j +

",'" + i + "', '22516/00115-SP','2009-08-05',44,50,null);");

stm.executeUpdate("insert into Professores VALUES (" + j++ +

",'Web Design','Fireworks, Dreamweaver, HTML, Flash',null);");

}

insert_plus_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

stm.executeUpdate("insert into Pessoas values ('" + i +

"','David Rodrigues Machado','43.136.057-8','302.061.738-

42','Masculino','1982-09-03','Aluno','Rua João Franco, 265','Jd. São

Cristovão','Bragança Paulista','SP','12900-000','(11)4032-7493','(11)9891-

9560','[email protected]');");

Page 71: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

58

stm.executeUpdate("insert into alunos VALUES (" + j + ",'" + i

+ "', 'José Maria Rodrigues Machado', 'Ativo', 50, '2009-10-02');");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Roberto Garcia','22.132.221-2','256.216.235-37','Masculino','1975-12-

25','Funcionario','Av. José Gomes da Rocha Leal,

1024','Centro','Atibaia','SP','11700-050','(11)4089-7895','(11)8977-

8799','[email protected]');");

stm.executeUpdate("insert into Funcionarios VALUES (" + j +

",'" + i + "', '52586/00215-SP','2008-02-18',220,30,null);");

stm.executeUpdate("insert into Pessoal_Administrativo VALUES ("

+ j++ + ",'Aux. Administrativo',null);");

stm.executeUpdate("insert into Pessoas values ('" + ++i +

"','Camila Aparecida Alves','45.666.332-2','401.567.234-

22','Feminino','1990-05-20','Professor','Travessa Itália, 34','Parque

Brasil','Extrema','MG','14543-150','(16)5211-3729','(16)7890-

8927','[email protected]');");

stm.executeUpdate("insert into Funcionarios VALUES (" + j +

",'" + i + "', '22516/00115-SP','2009-08-05',44,50,null);");

stm.executeUpdate("insert into Professores VALUES (" + j++ +

",'Web Design','Fireworks, Dreamweaver, HTML, Flash',null);");

}

insert_plus_e = obterTempo(inicio);

System.out.println("\n");

System.out.println("Teste de atualização em tabelas relacionadas");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

j = 1;

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

stm.executeUpdate("UPDATE Pessoas p, Alunos a SET

p.NOME='Jennifer Lynn Connelly', p.RG='22.123.485-2', p.CPF='131.245.213-

53', p.SEXO='Feminino', p.DATA_NASC='1970-12-12', p.TIPO='Aluno',

p.ENDERECO='Av. Labirinto das Flores, 56', p.BAIRRO='Vila Carreira',

p.CIDADE='Extrema', p.UF='MG', p.CEP='14696-600', p.TELEFONE='(14)5055-

6351', p.CELULAR='(14)8654-8986', p.EMAIL='[email protected]',

a.RESPONSAVEL='Sarah Jessica Parker', a.SITUACAO='Suspenso', a.SALDO='39',

a.DATA_ULTIMO_PAGAMENTO='1970-12-12' WHERE p.cod=" + i + " and

p.cod=a.cod_pessoa");

stm.executeUpdate("UPDATE Pessoas p, Funcionarios f,

Pessoal_Administrativo pa SET p.NOME='Sabrina da Silva', p.RG='44.987.654-

8', p.CPF='310.534.400-41',p.SEXO='Feminino',p.DATA_NASC='1992-03-

01',p.TIPO='Funcionario',p.ENDERECO='Rua 24, 34',p.BAIRRO='Recanto

Londrina',p.CIDADE='Itatiba',p.UF='SP',p.CEP='13426-

230',p.TELEFONE='(11)4066-1334',p.CELULAR='(11)1375-

2985',p.EMAIL='[email protected]', f.CTPS='68630/01609-

SP',f.DATA_ADMISSAO='2009-09-25', f.QUANT_HORAS_TRABALHADA='30',

f.SALARIO_HORA='40', pa.CARGO='Secretario (a)' WHERE p.cod=" + ++i + " and

p.cod=f.cod_pessoa and f.cod_func=pa.cod_func");

stm.executeUpdate("UPDATE Pessoas p, Funcionarios f,

Professores pf SET p.NOME='Rubens Ewald Filho', p.RG='20.311.215-2',

p.CPF='179.767.293-23', p.SEXO='Masculino', p.DATA_NASC='1955-11-30',

p.TIPO='Professor', p.ENDERECO='Rua Cinema Paradiso, 677', p.BAIRRO='Jd.

das Palmeiras', p.CIDADE='Bragança Paulista', p.UF='SP', p.CEP='12906-040',

p.TELEFONE='(11)4032-3700', p.CELULAR='(11)7309-1613',

p.EMAIL='[email protected]', f.CTPS='29333/13422-

SP',f.DATA_ADMISSAO='1999-01-05', f.QUANT_HORAS_TRABALHADA='220',

f.SALARIO_HORA='45', pf.AREA='Informática Básica',

pf.CURSOS_HABILITADOS='Windows, Word, Excel, Access' WHERE p.cod=" + ++i +

Page 72: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

59

" and p.cod=f.cod_pessoa and f.cod_func=pf.cod_func");

}

update_plus_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

stm.executeUpdate("UPDATE Pessoas p, Alunos a SET

p.NOME='Jennifer Lynn Connelly', p.RG='22.123.485-2', p.CPF='131.245.213-

53', p.SEXO='Feminino', p.DATA_NASC='1970-12-12', p.TIPO='Aluno',

p.ENDERECO='Av. Labirinto das Flores, 56', p.BAIRRO='Vila Carreira',

p.CIDADE='Extrema', p.UF='MG', p.CEP='14696-600', p.TELEFONE='(14)5055-

6351', p.CELULAR='(14)8654-8986', p.EMAIL='[email protected]',

a.RESPONSAVEL='Sarah Jessica Parker', a.SITUACAO='Suspenso', a.SALDO='39',

a.DATA_ULTIMO_PAGAMENTO='1970-12-12' WHERE p.cod=" + i + " and

p.cod=a.cod_pessoa");

stm.executeUpdate("UPDATE Pessoas p, Funcionarios f,

Pessoal_Administrativo pa SET p.NOME='Sabrina da Silva', p.RG='44.987.654-

8', p.CPF='310.534.400-41',p.SEXO='Feminino',p.DATA_NASC='1992-03-

01',p.TIPO='Funcionario',p.ENDERECO='Rua 24, 34',p.BAIRRO='Recanto

Londrina',p.CIDADE='Itatiba',p.UF='SP',p.CEP='13426-

230',p.TELEFONE='(11)4066-1334',p.CELULAR='(11)1375-

2985',p.EMAIL='[email protected]', f.CTPS='68630/01609-

SP',f.DATA_ADMISSAO='2009-09-25', f.QUANT_HORAS_TRABALHADA='30',

f.SALARIO_HORA='40', pa.CARGO='Secretario (a)' WHERE p.cod=" + ++i + " and

p.cod=f.cod_pessoa and f.cod_func=pa.cod_func");

stm.executeUpdate("UPDATE Pessoas p, Funcionarios f,

Professores pf SET p.NOME='Rubens Ewald Filho', p.RG='20.311.215-2',

p.CPF='179.767.293-23', p.SEXO='Masculino', p.DATA_NASC='1955-11-30',

p.TIPO='Professor', p.ENDERECO='Rua Cinema Paradiso, 677', p.BAIRRO='Jd.

das Palmeiras', p.CIDADE='Bragança Paulista', p.UF='SP', p.CEP='12906-040',

p.TELEFONE='(11)4032-3700', p.CELULAR='(11)7309-1613',

p.EMAIL='[email protected]', f.CTPS='29333/13422-

SP',f.DATA_ADMISSAO='1999-01-05', f.QUANT_HORAS_TRABALHADA='220',

f.SALARIO_HORA='45', pf.AREA='Informática Básica',

pf.CURSOS_HABILITADOS='Windows, Word, Excel, Access' WHERE p.cod=" + ++i +

" and p.cod=f.cod_pessoa and f.cod_func=pf.cod_func");

}

update_plus_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

stm.executeUpdate("UPDATE Pessoas p, Alunos a SET

p.NOME='Jennifer Lynn Connelly', p.RG='22.123.485-2', p.CPF='131.245.213-

53', p.SEXO='Feminino', p.DATA_NASC='1970-12-12', p.TIPO='Aluno',

p.ENDERECO='Av. Labirinto das Flores, 56', p.BAIRRO='Vila Carreira',

p.CIDADE='Extrema', p.UF='MG', p.CEP='14696-600', p.TELEFONE='(14)5055-

6351', p.CELULAR='(14)8654-8986', p.EMAIL='[email protected]',

a.RESPONSAVEL='Sarah Jessica Parker', a.SITUACAO='Suspenso', a.SALDO='39',

a.DATA_ULTIMO_PAGAMENTO='1970-12-12' WHERE p.cod=" + i + " and

p.cod=a.cod_pessoa");

stm.executeUpdate("UPDATE Pessoas p, Funcionarios f,

Pessoal_Administrativo pa SET p.NOME='Sabrina da Silva', p.RG='44.987.654-

8', p.CPF='310.534.400-41',p.SEXO='Feminino',p.DATA_NASC='1992-03-

01',p.TIPO='Funcionario',p.ENDERECO='Rua 24, 34',p.BAIRRO='Recanto

Londrina',p.CIDADE='Itatiba',p.UF='SP',p.CEP='13426-

230',p.TELEFONE='(11)4066-1334',p.CELULAR='(11)1375-

2985',p.EMAIL='[email protected]', f.CTPS='68630/01609-

SP',f.DATA_ADMISSAO='2009-09-25', f.QUANT_HORAS_TRABALHADA='30',

f.SALARIO_HORA='40', pa.CARGO='Secretario (a)' WHERE p.cod=" + ++i + " and

p.cod=f.cod_pessoa and f.cod_func=pa.cod_func");

stm.executeUpdate("UPDATE Pessoas p, Funcionarios f,

Professores pf SET p.NOME='Rubens Ewald Filho', p.RG='20.311.215-2',

p.CPF='179.767.293-23', p.SEXO='Masculino', p.DATA_NASC='1955-11-30',

Page 73: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

60

p.TIPO='Professor', p.ENDERECO='Rua Cinema Paradiso, 677', p.BAIRRO='Jd.

das Palmeiras', p.CIDADE='Bragança Paulista', p.UF='SP', p.CEP='12906-040',

p.TELEFONE='(11)4032-3700', p.CELULAR='(11)7309-1613',

p.EMAIL='[email protected]', f.CTPS='29333/13422-

SP',f.DATA_ADMISSAO='1999-01-05', f.QUANT_HORAS_TRABALHADA='220',

f.SALARIO_HORA='45', pf.AREA='Informática Básica',

pf.CURSOS_HABILITADOS='Windows, Word, Excel, Access' WHERE p.cod=" + ++i +

" and p.cod=f.cod_pessoa and f.cod_func=pf.cod_func");

}

update_plus_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

stm.executeUpdate("UPDATE Pessoas p, Alunos a SET

p.NOME='Jennifer Lynn Connelly', p.RG='22.123.485-2', p.CPF='131.245.213-

53', p.SEXO='Feminino', p.DATA_NASC='1970-12-12', p.TIPO='Aluno',

p.ENDERECO='Av. Labirinto das Flores, 56', p.BAIRRO='Vila Carreira',

p.CIDADE='Extrema', p.UF='MG', p.CEP='14696-600', p.TELEFONE='(14)5055-

6351', p.CELULAR='(14)8654-8986', p.EMAIL='[email protected]',

a.RESPONSAVEL='Sarah Jessica Parker', a.SITUACAO='Suspenso', a.SALDO='39',

a.DATA_ULTIMO_PAGAMENTO='1970-12-12' WHERE p.cod=" + i + " and

p.cod=a.cod_pessoa");

stm.executeUpdate("UPDATE Pessoas p, Funcionarios f,

Pessoal_Administrativo pa SET p.NOME='Sabrina da Silva', p.RG='44.987.654-

8', p.CPF='310.534.400-41',p.SEXO='Feminino',p.DATA_NASC='1992-03-

01',p.TIPO='Funcionario',p.ENDERECO='Rua 24, 34',p.BAIRRO='Recanto

Londrina',p.CIDADE='Itatiba',p.UF='SP',p.CEP='13426-

230',p.TELEFONE='(11)4066-1334',p.CELULAR='(11)1375-

2985',p.EMAIL='[email protected]', f.CTPS='68630/01609-

SP',f.DATA_ADMISSAO='2009-09-25', f.QUANT_HORAS_TRABALHADA='30',

f.SALARIO_HORA='40', pa.CARGO='Secretario (a)' WHERE p.cod=" + ++i + " and

p.cod=f.cod_pessoa and f.cod_func=pa.cod_func");

stm.executeUpdate("UPDATE Pessoas p, Funcionarios f,

Professores pf SET p.NOME='Rubens Ewald Filho', p.RG='20.311.215-2',

p.CPF='179.767.293-23', p.SEXO='Masculino', p.DATA_NASC='1955-11-30',

p.TIPO='Professor', p.ENDERECO='Rua Cinema Paradiso, 677', p.BAIRRO='Jd.

das Palmeiras', p.CIDADE='Bragança Paulista', p.UF='SP', p.CEP='12906-040',

p.TELEFONE='(11)4032-3700', p.CELULAR='(11)7309-1613',

p.EMAIL='[email protected]', f.CTPS='29333/13422-

SP',f.DATA_ADMISSAO='1999-01-05', f.QUANT_HORAS_TRABALHADA='220',

f.SALARIO_HORA='45', pf.AREA='Informática Básica',

pf.CURSOS_HABILITADOS='Windows, Word, Excel, Access' WHERE p.cod=" + ++i +

" and p.cod=f.cod_pessoa and f.cod_func=pf.cod_func");

}

update_plus_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

stm.executeUpdate("UPDATE Pessoas p, Alunos a SET

p.NOME='Jennifer Lynn Connelly', p.RG='22.123.485-2', p.CPF='131.245.213-

53', p.SEXO='Feminino', p.DATA_NASC='1970-12-12', p.TIPO='Aluno',

p.ENDERECO='Av. Labirinto das Flores, 56', p.BAIRRO='Vila Carreira',

p.CIDADE='Extrema', p.UF='MG', p.CEP='14696-600', p.TELEFONE='(14)5055-

6351', p.CELULAR='(14)8654-8986', p.EMAIL='[email protected]',

a.RESPONSAVEL='Sarah Jessica Parker', a.SITUACAO='Suspenso', a.SALDO='39',

a.DATA_ULTIMO_PAGAMENTO='1970-12-12' WHERE p.cod=" + i + " and

p.cod=a.cod_pessoa");

stm.executeUpdate("UPDATE Pessoas p, Funcionarios f,

Pessoal_Administrativo pa SET p.NOME='Sabrina da Silva', p.RG='44.987.654-

8', p.CPF='310.534.400-41',p.SEXO='Feminino',p.DATA_NASC='1992-03-

01',p.TIPO='Funcionario',p.ENDERECO='Rua 24, 34',p.BAIRRO='Recanto

Londrina',p.CIDADE='Itatiba',p.UF='SP',p.CEP='13426-

230',p.TELEFONE='(11)4066-1334',p.CELULAR='(11)1375-

Page 74: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

61

2985',p.EMAIL='[email protected]', f.CTPS='68630/01609-

SP',f.DATA_ADMISSAO='2009-09-25', f.QUANT_HORAS_TRABALHADA='30',

f.SALARIO_HORA='40', pa.CARGO='Secretario (a)' WHERE p.cod=" + ++i + " and

p.cod=f.cod_pessoa and f.cod_func=pa.cod_func");

stm.executeUpdate("UPDATE Pessoas p, Funcionarios f,

Professores pf SET p.NOME='Rubens Ewald Filho', p.RG='20.311.215-2',

p.CPF='179.767.293-23', p.SEXO='Masculino', p.DATA_NASC='1955-11-30',

p.TIPO='Professor', p.ENDERECO='Rua Cinema Paradiso, 677', p.BAIRRO='Jd.

das Palmeiras', p.CIDADE='Bragança Paulista', p.UF='SP', p.CEP='12906-040',

p.TELEFONE='(11)4032-3700', p.CELULAR='(11)7309-1613',

p.EMAIL='[email protected]', f.CTPS='29333/13422-

SP',f.DATA_ADMISSAO='1999-01-05', f.QUANT_HORAS_TRABALHADA='220',

f.SALARIO_HORA='45', pf.AREA='Informática Básica',

pf.CURSOS_HABILITADOS='Windows, Word, Excel, Access' WHERE p.cod=" + ++i +

" and p.cod=f.cod_pessoa and f.cod_func=pf.cod_func");

}

update_plus_e = obterTempo(inicio);

System.out.println("\n");

System.out.println("Teste de consulta em tabelas relacionadas");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, a.RESPONSAVEL, a.SITUACAO, a.SALDO,

a.DATA_ULTIMO_PAGAMENTO FROM Pessoas p inner join Alunos a on

p.cod=a.cod_pessoa WHERE p.cod=" + i);

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, f.COD_FUNC, f.CTPS, f.DATA_ADMISSAO,

f.QUANT_HORAS_TRABALHADA, f.SALARIO_HORA, pa.COD_ADM, pa.CARGO FROM Pessoas

p inner join Funcionarios f inner join Pessoal_Administrativo pa on

p.cod=f.cod_pessoa and f.cod_func=pa.cod_func WHERE p.cod=" + ++i);

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, f.COD_FUNC, f.CTPS, f.DATA_ADMISSAO,

f.QUANT_HORAS_TRABALHADA, f.SALARIO_HORA, pf.ID_PROF, pf.AREA,

pf.CURSOS_HABILITADOS FROM Pessoas p inner join Funcionarios f inner join

Professores pf on p.cod=f.cod_pessoa and f.cod_func=pf.cod_func WHERE

p.cod=" + ++i);

}

query_plus_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, a.RESPONSAVEL, a.SITUACAO, a.SALDO,

a.DATA_ULTIMO_PAGAMENTO FROM Pessoas p inner join Alunos a on

p.cod=a.cod_pessoa WHERE p.cod=" + i);

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, f.COD_FUNC, f.CTPS, f.DATA_ADMISSAO,

f.QUANT_HORAS_TRABALHADA, f.SALARIO_HORA, pa.COD_ADM, pa.CARGO FROM Pessoas

p inner join Funcionarios f inner join Pessoal_Administrativo pa on

p.cod=f.cod_pessoa and f.cod_func=pa.cod_func WHERE p.cod=" + ++i);

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

Page 75: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

62

p.TELEFONE, p.CELULAR, p.EMAIL, f.COD_FUNC, f.CTPS, f.DATA_ADMISSAO,

f.QUANT_HORAS_TRABALHADA, f.SALARIO_HORA, pf.ID_PROF, pf.AREA,

pf.CURSOS_HABILITADOS FROM Pessoas p inner join Funcionarios f inner join

Professores pf on p.cod=f.cod_pessoa and f.cod_func=pf.cod_func WHERE

p.cod=" + ++i);

}

query_plus_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, a.RESPONSAVEL, a.SITUACAO, a.SALDO,

a.DATA_ULTIMO_PAGAMENTO FROM Pessoas p inner join Alunos a on

p.cod=a.cod_pessoa WHERE p.cod=" + i);

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, f.COD_FUNC, f.CTPS, f.DATA_ADMISSAO,

f.QUANT_HORAS_TRABALHADA, f.SALARIO_HORA, pa.COD_ADM, pa.CARGO FROM Pessoas

p inner join Funcionarios f inner join Pessoal_Administrativo pa on

p.cod=f.cod_pessoa and f.cod_func=pa.cod_func WHERE p.cod=" + ++i);

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, f.COD_FUNC, f.CTPS, f.DATA_ADMISSAO,

f.QUANT_HORAS_TRABALHADA, f.SALARIO_HORA, pf.ID_PROF, pf.AREA,

pf.CURSOS_HABILITADOS FROM Pessoas p inner join Funcionarios f inner join

Professores pf on p.cod=f.cod_pessoa and f.cod_func=pf.cod_func WHERE

p.cod=" + ++i);

}

query_plus_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, a.RESPONSAVEL, a.SITUACAO, a.SALDO,

a.DATA_ULTIMO_PAGAMENTO FROM Pessoas p inner join Alunos a on

p.cod=a.cod_pessoa WHERE p.cod=" + i);

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, f.COD_FUNC, f.CTPS, f.DATA_ADMISSAO,

f.QUANT_HORAS_TRABALHADA, f.SALARIO_HORA, pa.COD_ADM, pa.CARGO FROM Pessoas

p inner join Funcionarios f inner join Pessoal_Administrativo pa on

p.cod=f.cod_pessoa and f.cod_func=pa.cod_func WHERE p.cod=" + ++i);

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, f.COD_FUNC, f.CTPS, f.DATA_ADMISSAO,

f.QUANT_HORAS_TRABALHADA, f.SALARIO_HORA, pf.ID_PROF, pf.AREA,

pf.CURSOS_HABILITADOS FROM Pessoas p inner join Funcionarios f inner join

Professores pf on p.cod=f.cod_pessoa and f.cod_func=pf.cod_func WHERE

p.cod=" + ++i);

}

query_plus_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, a.RESPONSAVEL, a.SITUACAO, a.SALDO,

a.DATA_ULTIMO_PAGAMENTO FROM Pessoas p inner join Alunos a on

p.cod=a.cod_pessoa WHERE p.cod=" + i);

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, f.COD_FUNC, f.CTPS, f.DATA_ADMISSAO,

Page 76: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

63

f.QUANT_HORAS_TRABALHADA, f.SALARIO_HORA, pa.COD_ADM, pa.CARGO FROM Pessoas

p inner join Funcionarios f inner join Pessoal_Administrativo pa on

p.cod=f.cod_pessoa and f.cod_func=pa.cod_func WHERE p.cod=" + ++i);

stm.executeQuery("SELECT p.COD, p.NOME, p.RG, p.CPF, p.SEXO,

p.DATA_NASC, p.TIPO, p.ENDERECO, p.BAIRRO, p.CIDADE, p.UF, p.CEP,

p.TELEFONE, p.CELULAR, p.EMAIL, f.COD_FUNC, f.CTPS, f.DATA_ADMISSAO,

f.QUANT_HORAS_TRABALHADA, f.SALARIO_HORA, pf.ID_PROF, pf.AREA,

pf.CURSOS_HABILITADOS FROM Pessoas p inner join Funcionarios f inner join

Professores pf on p.cod=f.cod_pessoa and f.cod_func=pf.cod_func WHERE

p.cod=" + ++i);

}

query_plus_e = obterTempo(inicio);

System.out.println("\n");

System.out.println("Teste de remoção em tabelas relacionadas");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

stm.executeUpdate("DELETE p FROM Pessoas p, Alunos a Where

p.cod=" + i + " and p.cod=a.cod_pessoa");

stm.executeUpdate("DELETE p FROM Pessoas p, Funcionarios f,

Pessoal_Administrativo pa Where p.cod=" + ++i + " and p.cod=f.cod_pessoa

and f.cod_func=pa.cod_func");

stm.executeUpdate("DELETE p FROM Pessoas p, Funcionarios f,

Professores pf Where p.cod=" + ++i + " and p.cod=f.cod_pessoa and

f.cod_func=pf.cod_func");

}

delete_plus_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

stm.executeUpdate("DELETE p FROM Pessoas p, Alunos a Where

p.cod=" + i + " and p.cod=a.cod_pessoa");

stm.executeUpdate("DELETE p FROM Pessoas p, Funcionarios f,

Pessoal_Administrativo pa Where p.cod=" + ++i + " and p.cod=f.cod_pessoa

and f.cod_func=pa.cod_func");

stm.executeUpdate("DELETE p FROM Pessoas p, Funcionarios f,

Professores pf Where p.cod=" + ++i + " and p.cod=f.cod_pessoa and

f.cod_func=pf.cod_func");

}

delete_plus_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

stm.executeUpdate("DELETE p FROM Pessoas p, Alunos a Where

p.cod=" + i + " and p.cod=a.cod_pessoa");

stm.executeUpdate("DELETE p FROM Pessoas p, Funcionarios f,

Pessoal_Administrativo pa Where p.cod=" + ++i + " and p.cod=f.cod_pessoa

and f.cod_func=pa.cod_func");

stm.executeUpdate("DELETE p FROM Pessoas p, Funcionarios f,

Professores pf Where p.cod=" + ++i + " and p.cod=f.cod_pessoa and

f.cod_func=pf.cod_func");

}

delete_plus_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

stm.executeUpdate("DELETE p FROM Pessoas p, Alunos a Where

p.cod=" + i + " and p.cod=a.cod_pessoa");

stm.executeUpdate("DELETE p FROM Pessoas p, Funcionarios f,

Pessoal_Administrativo pa Where p.cod=" + ++i + " and p.cod=f.cod_pessoa

Page 77: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

64

and f.cod_func=pa.cod_func");

stm.executeUpdate("DELETE p FROM Pessoas p, Funcionarios f,

Professores pf Where p.cod=" + ++i + " and p.cod=f.cod_pessoa and

f.cod_func=pf.cod_func");

}

delete_plus_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

stm.executeUpdate("DELETE p FROM Pessoas p, Alunos a Where

p.cod=" + i + " and p.cod=a.cod_pessoa");

stm.executeUpdate("DELETE p FROM Pessoas p, Funcionarios f,

Pessoal_Administrativo pa Where p.cod=" + ++i + " and p.cod=f.cod_pessoa

and f.cod_func=pa.cod_func");

stm.executeUpdate("DELETE p FROM Pessoas p, Funcionarios f,

Professores pf Where p.cod=" + ++i + " and p.cod=f.cod_pessoa and

f.cod_func=pf.cod_func");

}

delete_plus_e = obterTempo(inicio);

System.out.println("\n");

System.out.println("-----------------------------------------------

-----");

System.out.println("-------- TESTE DO BANCO DE DADOS RELACIONAL ---

-----");

System.out.println("------------- com tabelas relacionadas --------

-----");

System.out.println("-----------------------------------------------

-----");

System.out.println("inserção de " + TESTA_A + " objetos: " +

insert_plus_a + " ms");

System.out.println("inserção de " + TESTA_B + " objetos: " +

insert_plus_b + " ms");

System.out.println("inserção de " + TESTA_C + " objetos: " +

insert_plus_c + " ms");

System.out.println("inserção de " + TESTA_D + " objetos: " +

insert_plus_d + " ms");

System.out.println("inserção de " + TESTA_E + " objetos: " +

insert_plus_e + " ms");

System.out.println("atualização de " + TESTA_A + " objetos: " +

update_plus_a + " ms");

System.out.println("atualização de " + TESTA_B + " objetos: " +

update_plus_b + " ms");

System.out.println("atualização de " + TESTA_C + " objetos: " +

update_plus_c + " ms");

System.out.println("atualização de " + TESTA_D + " objetos: " +

update_plus_d + " ms");

System.out.println("atualização de " + TESTA_E + " objetos: " +

update_plus_e + " ms");

System.out.println("Consulta de " + TESTA_A + " objetos: " +

query_plus_a + " ms");

System.out.println("Consulta de " + TESTA_B + " objetos: " +

query_plus_b + " ms");

System.out.println("Consulta de " + TESTA_C + " objetos: " +

query_plus_c + " ms");

System.out.println("Consulta de " + TESTA_D + " objetos: " +

query_plus_d + " ms");

System.out.println("Consulta de " + TESTA_E + " objetos: " +

query_plus_e + " ms");

System.out.println("Remoção " + TESTA_A + " objetos: " +

delete_plus_a + " ms");

System.out.println("Remoção " + TESTA_B + " objetos: " +

Page 78: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

65

delete_plus_b + " ms");

System.out.println("Remoção " + TESTA_C + " objetos: " +

delete_plus_c + " ms");

System.out.println("Remoção " + TESTA_D + " objetos: " +

delete_plus_d + " ms");

System.out.println("Remoção " + TESTA_E + " objetos: " +

delete_plus_e + " ms");

System.out.println("-----------------------------------------------

-----");

System.out.println("-----------------------------------------------

-----");

System.out.println("\n");

}

}

Classe TesteObjetos:

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package testeescolainformatica;

import com.db4o.Db4o;

import com.db4o.ObjectContainer;

import com.db4o.ObjectSet;

import com.db4o.query.Query;

/**

*

* @author David

*/

public class TesteObjetos {

int TESTA_A = 900;

int TESTA_B = 1800;

int TESTA_C = 2700;

int TESTA_D = 3600;

int TESTA_E = 4500;

static long iniciar() {

return System.currentTimeMillis();

}

static long obterTempo(long inicio) {

return System.currentTimeMillis() - inicio;

}

public static void inserir(int cod, String nome, String rg, String cpf,

String sexo, String data_nasc, String tipo, String endereco, String bairro,

String cidade, String uf, String cep, String telefone, String celular,

String email) {

Pessoas p = new Pessoas();

p.setCod(cod);

p.setNome(nome);

p.setRg(rg);

Page 79: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

66

p.setCpf(cpf);

p.setSexo(sexo);

p.setDataNasc(data_nasc);

p.setTipo(tipo);

p.setEndereco(endereco);

p.setBairro(bairro);

p.setCidade(cidade);

p.setUf(uf);

p.setCep(cep);

p.setTelefone(telefone);

p.setCelular(celular);

p.setEmail(email);

db.set(p);

}

public static void inserir(int cod, String nome, String rg, String cpf,

String sexo, String data_nasc, String tipo, String endereco, String bairro,

String cidade, String uf, String cep, String telefone, String celular,

String email, int cod_pessoa, String responsavel, String situacao, float

saldo, String data_ultimo_pagamento) {

Alunos a = new Alunos();

a.setCod(cod);

a.setNome(nome);

a.setRg(rg);

a.setCpf(cpf);

a.setSexo(sexo);

a.setDataNasc(data_nasc);

a.setTipo(tipo);

a.setEndereco(endereco);

a.setBairro(bairro);

a.setCidade(cidade);

a.setUf(uf);

a.setCep(cep);

a.setTelefone(telefone);

a.setCelular(celular);

a.setEmail(email);

a.setCodPessoa(cod);

a.setResponsavel(responsavel);

a.setSituacao(situacao);

a.setSaldo(saldo);

a.setDataUltimoPagamento(data_ultimo_pagamento);

db.set(a);

}

public static void inserir(int cod, String nome, String rg, String cpf,

String sexo, String data_nasc, String tipo, String endereco, String bairro,

String cidade, String uf, String cep, String telefone, String celular,

String email, int cod_pessoa, String ctps, String data_admissao, int

quant_horas_trabalhadas, float salario_hora, String cargo) {

PessoalAdministrativo f = new PessoalAdministrativo();

f.setCod(cod);

f.setNome(nome);

f.setRg(rg);

f.setCpf(cpf);

f.setSexo(sexo);

f.setDataNasc(data_nasc);

f.setTipo(tipo);

f.setEndereco(endereco);

f.setBairro(bairro);

f.setCidade(cidade);

Page 80: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

67

f.setUf(uf);

f.setCep(cep);

f.setTelefone(telefone);

f.setCelular(celular);

f.setEmail(email);

f.setCodPessoa(cod_pessoa);

f.setCtps(ctps);

f.setDataAdmissao(data_admissao);

f.setSalarioHora(salario_hora);

f.setQuantHorasTrabalhadas(quant_horas_trabalhadas);

f.setCargo(cargo);

db.set(f);

}

public static void inserir(int cod, String nome, String rg, String cpf,

String sexo, String data_nasc, String tipo, String endereco, String bairro,

String cidade, String uf, String cep, String telefone, String celular,

String email, int cod_pessoa, String ctps, String data_admissao, float

salario_hora, int quant_horas_trabalhadas, String area, String

cursos_habilitados) {

Professores pf = new Professores();

pf.setCod(cod);

pf.setNome(nome);

pf.setRg(rg);

pf.setCpf(cpf);

pf.setSexo(sexo);

pf.setDataNasc(data_nasc);

pf.setTipo(tipo);

pf.setEndereco(endereco);

pf.setBairro(bairro);

pf.setCidade(cidade);

pf.setUf(uf);

pf.setCep(cep);

pf.setTelefone(telefone);

pf.setCelular(celular);

pf.setEmail(email);

pf.setCodPessoa(cod_pessoa);

pf.setCtps(ctps);

pf.setDataAdmissao(data_admissao);

pf.setSalarioHora(salario_hora);

pf.setQuantHorasTrabalhadas(quant_horas_trabalhadas);

pf.setArea(area);

pf.setCursosHabilitados(cursos_habilitados);

db.set(pf);

}

public static void alterar(int cod, String nome, String rg, String cpf,

String sexo, String data_nasc, String tipo, String endereco, String bairro,

String cidade, String uf, String cep, String telefone, String celular,

String email) {

Pessoas p = new Pessoas();

p.setCod(cod);

ObjectSet result = db.get(p);

Pessoas achou = (Pessoas) result.next();

achou.setCod(cod);

Page 81: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

68

achou.setNome(nome);

achou.setRg(rg);

achou.setCpf(cpf);

achou.setSexo(sexo);

achou.setDataNasc(data_nasc);

achou.setTipo(tipo);

achou.setEndereco(endereco);

achou.setBairro(bairro);

achou.setCidade(cidade);

achou.setUf(uf);

achou.setCep(cep);

achou.setTelefone(telefone);

achou.setCelular(celular);

achou.setEmail(email);

db.set(achou);

}

public static void alterar(int cod, String nome, String rg, String cpf,

String sexo, String data_nasc, String tipo, String endereco, String bairro,

String cidade, String uf, String cep, String telefone, String celular,

String email, int cod_pessoa, String responsavel, String situacao, float

saldo, String data_ultimo_pagamento) {

Alunos a = new Alunos();

a.setCod(cod);

ObjectSet result = db.get(a);

Alunos achou = (Alunos) result.next();

achou.setCod(cod);

achou.setNome(nome);

achou.setRg(rg);

achou.setCpf(cpf);

achou.setSexo(sexo);

achou.setDataNasc(data_nasc);

achou.setTipo(tipo);

achou.setEndereco(endereco);

achou.setBairro(bairro);

achou.setCidade(cidade);

achou.setUf(uf);

achou.setCep(cep);

achou.setTelefone(telefone);

achou.setCelular(celular);

achou.setEmail(email);

achou.setCodPessoa(cod_pessoa);

achou.setResponsavel(responsavel);

achou.setSituacao(situacao);

achou.setSaldo(saldo);

achou.setDataUltimoPagamento(data_ultimo_pagamento);

db.set(achou);

}

public static void alterar(int cod, String nome, String rg, String cpf,

String sexo, String data_nasc, String tipo, String endereco, String bairro,

String cidade, String uf, String cep, String telefone, String celular,

String email, int cod_pessoa, String ctps, String data_admissao, int

quant_horas_trabalhadas, float salario_hora, String cargo) {

PessoalAdministrativo f = new PessoalAdministrativo();

f.setCod(cod);

ObjectSet result = db.get(f);

Page 82: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

69

PessoalAdministrativo achou = (PessoalAdministrativo)

result.next();

achou.setCod(cod);

achou.setNome(nome);

achou.setRg(rg);

achou.setCpf(cpf);

achou.setSexo(sexo);

achou.setDataNasc(data_nasc);

achou.setTipo(tipo);

achou.setEndereco(endereco);

achou.setBairro(bairro);

achou.setCidade(cidade);

achou.setUf(uf);

achou.setCep(cep);

achou.setTelefone(telefone);

achou.setCelular(celular);

achou.setEmail(email);

achou.setCodPessoa(cod_pessoa);

achou.setCtps(ctps);

achou.setDataAdmissao(data_admissao);

achou.setSalarioHora(salario_hora);

achou.setQuantHorasTrabalhadas(quant_horas_trabalhadas);

achou.setCargo(cargo);

db.set(achou);

}

public static void alterar(int cod, String nome, String rg, String cpf,

String sexo, String data_nasc, String tipo, String endereco, String bairro,

String cidade, String uf, String cep, String telefone, String celular,

String email, int cod_pessoa, String ctps, String data_admissao, float

salario_hora, int quant_horas_trabalhadas, String area, String

cursos_habilitados) {

Professores pf = new Professores();

pf.setCod(cod);

ObjectSet result = db.get(pf);

Professores achou = (Professores) result.next();

achou.setCod(cod);

achou.setNome(nome);

achou.setRg(rg);

achou.setCpf(cpf);

achou.setSexo(sexo);

achou.setDataNasc(data_nasc);

achou.setTipo(tipo);

achou.setEndereco(endereco);

achou.setBairro(bairro);

achou.setCidade(cidade);

achou.setUf(uf);

achou.setCep(cep);

achou.setTelefone(telefone);

achou.setCelular(celular);

achou.setEmail(email);

achou.setCodPessoa(cod_pessoa);

achou.setCtps(ctps);

achou.setDataAdmissao(data_admissao);

achou.setSalarioHora(salario_hora);

Page 83: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

70

achou.setQuantHorasTrabalhadas(quant_horas_trabalhadas);

achou.setArea(area);

achou.setCursosHabilitados(cursos_habilitados);

db.set(achou);

}

public static void buscar(int cod) {

Query query = db.query();

query.constrain(Pessoas.class);

query.descend("cod").constrain(cod);

Pessoas p = (Pessoas) query.execute().next();

p.getCod();

p.getNome();

p.getRg();

p.getCpf();

p.getSexo();

p.getDataNasc();

p.getTipo();

p.getEndereco();

p.getBairro();

p.getCidade();

p.getUf();

p.getCep();

p.getTelefone();

p.getCelular();

p.getEmail();

}

public static void buscarAluno(int cod) {

Query query = db.query();

query.constrain(Alunos.class);

query.descend("cod").constrain(cod);

Alunos achou = (Alunos) query.execute().next();

achou.getCod();

achou.getNome();

achou.getRg();

achou.getCpf();

achou.getSexo();

achou.getDataNasc();

achou.getTipo();

achou.getEndereco();

achou.getBairro();

achou.getCidade();

achou.getUf();

achou.getCep();

achou.getTelefone();

achou.getCelular();

achou.getEmail();

achou.getCodPessoa();

achou.getResponsavel();

achou.getSituacao();

achou.getSaldo();

achou.getDataUltimoPagamento();

}

public static void buscarFuncionario(int cod) {

Query query = db.query();

query.constrain(PessoalAdministrativo.class);

Page 84: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

71

query.descend("cod").constrain(cod);

PessoalAdministrativo achou = (PessoalAdministrativo)

query.execute().next();

achou.getCod();

achou.getNome();

achou.getRg();

achou.getCpf();

achou.getSexo();

achou.getDataNasc();

achou.getTipo();

achou.getEndereco();

achou.getBairro();

achou.getCidade();

achou.getUf();

achou.getCep();

achou.getTelefone();

achou.getCelular();

achou.getEmail();

achou.getCodPessoa();

achou.getCtps();

achou.getDataAdmissao();

achou.getSalarioHora();

achou.getQuantHorasTrabalhadas();

achou.getCargo();

}

public static void buscarProfessor(int cod) {

Query query = db.query();

query.constrain(Professores.class);

query.descend("cod").constrain(cod);

Professores achou = (Professores) query.execute().next();

achou.getCod();

achou.getNome();

achou.getRg();

achou.getCpf();

achou.getSexo();

achou.getDataNasc();

achou.getTipo();

achou.getEndereco();

achou.getBairro();

achou.getCidade();

achou.getUf();

achou.getCep();

achou.getTelefone();

achou.getCelular();

achou.getEmail();

achou.getCodPessoa();

achou.getCtps();

achou.getDataAdmissao();

achou.getSalarioHora();

achou.getQuantHorasTrabalhadas();

achou.getArea();

achou.getCursosHabilitados();

}

public static void deletar(int cod) {

Pessoas p = new Pessoas();

Page 85: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

72

p.setCod(cod);

ObjectSet result = db.get(p);

Pessoas achou = (Pessoas) result.next();

db.delete(achou);

}

TesteObjetos() {

long inicio;

long insert_a, insert_b, insert_c, insert_d, insert_e;

long insert_plus_a, insert_plus_b, insert_plus_c, insert_plus_d,

insert_plus_e;

long update_a, update_b, update_c, update_d, update_e;

long update_plus_a, update_plus_b, update_plus_c, update_plus_d,

update_plus_e;

long query_a, query_b, query_c, query_d, query_e;

long query_plus_a, query_plus_b, query_plus_c, query_plus_d,

query_plus_e;

long delete_a, delete_b, delete_c, delete_d, delete_e;

long delete_plus_a, delete_plus_b, delete_plus_c, delete_plus_d,

delete_plus_e;

System.out.println("\n");

System.out.println("Teste de inserção de objetos sem herança");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

inserir(i, "David Rodrigues Machado", "43.136.057-8",

"302.061.738-42", "Masculino", "1982-09-03", "Aluno", "Rua João Franco,

265", "Jd. São Cristovão", "Bragança Paulista", "SP", "12900-000",

"(11)4032-7493", "(11)9891-9560", "[email protected]");

inserir(++i, "Roberto Garcia", "22.132.221-2", "256.216.235-

37", "Masculino", "1975-12-25", "Funcionario", "Av. José Gomes da Rocha

Leal, 1024", "Centro", "Atibaia", "SP", "11700-050", "(11)4089-7895",

"(11)8977-8799", "[email protected]");

inserir(++i, "Camila Aparecida Alves", "45.666.332-2",

"401.567.234-22", "Feminino", "1990-05-20", "Professor", "Travessa Itália,

34", "Parque Brasil", "Extrema", "MG", "14543-150", "(16)5211-3729",

"(16)7890-8927", "[email protected]");

}

insert_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

inserir(i, "David Rodrigues Machado", "43.136.057-8",

"302.061.738-42", "Masculino", "1982-09-03", "Aluno", "Rua João Franco,

265", "Jd. São Cristovão", "Bragança Paulista", "SP", "12900-000",

"(11)4032-7493", "(11)9891-9560", "[email protected]");

inserir(++i, "Roberto Garcia", "22.132.221-2", "256.216.235-

37", "Masculino", "1975-12-25", "Funcionario", "Av. José Gomes da Rocha

Leal, 1024", "Centro", "Atibaia", "SP", "11700-050", "(11)4089-7895",

"(11)8977-8799", "[email protected]");

inserir(++i, "Camila Aparecida Alves", "45.666.332-2",

"401.567.234-22", "Feminino", "1990-05-20", "Professor", "Travessa Itália,

34", "Parque Brasil", "Extrema", "MG", "14543-150", "(16)5211-3729",

"(16)7890-8927", "[email protected]");

}

insert_b = obterTempo(inicio);

Page 86: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

73

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

inserir(i, "David Rodrigues Machado", "43.136.057-8",

"302.061.738-42", "Masculino", "1982-09-03", "Aluno", "Rua João Franco,

265", "Jd. São Cristovão", "Bragança Paulista", "SP", "12900-000",

"(11)4032-7493", "(11)9891-9560", "[email protected]");

inserir(++i, "Roberto Garcia", "22.132.221-2", "256.216.235-

37", "Masculino", "1975-12-25", "Funcionario", "Av. José Gomes da Rocha

Leal, 1024", "Centro", "Atibaia", "SP", "11700-050", "(11)4089-7895",

"(11)8977-8799", "[email protected]");

inserir(++i, "Camila Aparecida Alves", "45.666.332-2",

"401.567.234-22", "Feminino", "1990-05-20", "Professor", "Travessa Itália,

34", "Parque Brasil", "Extrema", "MG", "14543-150", "(16)5211-3729",

"(16)7890-8927", "[email protected]");

}

insert_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

inserir(i, "David Rodrigues Machado", "43.136.057-8",

"302.061.738-42", "Masculino", "1982-09-03", "Aluno", "Rua João Franco,

265", "Jd. São Cristovão", "Bragança Paulista", "SP", "12900-000",

"(11)4032-7493", "(11)9891-9560", "[email protected]");

inserir(++i, "Roberto Garcia", "22.132.221-2", "256.216.235-

37", "Masculino", "1975-12-25", "Funcionario", "Av. José Gomes da Rocha

Leal, 1024", "Centro", "Atibaia", "SP", "11700-050", "(11)4089-7895",

"(11)8977-8799", "[email protected]");

inserir(++i, "Camila Aparecida Alves", "45.666.332-2",

"401.567.234-22", "Feminino", "1990-05-20", "Professor", "Travessa Itália,

34", "Parque Brasil", "Extrema", "MG", "14543-150", "(16)5211-3729",

"(16)7890-8927", "[email protected]");

}

insert_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

inserir(i, "David Rodrigues Machado", "43.136.057-8",

"302.061.738-42", "Masculino", "1982-09-03", "Aluno", "Rua João Franco,

265", "Jd. São Cristovão", "Bragança Paulista", "SP", "12900-000",

"(11)4032-7493", "(11)9891-9560", "[email protected]");

inserir(++i, "Roberto Garcia", "22.132.221-2", "256.216.235-

37", "Masculino", "1975-12-25", "Funcionario", "Av. José Gomes da Rocha

Leal, 1024", "Centro", "Atibaia", "SP", "11700-050", "(11)4089-7895",

"(11)8977-8799", "[email protected]");

inserir(++i, "Camila Aparecida Alves", "45.666.332-2",

"401.567.234-22", "Feminino", "1990-05-20", "Professor", "Travessa Itália,

34", "Parque Brasil", "Extrema", "MG", "14543-150", "(16)5211-3729",

"(16)7890-8927", "[email protected]");

}

insert_e = obterTempo(inicio);

System.out.println("\n");

System.out.println("Teste de atualização de objetos sem herança");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

alterar(i, "Jennifer Lynn Connelly", "22.123.485-2",

"131.245.213-53", "Feminino", "1970-12-12", "Aluno", "Av. Labirinto das

Flores, 56", "Vila Carreira", "Extrema", "MG", "14696-600", "(14)5055-

6351", "(16)8654-8986", "[email protected]");

alterar(++i, "Sabrina da Silva", "44.987.654-8", "310.534.400-

Page 87: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

74

41", "Feminino", "1992-03-01", "Funcionario", "Rua 24, 34", "Recanto

Londrina", "Itatiba", "SP", "13426-230", "(11)4066-1334", "(11)1375-2985",

"[email protected]");

alterar(++i, "Rubens Ewald Filho", "20.311.215-2",

"179.767.293-23", "Masculino", "1955-11-30", "Professor", "Rua Cinema

Paradiso, 677", "Jd. das Palmeiras", "Bragança Paulista", "SP", "12906-

040", "(11)4032-3700", "(11)7309-1613", "[email protected]");

}

update_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

alterar(i, "Jennifer Lynn Connelly", "22.123.485-2",

"131.245.213-53", "Feminino", "1970-12-12", "Aluno", "Av. Labirinto das

Flores, 56", "Vila Carreira", "Extrema", "MG", "14696-600", "(14)5055-

6351", "(16)8654-8986", "[email protected]");

alterar(++i, "Sabrina da Silva", "44.987.654-8", "310.534.400-

41", "Feminino", "1992-03-01", "Funcionario", "Rua 24, 34", "Recanto

Londrina", "Itatiba", "SP", "13426-230", "(11)4066-1334", "(11)1375-2985",

"[email protected]");

alterar(++i, "Rubens Ewald Filho", "20.311.215-2",

"179.767.293-23", "Masculino", "1955-11-30", "Professor", "Rua Cinema

Paradiso, 677", "Jd. das Palmeiras", "Bragança Paulista", "SP", "12906-

040", "(11)4032-3700", "(11)7309-1613", "[email protected]");

}

update_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

alterar(i, "Jennifer Lynn Connelly", "22.123.485-2",

"131.245.213-53", "Feminino", "1970-12-12", "Aluno", "Av. Labirinto das

Flores, 56", "Vila Carreira", "Extrema", "MG", "14696-600", "(14)5055-

6351", "(16)8654-8986", "[email protected]");

alterar(++i, "Sabrina da Silva", "44.987.654-8", "310.534.400-

41", "Feminino", "1992-03-01", "Funcionario", "Rua 24, 34", "Recanto

Londrina", "Itatiba", "SP", "13426-230", "(11)4066-1334", "(11)1375-2985",

"[email protected]");

alterar(++i, "Rubens Ewald Filho", "20.311.215-2",

"179.767.293-23", "Masculino", "1955-11-30", "Professor", "Rua Cinema

Paradiso, 677", "Jd. das Palmeiras", "Bragança Paulista", "SP", "12906-

040", "(11)4032-3700", "(11)7309-1613", "[email protected]");

}

update_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

alterar(i, "Jennifer Lynn Connelly", "22.123.485-2",

"131.245.213-53", "Feminino", "1970-12-12", "Aluno", "Av. Labirinto das

Flores, 56", "Vila Carreira", "Extrema", "MG", "14696-600", "(14)5055-

6351", "(16)8654-8986", "[email protected]");

alterar(++i, "Sabrina da Silva", "44.987.654-8", "310.534.400-

41", "Feminino", "1992-03-01", "Funcionario", "Rua 24, 34", "Recanto

Londrina", "Itatiba", "SP", "13426-230", "(11)4066-1334", "(11)1375-2985",

"[email protected]");

alterar(++i, "Rubens Ewald Filho", "20.311.215-2",

"179.767.293-23", "Masculino", "1955-11-30", "Professor", "Rua Cinema

Paradiso, 677", "Jd. das Palmeiras", "Bragança Paulista", "SP", "12906-

040", "(11)4032-3700", "(11)7309-1613", "[email protected]");

}

update_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

alterar(i, "Jennifer Lynn Connelly", "22.123.485-2",

"131.245.213-53", "Feminino", "1970-12-12", "Aluno", "Av. Labirinto das

Flores, 56", "Vila Carreira", "Extrema", "MG", "14696-600", "(14)5055-

Page 88: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

75

6351", "(16)8654-8986", "[email protected]");

alterar(++i, "Sabrina da Silva", "44.987.654-8", "310.534.400-

41", "Feminino", "1992-03-01", "Funcionario", "Rua 24, 34", "Recanto

Londrina", "Itatiba", "SP", "13426-230", "(11)4066-1334", "(11)1375-2985",

"[email protected]");

alterar(++i, "Rubens Ewald Filho", "20.311.215-2",

"179.767.293-23", "Masculino", "1955-11-30", "Professor", "Rua Cinema

Paradiso, 677", "Jd. das Palmeiras", "Bragança Paulista", "SP", "12906-

040", "(11)4032-3700", "(11)7309-1613", "[email protected]");

}

update_e = obterTempo(inicio);

System.out.println("\n");

System.out.println("Teste de consulta de objetos sem herança");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

buscar(i);

buscar(++i);

buscar(++i);

}

query_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

buscar(i);

buscar(++i);

buscar(++i);

}

query_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

buscar(i);

buscar(++i);

buscar(++i);

}

query_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

buscar(i);

buscar(++i);

buscar(++i);

}

query_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

buscar(i);

buscar(++i);

buscar(++i);

}

query_e = obterTempo(inicio);

System.out.println("\n");

System.out.println("Teste de remoção de objetos sem herança");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

deletar(i);

Page 89: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

76

deletar(++i);

deletar(++i);

}

delete_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

deletar(i);

deletar(++i);

deletar(++i);

}

delete_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

deletar(i);

deletar(++i);

deletar(++i);

}

delete_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

deletar(i);

deletar(++i);

deletar(++i);

}

delete_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

deletar(i);

deletar(++i);

deletar(++i);

}

delete_e = obterTempo(inicio);

System.out.println("-----------------------------------------------

-----");

System.out.println("--- TESTE DO BANCO DE DADOS ORIENTADO A OBJETOS

----");

System.out.println("--------------- sem herança ---------------");

System.out.println("-----------------------------------------------

-----");

System.out.println("inserção de " + TESTA_A + " objetos: " +

insert_a + " ms");

System.out.println("inserção de " + TESTA_B + " objetos: " +

insert_b + " ms");

System.out.println("inserção de " + TESTA_C + " objetos: " +

insert_c + " ms");

System.out.println("inserção de " + TESTA_D + " objetos: " +

insert_d + " ms");

System.out.println("inserção de " + TESTA_E + " objetos: " +

insert_e + " ms");

System.out.println("atualização de " + TESTA_A + " objetos: " +

update_a + " ms");

System.out.println("atualização de " + TESTA_B + " objetos: " +

update_b + " ms");

System.out.println("atualização de " + TESTA_C + " objetos: " +

update_c + " ms");

System.out.println("atualização de " + TESTA_D + " objetos: " +

update_d + " ms");

System.out.println("atualização de " + TESTA_E + " objetos: " +

update_e + " ms");

System.out.println("Consulta de " + TESTA_A + " objetos: " +

Page 90: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

77

query_a + " ms");

System.out.println("Consulta de " + TESTA_B + " objetos: " +

query_b + " ms");

System.out.println("Consulta de " + TESTA_C + " objetos: " +

query_c + " ms");

System.out.println("Consulta de " + TESTA_D + " objetos: " +

query_d + " ms");

System.out.println("Consulta de " + TESTA_E + " objetos: " +

query_e + " ms");

System.out.println("Remoção de " + TESTA_A + " objetos: " +

delete_a + " ms");

System.out.println("Remoção de " + TESTA_B + " objetos: " +

delete_b + " ms");

System.out.println("Remoção de " + TESTA_C + " objetos: " +

delete_c + " ms");

System.out.println("Remoção de " + TESTA_D + " objetos: " +

delete_d + " ms");

System.out.println("Remoção de " + TESTA_E + " objetos: " +

delete_e + " ms");

System.out.println("-----------------------------------------------

-----");

System.out.println("-----------------------------------------------

-----");

//COM HERANÇA

System.out.println("\n");

System.out.println("Teste de inserção de objetos com herança");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

inserir(i, "David Rodrigues Machado", "43.136.057-8",

"302.061.738-42", "Masculino", "1982-09-03", "Aluno", "Rua João Franco,

265", "Jd. São Cristovão", "Bragança Paulista", "SP", "12900-000",

"(11)4032-7493", "(11)9891-9560", "[email protected]", i, "José Maria

Rodrigues Machado", "Ativo", 50, "2009-10-02");

inserir(++i, "Roberto Garcia", "22.132.221-2", "256.216.235-

37", "Masculino", "1975-12-25", "Funcionario", "Av. José Gomes da Rocha

Leal, 1024", "Centro", "Atibaia", "SP", "11700-050", "(11)4089-7895",

"(11)8977-8799", "[email protected]", i, "52586/00215-SP", "2008-02-

18", 220, 30, "Aux. Administrativo");

inserir(++i, "Camila Aparecida Alves", "45.666.332-2",

"401.567.234-22", "Feminino", "1993-04-16", "Professor", "Travessa Itália,

34", "Parque Brasil", "Extrema", "MG", "14543-150", "(16)5211-3729",

"(16)7890-8927", "[email protected]", i, "22516/00115-SP", "2009-08-

05", 40, 50, "Web Design", "Fireworks, Dreamweaver, HTML, Flash");

}

insert_plus_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

inserir(i, "David Rodrigues Machado", "43.136.057-8",

"302.061.738-42", "Masculino", "1982-09-03", "Aluno", "Rua João Franco,

265", "Jd. São Cristovão", "Bragança Paulista", "SP", "12900-000",

"(11)4032-7493", "(11)9891-9560", "[email protected]", i, "José Maria

Rodrigues Machado", "Ativo", 50, "2009-10-02");

inserir(++i, "Roberto Garcia", "22.132.221-2", "256.216.235-

37", "Masculino", "1975-12-25", "Funcionario", "Av. José Gomes da Rocha

Page 91: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

78

Leal, 1024", "Centro", "Atibaia", "SP", "11700-050", "(11)4089-7895",

"(11)8977-8799", "[email protected]", i, "52586/00215-SP", "2008-02-

18", 220, 30, "Aux. Administrativo");

inserir(++i, "Camila Aparecida Alves", "45.666.332-2",

"401.567.234-22", "Feminino", "1993-04-16", "Professor", "Travessa Itália,

34", "Parque Brasil", "Extrema", "MG", "14543-150", "(16)5211-3729",

"(16)7890-8927", "[email protected]", i, "22516/00115-SP", "2009-08-

05", 40, 50, "Web Design", "Fireworks, Dreamweaver, HTML, Flash");

}

insert_plus_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

inserir(i, "David Rodrigues Machado", "43.136.057-8",

"302.061.738-42", "Masculino", "1982-09-03", "Aluno", "Rua João Franco,

265", "Jd. São Cristovão", "Bragança Paulista", "SP", "12900-000",

"(11)4032-7493", "(11)9891-9560", "[email protected]", i, "José Maria

Rodrigues Machado", "Ativo", 50, "2009-10-02");

inserir(++i, "Roberto Garcia", "22.132.221-2", "256.216.235-

37", "Masculino", "1975-12-25", "Funcionario", "Av. José Gomes da Rocha

Leal, 1024", "Centro", "Atibaia", "SP", "11700-050", "(11)4089-7895",

"(11)8977-8799", "[email protected]", i, "52586/00215-SP", "2008-02-

18", 220, 30, "Aux. Administrativo");

inserir(++i, "Camila Aparecida Alves", "45.666.332-2",

"401.567.234-22", "Feminino", "1993-04-16", "Professor", "Travessa Itália,

34", "Parque Brasil", "Extrema", "MG", "14543-150", "(16)5211-3729",

"(16)7890-8927", "[email protected]", i, "22516/00115-SP", "2009-08-

05", 40, 50, "Web Design", "Fireworks, Dreamweaver, HTML, Flash");

}

insert_plus_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

inserir(i, "David Rodrigues Machado", "43.136.057-8",

"302.061.738-42", "Masculino", "1982-09-03", "Aluno", "Rua João Franco,

265", "Jd. São Cristovão", "Bragança Paulista", "SP", "12900-000",

"(11)4032-7493", "(11)9891-9560", "[email protected]", i, "José Maria

Rodrigues Machado", "Ativo", 50, "2009-10-02");

inserir(++i, "Roberto Garcia", "22.132.221-2", "256.216.235-

37", "Masculino", "1975-12-25", "Funcionario", "Av. José Gomes da Rocha

Leal, 1024", "Centro", "Atibaia", "SP", "11700-050", "(11)4089-7895",

"(11)8977-8799", "[email protected]", i, "52586/00215-SP", "2008-02-

18", 220, 30, "Aux. Administrativo");

inserir(++i, "Camila Aparecida Alves", "45.666.332-2",

"401.567.234-22", "Feminino", "1993-04-16", "Professor", "Travessa Itália,

34", "Parque Brasil", "Extrema", "MG", "14543-150", "(16)5211-3729",

"(16)7890-8927", "[email protected]", i, "22516/00115-SP", "2009-08-

05", 40, 50, "Web Design", "Fireworks, Dreamweaver, HTML, Flash");

}

insert_plus_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

inserir(i, "David Rodrigues Machado", "43.136.057-8",

"302.061.738-42", "Masculino", "1982-09-03", "Aluno", "Rua João Franco,

265", "Jd. São Cristovão", "Bragança Paulista", "SP", "12900-000",

"(11)4032-7493", "(11)9891-9560", "[email protected]", i, "José Maria

Rodrigues Machado", "Ativo", 50, "2009-10-02");

inserir(++i, "Roberto Garcia", "22.132.221-2", "256.216.235-

37", "Masculino", "1975-12-25", "Funcionario", "Av. José Gomes da Rocha

Leal, 1024", "Centro", "Atibaia", "SP", "11700-050", "(11)4089-7895",

"(11)8977-8799", "[email protected]", i, "52586/00215-SP", "2008-02-

18", 220, 30, "Aux. Administrativo");

inserir(++i, "Camila Aparecida Alves", "45.666.332-2",

Page 92: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

79

"401.567.234-22", "Feminino", "1993-04-16", "Professor", "Travessa Itália,

34", "Parque Brasil", "Extrema", "MG", "14543-150", "(16)5211-3729",

"(16)7890-8927", "[email protected]", i, "22516/00115-SP", "2009-08-

05", 40, 50, "Web Design", "Fireworks, Dreamweaver, HTML, Flash");

}

insert_plus_e = obterTempo(inicio);

System.out.println("\n");

System.out.println("Teste de atualização de objetos com herança");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

alterar(i, "Jennifer Lynn Connelly", "22.123.485-2",

"131.245.213-53", "Feminino", "1970-12-12", "Aluno", "Av. Labirinto das

Flores, 56", "Vila Carreira", "Extrema", "MG", "14696-600", "(14)5055-

6351", "(16)8654-8986", "[email protected]", i, "Sarah Jessica

Parker", "Suspenso", 39, "1970-12-12");

alterar(++i, "Sabrina da Silva", "44.987.654-8", "310.534.400-

41", "Feminino", "1992-03-01", "Funcionario", "Rua 24, 34", "Recanto

Londrina", "Itatiba", "SP", "13426-230", "(11)4066-1334", "(11)1375-2985",

"[email protected]", i, "68630/01609-SP", "2009-09-25", 30, 40,

"Secretario (a)");

alterar(++i, "Rubens Ewald Filho", "20.311.215-2",

"179.767.293-23", "Masculino", "1955-11-30", "Professor", "Rua Cinema

Paradiso, 677", "Jd. das Palmeiras", "Bragança Paulista", "SP", "12906-

040", "(11)4032-3700", "(11)7309-1613", "[email protected]", i,

"29333/13422-SP", "1999-01-05", 220, 45, "Informática Básica", "Windows,

Word, Excel, Access");

}

update_plus_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

alterar(i, "Jennifer Lynn Connelly", "22.123.485-2",

"131.245.213-53", "Feminino", "1970-12-12", "Aluno", "Av. Labirinto das

Flores, 56", "Vila Carreira", "Extrema", "MG", "14696-600", "(14)5055-

6351", "(16)8654-8986", "[email protected]", i, "Sarah Jessica

Parker", "Suspenso", 39, "1970-12-12");

alterar(++i, "Sabrina da Silva", "44.987.654-8", "310.534.400-

41", "Feminino", "1992-03-01", "Funcionario", "Rua 24, 34", "Recanto

Londrina", "Itatiba", "SP", "13426-230", "(11)4066-1334", "(11)1375-2985",

"[email protected]", i, "68630/01609-SP", "2009-09-25", 30, 40,

"Secretario (a)");

alterar(++i, "Rubens Ewald Filho", "20.311.215-2",

"179.767.293-23", "Masculino", "1955-11-30", "Professor", "Rua Cinema

Paradiso, 677", "Jd. das Palmeiras", "Bragança Paulista", "SP", "12906-

040", "(11)4032-3700", "(11)7309-1613", "[email protected]", i,

"29333/13422-SP", "1999-01-05", 220, 45, "Informática Básica", "Windows,

Word, Excel, Access");

}

update_plus_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

alterar(i, "Jennifer Lynn Connelly", "22.123.485-2",

"131.245.213-53", "Feminino", "1970-12-12", "Aluno", "Av. Labirinto das

Flores, 56", "Vila Carreira", "Extrema", "MG", "14696-600", "(14)5055-

6351", "(16)8654-8986", "[email protected]", i, "Sarah Jessica

Parker", "Suspenso", 39, "1970-12-12");

alterar(++i, "Sabrina da Silva", "44.987.654-8", "310.534.400-

Page 93: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

80

41", "Feminino", "1992-03-01", "Funcionario", "Rua 24, 34", "Recanto

Londrina", "Itatiba", "SP", "13426-230", "(11)4066-1334", "(11)1375-2985",

"[email protected]", i, "68630/01609-SP", "2009-09-25", 30, 40,

"Secretario (a)");

alterar(++i, "Rubens Ewald Filho", "20.311.215-2",

"179.767.293-23", "Masculino", "1955-11-30", "Professor", "Rua Cinema

Paradiso, 677", "Jd. das Palmeiras", "Bragança Paulista", "SP", "12906-

040", "(11)4032-3700", "(11)7309-1613", "[email protected]", i,

"29333/13422-SP", "1999-01-05", 220, 45, "Informática Básica", "Windows,

Word, Excel, Access");

}

update_plus_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

alterar(i, "Jennifer Lynn Connelly", "22.123.485-2",

"131.245.213-53", "Feminino", "1970-12-12", "Aluno", "Av. Labirinto das

Flores, 56", "Vila Carreira", "Extrema", "MG", "14696-600", "(14)5055-

6351", "(16)8654-8986", "[email protected]", i, "Sarah Jessica

Parker", "Suspenso", 39, "1970-12-12");

alterar(++i, "Sabrina da Silva", "44.987.654-8", "310.534.400-

41", "Feminino", "1992-03-01", "Funcionario", "Rua 24, 34", "Recanto

Londrina", "Itatiba", "SP", "13426-230", "(11)4066-1334", "(11)1375-2985",

"[email protected]", i, "68630/01609-SP", "2009-09-25", 30, 40,

"Secretario (a)");

alterar(++i, "Rubens Ewald Filho", "20.311.215-2",

"179.767.293-23", "Masculino", "1955-11-30", "Professor", "Rua Cinema

Paradiso, 677", "Jd. das Palmeiras", "Bragança Paulista", "SP", "12906-

040", "(11)4032-3700", "(11)7309-1613", "[email protected]", i,

"29333/13422-SP", "1999-01-05", 220, 45, "Informática Básica", "Windows,

Word, Excel, Access");

}

update_plus_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

alterar(i, "Jennifer Lynn Connelly", "22.123.485-2",

"131.245.213-53", "Feminino", "1970-12-12", "Aluno", "Av. Labirinto das

Flores, 56", "Vila Carreira", "Extrema", "MG", "14696-600", "(14)5055-

6351", "(16)8654-8986", "[email protected]", i, "Sarah Jessica

Parker", "Suspenso", 39, "1970-12-12");

alterar(++i, "Sabrina da Silva", "44.987.654-8", "310.534.400-

41", "Feminino", "1992-03-01", "Funcionario", "Rua 24, 34", "Recanto

Londrina", "Itatiba", "SP", "13426-230", "(11)4066-1334", "(11)1375-2985",

"[email protected]", i, "68630/01609-SP", "2009-09-25", 30, 40,

"Secretario (a)");

alterar(++i, "Rubens Ewald Filho", "20.311.215-2",

"179.767.293-23", "Masculino", "1955-11-30", "Professor", "Rua Cinema

Paradiso, 677", "Jd. das Palmeiras", "Bragança Paulista", "SP", "12906-

040", "(11)4032-3700", "(11)7309-1613", "[email protected]", i,

"29333/13422-SP", "1999-01-05", 220, 45, "Informática Básica", "Windows,

Word, Excel, Access");

}

update_plus_e = obterTempo(inicio);

System.out.println("\n");

System.out.println("Teste de consulta de objetos com herança");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

Page 94: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

81

buscarAluno(i);

buscarFuncionario(++i);

buscarProfessor(++i);

}

query_plus_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

buscarAluno(i);

buscarFuncionario(++i);

buscarProfessor(++i);

}

query_plus_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

buscarAluno(i);

buscarFuncionario(++i);

buscarProfessor(++i);

}

query_plus_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

buscarAluno(i);

buscarFuncionario(++i);

buscarProfessor(++i);

}

query_plus_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

buscarAluno(i);

buscarFuncionario(++i);

buscarProfessor(++i);

}

query_plus_e = obterTempo(inicio);

System.out.println("\n");

System.out.println("Teste de remoção de objetos com herança");

System.out.println("\n");

System.out.println("TESTANDO, AGUARDE... ");

System.out.println("\n");

inicio = iniciar();

for (int i = 1; i <= TESTA_A; i++) {

deletar(i);

deletar(++i);

deletar(++i);

}

delete_plus_a = obterTempo(inicio);

for (int i = TESTA_A + 1; i <= TESTA_B; i++) {

deletar(i);

deletar(++i);

deletar(++i);

}

delete_plus_b = obterTempo(inicio);

for (int i = TESTA_B + 1; i <= TESTA_C; i++) {

deletar(i);

deletar(++i);

deletar(++i);

}

delete_plus_c = obterTempo(inicio);

for (int i = TESTA_C + 1; i <= TESTA_D; i++) {

deletar(i);

Page 95: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

82

deletar(++i);

deletar(++i);

}

delete_plus_d = obterTempo(inicio);

for (int i = TESTA_D + 1; i <= TESTA_E; i++) {

deletar(i);

deletar(++i);

deletar(++i);

}

delete_plus_e = obterTempo(inicio);

System.out.println("-----------------------------------------------

-----");

System.out.println("--- TESTE DO BANCO DE DADOS ORIENTADO A OBJETOS

----");

System.out.println("-------------------- com herança --------------

-----");

System.out.println("-----------------------------------------------

-----");

System.out.println("inserção de " + TESTA_A + " objetos: " +

insert_plus_a + " ms");

System.out.println("inserção de " + TESTA_B + " objetos: " +

insert_plus_b + " ms");

System.out.println("inserção de " + TESTA_C + " objetos: " +

insert_plus_c + " ms");

System.out.println("inserção de " + TESTA_D + " objetos: " +

insert_plus_d + " ms");

System.out.println("inserção de " + TESTA_E + " objetos: " +

insert_plus_e + " ms");

System.out.println("atualização de " + TESTA_A + " objetos: " +

update_plus_a + " ms");

System.out.println("atualização de " + TESTA_B + " objetos: " +

update_plus_b + " ms");

System.out.println("atualização de " + TESTA_C + " objetos: " +

update_plus_c + " ms");

System.out.println("atualização de " + TESTA_D + " objetos: " +

update_plus_d + " ms");

System.out.println("atualização de " + TESTA_E + " objetos: " +

update_plus_e + " ms");

System.out.println("Consulta de " + TESTA_A + " objetos: " +

query_plus_a + " ms");

System.out.println("Consulta de " + TESTA_B + " objetos: " +

query_plus_b + " ms");

System.out.println("Consulta de " + TESTA_C + " objetos: " +

query_plus_c + " ms");

System.out.println("Consulta de " + TESTA_D + " objetos: " +

query_plus_d + " ms");

System.out.println("Consulta de " + TESTA_E + " objetos: " +

query_plus_e + " ms");

System.out.println("Remoção de " + TESTA_A + " objetos: " +

delete_plus_a + " ms");

System.out.println("Remoção de " + TESTA_B + " objetos: " +

delete_plus_b + " ms");

System.out.println("Remoção de " + TESTA_C + " objetos: " +

delete_plus_c + " ms");

System.out.println("Remoção de " + TESTA_D + " objetos: " +

delete_plus_d + " ms");

System.out.println("Remoção de " + TESTA_E + " objetos: " +

delete_plus_e + " ms");

System.out.println("-----------------------------------------------

Page 96: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

83

-----");

System.out.println("-----------------------------------------------

-----");

System.out.println("\n");

System.out.println("FIM DO TESTE");

db.close();

}

public static ObjectContainer db =

Db4o.openFile("BancoEscolaInformatica.yap");

}

Classe Main:

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package testeescolainformatica;

import java.sql.SQLException;

/**

*

* @author David

*/

public class Main {

/**

* @param args the command line arguments

*/

public static void main(String[] args) throws SQLException {

TesteRelacional r = new TesteRelacional();

TesteObjetos o = new TesteObjetos();

}

}

Page 97: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

84

Apêndice B – Resultados dos Testes nos Bancos de Dados

Resultado dos testes no Banco de Dados Relacional com uma única tabela:

1º teste com uma única tabela 900 1800 2700 3600 4500

inserção 30326 59529 87703 115268 143130 atualização 27347 54428 81915 108576 136328

consulta 421 811 1139 1451 1810 remoção 27815 56612 84006 111992 139573

2º teste com uma única tabela 900 1800 2700 3600 4500

inserção 28127 56737 83756 111524 139136 atualização 28143 57081 85785 113631 141773

consulta 468 858 1186 1513 1841 remoção 28470 57907 86939 116235 145298

3º teste com uma única tabela 900 1800 2700 3600 4500

inserção 29453 57081 84864 111961 138357 atualização 27050 53398 79840 107234 134487

consulta 437 827 1170 1498 1841 remoção 27113 55458 82618 109933 137498

Média do teste com uma única tabela 900 1800 2700 3600 4500

inserção 29302 57782,33333 85441 112917,6667 140207,6667 atualização 27513,33333 54969 82513,33333 109813,6667 137529,3333

consulta 442 832 1165 1487,333333 1830,666667 remoção 27799,33333 56659 84521 112720 140789,6667

Desvio Padrão do teste com uma única tabela 900 1800 2700 3600 4500

inserção 1107,249294 1522,405115 2035,779703 2047,14248 2560,612101 atualização 565,1657574 1900,166572 3017,326355 3373,316815 3788,64756

consulta 23,89560629 23,89560629 23,89560629 32,34707612 17,89785834 remoção 678,6356411 1225,176314 2206,055076 3213,454372 4039,82776

Número de registros Tempo em milisegundos

Page 98: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

85

Resultado dos testes no Banco de Dados Relacional através de procedures SQL com uma única tabela:

1º teste de procedures SQL com uma unica tabela

900 1800 2700 3600 4500

inserção 28190 55723 85160 109699 139558 atualização 28392 57907 86612 114286 138325

consulta 141 234 296 421 1201 remoção 29468 55817 84084 111072 137249

2º teste de procedures SQL com uma unica tabela

900 1800 2700 3600 4500

inserção 27066 54787 84037 111711 140119 atualização 27581 54709 85067 110869 137077

consulta 124 203 312 406 578 remoção 27799 55412 85426 111212 139495

3º teste de procedures SQL com uma unica tabela

900 1800 2700 3600 4500

inserção 28033 57939 82992 108529 127655 atualização 28033 56550 81447 102133 132054

consulta 125 218 312 484 593

remoção 28314 56815 84427 102570 130151

Média das procedures SQL com uma unica tabela

900 1800 2700 3600 4500

inserção 27763 56149,67 84063 109979,7 135777,3 atualização 28002 56388,67 84375,33 109096 135818,7

consulta 130 218,3333 306,6667 437 790,6667 remoção 28527 56014,67 84645,67 108284,7 135631,7

Desvio Padrão das procedures SQL com uma unica tabela

900 1800 2700 3600 4500

inserção 608,7027 1618,737 1084,234 1609,46 7039,738

atualização 406,3877 1605,093 2651,058 6267,495 3319,475 consulta 9,539392 15,50269 9,237604 41,3884 355,4382 remoção 854,6444 722,0847 697,2104 4949,542 4877,439

Número de registros Tempo em milisegundos

Page 99: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

86

Resultado dos testes no Banco de Dados Orientado a Objetos sem herança:

1º teste com objetos sem herança 900 1800 2700 3600 4500

inserção 171 281 343 421 483 atualização 78188 158262 238446 318818 399298

consulta 79373 158746 238165 319894 401123 remoção 70637 121149 158324 179041 184376

2º teste com objetos sem herança 900 1800 2700 3600 4500

inserção 172 265 343 406 468

atualização 79794 160852 242253 323622 405070 consulta 79997 159947 240021 319971 399921 remoção 70466 120370 184595 160946 190227

3º teste com objetos sem herança 900 1800 2700 3600 4500

inserção 171 265 343 405 468 atualização 80137 164314 248679 333356 418173

consulta 83616 167107 250755 334324 417940 remoção 69389 120182 160103 187806 195247

Média dos objetos sem herança 900 1800 2700 3600 4500

inserção 171,3333333 270,3333333 343 410,6666667 473 atualização 79373 161142,6667 243126 325265,3333 407513,6667

consulta 80995,33333 161933,3333 242980,3333 324729,6667 406328

remoção 70164 120567 167674 175931 189950

Desvio padrão dos objetos sem herança 900 1800 2700 3600 4500

inserção 0,577350269 9,237604307 0 8,96288644 8,660254038 atualização 1040,471528 3036,452096 5172,056554 7407,008123 9671,868296

consulta 2290,909063 4520,588494 6796,70989 8309,025595 10074,22995

remoção 676,5936742 512,717271 14680,9874 13697,4076 5440,791027

Número de registros Tempo em milisegundos

Page 100: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

87

Resultado dos testes no Banco de Dados Relacional com tabelas relacionadas:

1º teste com tabelas relacionadas 900 1800 2700 3600 4500

inserção 75941 148465 220007 293951 368980 atualização 28464 56288 86264 116287 145800

consulta 1119 2197 3293 4404 5516 remoção 28433 56438 84619 113269 140625

2º teste com tabelas relacionadas 900 1800 2700 3600 4500

inserção 74552 148106 223741 300646 377165

atualização 30452 60973 92360 123529 154760 consulta 608 1217 1841 2449 3073 remoção 29983 58188 86424 114442 142600

3º teste com tabelas relacionadas 900 1800 2700 3600 4500

inserção 75145 147077 218621 291564 366264 atualização 28782 57517 86954 116251 145033

consulta 624 1264 1903 2574 3214 remoção 28485 57299 85129 113537 141679

Média do teste com tabelas relacionadas 900 1800 2700 3600 4500

inserção 75212,66667 147882,6667 220789,6667 295387 370803 atualização 29232,66667 58259,33333 88526 118689 148531

consulta 783,6666667 1559,333333 2345,666667 3142,333333 3934,333333

remoção 28967 57308,33333 85390,66667 113749,3333 141634,6667

Desvio Padrão do teste com tabelas relacionadas 900 1800 2700 3600 4500

inserção 696,9679572 720,4473148 2648,211724 4708,211231 5674,54377 atualização 1067,877022 2429,115134 3338,216889 4191,601603 5408,086815

consulta 290,5173546 552,7353194 821,000203 1094,421461 1371,576587

remoção 880,2658689 875,0373325 930,5150903 614,6513917 988,2460895

Número de registros Tempo em milisegundos

Page 101: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

88

Resultado dos testes no Banco de Dados Relacional através de procedures SQL com tabelas relacionadas:

1º teste de procedures SQL com tabelas relacionadas 900 1800 2700 3600 4500

inserção 72166 142178 217807 291766 374307 atualização 27035 54834 84599 112726 142381

consulta 203 531 811 983 1388 remoção 27425 57408 85925 113365 136578

2º teste de procedures SQL com tabelas relacionadas 900 1800 2700 3600 4500

inserção 73102 145892 216107 285792 368238 atualização 29437 58469 86845 115674 141492

consulta 296 515 795 905 1372 remoção 27939 55723 84443 110791 141212

3º teste de procedures SQL com tabelas relacionadas 900 1800 2700 3600 4500

inserção 69248 140650 204781 267930 385632 atualização 26957 54304 81525 102882 135299

consulta 249 468 671 983 1747 remoção 26645 56503 81042 101603 130884

Média das procedures SQL com tabelas relacionadas 900 1800 2700 3600 4500

inserção 71505,33 142906,7 212898,3 281829,3 376059 atualização 27809,67 55869 84323 110427,3 139724

consulta 249,3333 504,6667 759 957 1502,333 remoção 27336,33 56544,67 83803,33 108586,3 136224,7

Desvio Padrão das procedures SQL com tabelas relacionadas 900 1800 2700 3600 4500

inserção 2010,147 2695,896 7081,019 12402,25 8828,36 atualização 1409,852 2267,206 2670,718 6698,635 3857,855

consulta 46,5009 32,7465 76,62898 45,03332 212,0385 remoção 651,5407 843,2724 2503,558 6183,169 5173,058

Número de registros Tempo em milisegundos

Page 102: COMPARAÇÃO ENTRE BANCO DE DADOS RELACIONAIS E …lyceumonline.usf.edu.br/salavirtual/documentos/1716.pdf · PALAVRAS-CHAVE: Banco de Dados Relacional, Banco de Dados Orientado a

89

Resultado dos testes no Banco de Dados Orientado a Objetos com herança:

1º teste dos objetos com herança 900 1800 2700 3600 4500

inserção 109 219 312 453 546 atualização 43680 87781 131368 175095 218946

consulta 43493 88498 141867 195043 248235 remoção 99380 170396 214919 241907 249457

2º teste dos objetos com herança 900 1800 2700 3600 4500

inserção 125 218 312 421 515

atualização 42822 86127 128902 171834 215046 consulta 43227 86533 129760 172972 216138 remoção 75067 136437 181615 208977 216559

3º teste dos objetos com herança 900 1800 2700 3600 4500

inserção 123 225 325 424 528 atualização 45334 90715 135315 180243 225280

consulta 44804 89529 134301 178979 223642 remoção 91447 154315 201365 227432 234764

Média dos objetos com herança 900 1800 2700 3600 4500

inserção 119 220,6666667 316,3333333 432,6666667 529,6666667 atualização 43945,33333 88207,66667 131861,6667 175724 219757,3333

consulta 43841,33333 88186,66667 135309,3333 182331,3333 229338,3333

remoção 88631,33333 153716 199299,6667 226105,3333 233593,3333

Desvio Padrão dos objetos com herança 900 1800 2700 3600 4500

inserção 8,717797887 3,785938897 7,505553499 17,67295486 15,56705924 atualização 1276,846637 2323,568233 3234,875938 4239,640433 5165,015521

consulta 844,2359465 1522,071067 6116,160097 11410,99752 16789,59536

remoção 12398,64817 16987,42244 16747,78509 16505,03736 16480,21378

Número de registros Tempo em milisegundos