Você está na página 1de 84

1

SERVIÇO NACIONAL DE APRENDIZAGEM


COMERCIAL DO RIO GRANDE DO SUL

FACULDADE DE TECNOLOGIA SENAC PASSO FUNDO

CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE


E DESENVOLVIMENTO DE SISTEMAS

JMA – Sistema de Vídeo-Locadora

Marcos Felipe Viecieli Padilha

Passo Fundo, dezembro de 2008


2

Marcos Felipe Viecieli Padilha

JMA – Sistema de Vídeo-Locadora

Trabalho de Conclusão de Curso, apresentado como


requisito parcial para obtenção do grau de
Tecnólogo no Curso de Superior de Tecnologia em
Análise e Desenvolvimento de Sistemas da
Faculdade de Tecnologia Senac Passo Fundo.

Orientador: Prof. Esp. João Roberto Telles

PASSO FUNDO
2008
3

Marcos Felipe Viecieli Padilha

JMA – Sistema de Vídeo-Locadora

Trabalho de Conclusão de Curso aprovado


pela banca examinadora para obtenção do
Grau de Tecnólogo, no Curso Superior em
Análise e Desenvolvimento de Sistemas da
Faculdade de Tecnologia Senac Passo Fundo

Aprovado pela banca examinadora em 09 de dezembro de 2008.

BANCA EXAMINADORA

________________________________________________________________________
Prof. Esp. João Roberto Telles – Senac / RS.
Orientador

_________________________________________________________________________
Prof. MSc. Josué Toebe – Senac / RS.

__________________________________________________________________________
Prof. Esp. Álvaro Nunes Lemos Melo – Senac / RS.
4

Dedico este trabalho a meus pais Antonio e Irene,


à minha irmã Simone e minha namorada e fiel
companheira Aline, por se constituírem diferentemente
enquanto pessoas, igualmente belas e admiráveis em essência,
estímulos que me impulsionaram a buscar vida nova a cada dia,
sou eternamente grato por terem aceito se privar de
minha companhia pelos estudos, concedendo a mim
a oportunidade de me realizar ainda mais.
5

Agradeço ao meu Orientador Prof. e Amigo JOÃO ROBERTO TELLES

pelo incentivo, simpatia e presteza no auxílio às atividades e

conversas sobre o andamento deste Trabalho de Conclusão de Curso,

com seu espírito inovador. Aos Colegas e Amigos FELIPE THESARI LARA

e DIEGO ARTUR DE CARVALHO pela espontaneidade e alegria na troca de

informações e materiais numa rara demonstração de amizade e solidariedade.

A minha cunhada ANGELA ZANIN que se mostrou uma verdadeira amiga

durante essa jornada. A todos os amigos que estiveram comigo nessa caminhada.

E finalmente a DEUS por permitir que este sonho fosse realizado

sendo sempre apoio forte nos momentos de fraqueza.


6

RESUMO
Este trabalho de conclusão de curso consiste no desenvolvimento de um sistema
de informação para a gestão de Vídeos-Locadora, sendo que este foi desenvolvido tomando
por base os conceitos e modelos de sistemas de informação, sendo seu principal objetivo
agilizar o processo de locação de uma mídia de vídeo. Na modelagem deste sistema fez-se uso
da UML. Para o seu desenvolvimento, foi optado pela linguagem de programação Java, por
ser uma linguagem baseada nos conceitos de orientação a objetos, utilizou-se também os
padrões MVC. O Sistema é executado a partir de uma plataforma desktop, independente do
sistema operacional utilizado. Para o armazenamento de dados, foi utilizado o banco de dados
PostgreSQL

Palavras chave: Java, Orientação a Objetos, Vídeo-Locadora, PostgreSQL, MVC,


UML.
7

ABSTRACT

This work of course conclusion consists of the development of a system of


information for the management of Video Store, being that this was developed taking for base
the concepts and models of information systems, being its main objective to speed the process
of location of a video media. For modeling of this system, the UML was used. For its
development, it was opted by the programming language Java, for being a language based on
Object-Oriented Programming also used standards MVC. The System is executed from a
platform desktop, independent of the used operational system. For the storage of data, the data
base PostgreSQL was used.

Words key: Java, Object-Oriented Programming, Video Store, PostgreSQL,


MVC, UML.
8

LISTA DE ILUSTRAÇÕES

Figura 1 Interface do NetBeans ................................................................................................ 19


Figura 2 Exemplo de diagrama de classes................................................................................ 22
Figura 3 Exemplo de Diagrama de Caso de Uso...................................................................... 23
Figura 4 Diagrama de Seqüência.............................................................................................. 24
Figura 5 interface de trabalho do ArgoUML............................................................................ 25
Figura 6 Funcionamento MVC................................................................................................. 28
Figura 7 interface do pgAdmin III............................................................................................ 29
Figura 8 Interface do iReport 3.0.............................................................................................. 30
Figura 9 Modelo em cascata proposto por Yourdon ............................................................... 33
Figura 10 interface de cadastro de clientes do VideoSis .......................................................... 39
Figura 11 interface do menu de relatórios do VídeoSis ........................................................... 39
Figura 12 Relatório de clientes................................................................................................. 40
Figura 13 Diagrama de entidade e relacionamento .................................................................. 41
Figura 14 Diagrama de classes parte 1 ..................................................................................... 43
Figura 15 Diagrama de classes parte 2 ..................................................................................... 46
Figura 16 Cadastro de clientes na vídeo-locadora.................................................................... 49
Figura 17 chegada de um novo filme para a vídeo-locadora.................................................... 50
Figura 18 Tratamento da locação e/ou devolução de uma mídia ............................................. 51
Figura 19 Diagrama de seqüência ............................................................................................ 52
Figura 20 Interface do Cadastro de Atores............................................................................... 53
Figura 21 Interface de Manutenção de Locações ..................................................................... 54
Figura 22 interface de consulta de gêneros .............................................................................. 55
Figura 23 Relatório de Clientes do JMA.................................................................................. 56
Figura 24 Aplicação desenvolvida em Flex + Java .................................................................. 58
LISTA DE ABREVIATURAS

JMA – JMA Sistema de Vídeo-Locadora


CPF – Cadastro de Pessoas Físicas
IDE – Integrated Development Environment
POO – Programação Orientada a Objetos
OOP – Object-Oriented Programming
UML – Unified Modeling Language
API – Application Programming Interface
JDBC – Java Database Connectivity
ODBC – Open Database Connectivity
XML – Extensible Markup Language
SQL – Structured Query Language
HQL – Hibernate Query Language
MVC – Model View Controller
WYSIWYG – What You See Is What You Get
GoF – Gang of Four
MER – Modelo Entidade-Relacionamento
PF – Pessoa Física
PJ – Pessoa Jurídica
CNPJ – Cadastro Nacional de Pessoa Jurídica
FK – Foreign Key
PK – Primary Key
RG – Registro Geral
10

SUMÁRIO

1 INTRODUÇÃO..................................................................................................................... 12
1.1 Motivação ...................................................................................................................... 12
1.2 Objetivo Geral................................................................................................................ 12
1.3 Objetivos Específicos .................................................................................................... 13
2 REVISÃO BIBLIOGRÁFICA E FUNDAMENTAÇÃO TEÓRICA................................... 15
2.1 Orientação a Objetos...................................................................................................... 15
2.2 Java ................................................................................................................................ 18
2.3 IDE NetBeans ................................................................................................................ 18
2.4 UML............................................................................................................................... 20
2.4.1 Diagrama de Classes .............................................................................................. 21
2.5 ArgoUML ...................................................................................................................... 25
2.6 JDBC (Java Database Connectivity).............................................................................. 26
2.7 Hibernate........................................................................................................................ 27
2.8 MVC .............................................................................................................................. 27
2.9 PostgreSQL.................................................................................................................... 28
2.9.1 pgAdmin III............................................................................................................ 29
2.10 JasperReport / iReport 3.x ........................................................................................... 30
2.11 Engenharia de Software ............................................................................................... 31
2.11.1 Processo de Engenharia de Software ................................................................... 31
2.11.2 Modelos de Processo de Software........................................................................ 32
2.12 Padrões de Projeto de Software ................................................................................... 33
2.12.1 História dos Padrões de Projeto ........................................................................... 34
2.12.2 Padrões GoF ......................................................................................................... 35
3 DOMÍNIO DA APLICAÇÃO............................................................................................... 37
3.1 A Vídeo-Locadora ......................................................................................................... 37
3.2 O Funcionamento da Vídeo-Locadora........................................................................... 38
4 ANÁLISE E DESENVOLVIMENTO DO SISTEMA ......................................................... 41
4.1 Diagrama de Entidade-Relacionamento ........................................................................ 41
4.2 Dicionário de dados ....................................................................................................... 42
4.3 Diagrama de Classes Parte 1.......................................................................................... 43
4.4 Diagrama de Classes Parte 2.......................................................................................... 46
4.5 Diagramas de Caso de Uso ............................................................................................ 49
4.6 Diagramas de Seqüência................................................................................................ 51
4.7 Interfaces do Sistema JMA ............................................................................................ 53
5 CONSIDERAÇÕES FINAIS ................................................................................................ 57
6 REFERÊNCIAS BIBLIOGRÁFICAS .................................................................................. 59
7 ANEXO A ............................................................................................................................. 61
12

1 INTRODUÇÃO

1.1 Motivação

A JMA – Sistema de Vídeo-Locadora, teve como motivação base para o seu


desenvolvimento, a realização de uma análise a nível estadual dos sistemas existes para este
ramo de atividade, onde foi detectada uma grande necessidade neste nicho de mercado, de um
software portável – com capacidade de adaptação às mais diversas plataformas de Sistema
Operacional – utilizando tecnologias atualmente consideradas de ponta, não sendo necessário
ao proprietário desta vídeo-locadora investir um alto valor em hardware para que o software
viesse a funcionar adequadamente, com esta análise, também foi detectada a necessidade de
interfaces mais amigáveis e intuitivas para este sistema facilitando assim o seu uso no dia-a-
dia.

1.2 Objetivo Geral

Adota-se como objetivo principal o desenvolvimento de um sistema portável entre


plataformas, que seja de fácil utilização e compreensão, visando um controle completo sobre
locações e cadastros em geral, tais informações deverão ser exibidas através de relatórios
gerenciais e também de consultas diretamente em tela.
13

1.3 Objetivos Específicos

O JMA – Sistema de Vídeo-Locadora tem como objetivo específico principal


controlar as locações de mídias efetuadas pelos clientes. Com isto, temos por objetivos na
parte de cadastros:
• Controlar cadastro de atores;
• Controlar cadastro gêneros;
• Controlar cadastro categorias;
• Controlar cadastro filmes;
• Controlar cadastro mídias;
• Controlar cadastro clientes;
• Controlar cadastro autorizados;
• Controlar cadastro fornecedores;
• Controlar cadastro cidades;

No quesito de manutenções do sistema o JMA trará:


• Manutenção de locações;
• Manutenção de reservas;

Quanto a consultas:
• Consulta ao acervo;
• Consulta de filmes já assistidos pelo cliente;
• Consulta de mídias locadas no período;

No que se refere a relatórios o JMA implementará:


• Relatório de atores;
• Relatório de clientes;
• Relatório de fornecedores;
14

• Relatório de mídias por filme;


• Relatório de mídias locadas no período;
• Relatório de reservas em aberto no período;
• Relatório de lucratividade por gênero;
• Relatório de lucratividade por filme;
• Relatório de lucratividade por ator;

A análise de requisitos através de reuniões com o cliente que irá utilizar o


software, escolhendo a linguagem de programação mais adequada a situação, juntamente com
um banco de dados robusto e de grande prestígio na comunidade em geral, farão com que o
JMA proporcione uma boa impressão no cliente solicitante tendo em vista que o software
atende as necessidades levantadas pelo cliente.
15

2 REVISÃO BIBLIOGRÁFICA E FUNDAMENTAÇÃO


TEÓRICA

O JMA – Sistema de Vídeo Locadora, foi desenvolvido para suprir a essa


necessidade que o mercado regional/estadual possui, utilizando tecnologias de ponta como
Java, PostgreSQL, JasperReport/iReport, Hibernate, IDE NetBeans e Power*Architect Data
Modeling Tool.

2.1 Orientação a Objetos

A Orientação a objetos, também conhecida como Programação Orientada a


Objetos (POO), do inglês Object-Oriented Programming (OOP), é um paradigma de análise,
projeto, programação de sistemas de software baseado na representação de objetos de uma
forma bastante natural, dessa forma aproximando os objetos virtuais ao mundo real. Essa
forma de trabalhar, faz com que questões complexas sejam compreendidas com uma grande
facilidade diminuindo assim, consideravelmente, a manutenção dada ao sistema quando
utilizamos o paradigma orientado a objetos.
O paradigma de orientação a objetos tem como princípios básicos o
reaproveitamento de código escrito e o aumento da capacidade de manutenção dos sistemas.
Ao definirmos os objetos de um software, automaticamente estaremos definindo também as
suas funções, as quais recebem o nome de “métodos”.
16

Cada objeto armazena seus atributos e métodos e é representado por uma classe,
classes estas que normalmente são modeladas através da linguagem UML (Linguagem de
Modelagem Unificada), uma classe é responsável por determinar o comportamento (definido
nos métodos) e estados possíveis (definido nos atributos) de seus objetos, assim como o
relacionamento com outros objetos.
Algumas linguagens de programação foram criadas tomando por base os
conceitos de orientação a objetos, outras, tiveram estes conceitos agregados ao seu contexto,
linguagens estas que possuem suporte a orientação a objetos
Exemplo de linguagens que criadas com base nos conceitos de orientação a
objetos:
• Smalltalk;
• Python;
• Ruby;
• C++;
• Object Pascal;
• Java;
• C#;

Exemplo de linguagens com suporte a orientação a objetos:


• Perl (a partir da versão 5);
• PHP (a partir da versão 4.0);
• ColdFusion;
• Javascript;
• ActionScript;
• VB.NET;

Alguns conceitos fundamentais que o desenvolvedor deve ser conhecedor para


trabalhar com linguagens orientadas a objetos:
• Classe: Representa um objeto ou um conjunto deles, com características afins. Uma
classe define o comportamento dos objetos e quais estados ele é capaz de manter.
Exemplo de classe: Os seres humanos.
• Objeto: É a instância de uma classe, é capaz de armazenar estados, se relaciona com
17

outros objetos através de mensagens. Exemplo de objetos da classe Humanos: Aline,


João, Marcos.
• Atributos: São as características de um objeto. Exemplo: Funcionário: nome, CPF, etc.
• Estados: São os valores que cada atributo recebe. Exemplo: o estado do atributo nome
é Aline.
• Métodos: Define as habilidades dos objetos. Aline é uma instância da classe Pessoa,
portanto tem habilidade para falar, implementada através do método falar(), porém a
ação só ocorre quando o método é invocado através do objeto. Normalmente uma
classe é composta por vários métodos, que no caso da classe Pessoa poderiam ser
andar(), pular().
• Mensagem: É a chamada a um objeto para invocar seus métodos.
• Sobrecarga: É a utilização do mesmo nome para métodos ou símbolos com operações
ou funcionalidades distintas, diferenciando-se apenas pela sua assinatura. Exemplo:
Um método Pessoa que recebe como parâmetro dois atributos (nome, CPF) e outro
método Pessoa recebe como parâmetro (nome, CPF, endereço).
• Herança: também conhecida como generalização é a forma através da qual uma classe
(nessa forma denominada subclasse) estende de outra classe (nessa forma denominada
superclasse). Exemplo: Um retângulo é um quadrilátero, o retângulo é um tipo
específico de quadrilátero, quadrilátero é a superclasse, retângulo é a subclasse, sendo
assim não se pode dizer que um quadrilátero é um retângulo.
• Associação: Através desta um objeto utiliza recursos de outros. Exemplo: Pessoa usa
um celular.
• Encapsulamento: Forma pela qual fica impedido o acesso direto ao estado de um
objeto, separando assim aspectos internos e externos de um objeto. Exemplo: Não é
necessário conhecer os funcionamento interno de um motor para utilizá-lo.
• Abstração: é a habilidade de concentrar nos aspectos essenciais de um contexto
qualquer, ignorando características menos importantes ou acidentais.
• Polimorfismo: é o princípio pelo qual duas ou mais classes derivadas de uma mesma
superclasse podem invocar métodos que têm a mesma assinatura (lista de parâmetros e
retorno) mas comportamentos distintos, especializados para cada classe derivada,
usando para tanto uma referência a um objeto do tipo da superclasse.
• Interface: é um contrato entre a classe e o mundo externo. Quando uma classe
18

implementa uma interface, ela está comprometida a fornecer o comportamento


publicado pela interface.

2.2 Java

Java é uma linguagem de programação orientada a objetos que ao invés de ser


compilada para um código nativo, por exemplo, um executável da plataforma windows, é
compilada para um bytecode1, o qual é executado por uma máquina virtual java, que esta é
um programa que carrega e executa os aplicativos Java, convertendo-os bytecodes em código
executável de máquina. A JVM é responsável pelo gerenciamento dos aplicativos, à medida
que são executados.
Graças à máquina virtual Java, os programas escritos em Java podem funcionar
em qualquer plataforma de hardware e software que possua uma versão da JVM, tornando
assim essas aplicações independentes da plataforma onde funcionam. tendo como
características além da orientação a objetos, e a portabilidade, extensas bibliotecas de rotinas
que facilitam interação com protocolos TCP/IP, segurança. Sua sintaxe é semelhante a
linguagens C/C++ e principalmente a C#, possui suporte nativo a caracteres unicode2, é
distribuída com grande quantidade de API's3, facilidade para trabalhar com threads -
programação concorrente -, faz a desalocação automática de memória e uso de carga dinâmica
de código.

2.3 IDE NetBeans

O NetBeans é um Ambiente de Desenvolvimento Integrado (IDE) atualmente


desenvolvido pela empresa Sun MicroSystems, gratuito, de código aberto, multi-plataforma,

1
bytecode: linguagem intermediária resultado da compilação de um código java, a qual é interpretada pelas JVMs
2
unicode: padrão que permite computadores representar e manipular textos em qualquer sistema de escrita existente
3
API: conjunto de rotinas e padrões estabelecidos por um software para utilização de suas funcionalidades
19

fácil de usar e instalar, desenvolvido completamente na linguagem Java, oferecendo aos


desenvolvedores todas as ferramentas necessárias para criar aplicativos profissionais tanto
para plataforma desktop, web e móvel.
Alguns dos seus principais recursos são:
• Visualizador de classes integrado ao de interfaces;
• Suporte a vários bancos de dados, visualização de dados e auxiliar de conexão;
• Geração automática de Javadoc;
• Inclusão facilitada de plugins;

Figura 1 Interface do NetBeans


20

2.4 UML

A UML – Unified Modeling Language – surgiu da “compilação das melhores


práticas de engenharia” que provaram ser fonte de sucesso em grandes e complexos sistemas
computacionais. É a sucessão aos conceitos de Booch, OMT de Rumbaugh e OOSE de
Jacobson, pois UML, é a fusão destes conceitos numa única linguagem de modelagem
comum que atualmente é utilizada em larga escala.
A UML, por não se tratar de uma metodologia de desenvolvimento, não irá
especificar o que deve ser feito primeiro e em seguida ou então como projetar um sistema,
mas auxilia na visualização do sistema e da comunicação entre objetos.
Em outubro de 1994, quando Jim Rumbaug juntou-se a Grady Booch na Rational,
foram feitos os primeiros esforços para a criação da UML, essa união teve como objetivo
unificar os métodos Booch e OMT, sendo lançado em outubro de 1995 um esboço do Unified
Process – Processo unificado como era conhecido – na sua versão 0.8. Nesta mesma época
Ivar Jocobson associa-se à Rational, fazendo com que o escopo do projeto UML seja
expandido passando a incorporar o método OOSE.
Nasce assim em julho de 1996 a versão 0.9 da UML, já em janeiro de 1997 a
UML é adotada pela OMG (Object Management Group) na sua versão 1.1 como sendo seu
padrão oficial, Posteriormente foram feitas algumas revisões, na 1.2 somente aconteceram
mudanças para melhorar a aparência, sendo a 1.3 lançada em setembro de 2001 foi a mais
significativa delas por ter não apenas dois estereótipos de generalização mas sim três, o
<<include>> substituindo o <<uses>> da UML versão 1.1, o <<extend>> já existente na
versão 1.1 e a adição da generalização de casos, a revisão 1.4 acrescentou vários conceitos
detalhados relativos a componentes e a perfis fazendo com que elementos possam ter
múltiplos estereótipos estes limitados a um só na versão 1.3, a revisão 1.5 de maio de 2003 foi
responsável pela semântica do projeto, com a chegada da versão 2.0 no fim do ano de 2004, a
qual representa a maior mudança que acontecera na UML, alterando o metamodelo4,
introduzindo novos diagramas e alterando o nome de alguns outros.
Na UML 2.0 a qual está sendo implementada neste trabalho, temos como

4
Metamodelo: Metamodelo é a representação de outra representação já existente.
21

principais diagramas (Fowler) os diagramas de classes, os diagramas de caso de uso e os


diagramas de seqüência, os quais são exemplificados abaixo:
Os diagramas gerados pela UML tem como objetivo um claro entendimento da
situação a qual englobam, facilitando e muito a comunicação entre a equipe de
desenvolvimento e o cliente e ela mesma, também é utilizada para documentar e visualizar e
especificar o desenvolvimento do sistema a ser implementado, no nosso caso o JMA- Sistema
de Vídeo-Locadora. Estes diagramas viabilizam uma representação gráfica do mundo real e
dos problemas que serão enfrentados, possibilitando assim uma compreensão e solução mais
rápida.
Para trabalhar com UML, existem atualmente diversas ferramentas case5,
destacam-se entre as ferramentas case para UML:
• Jude
• Rational Rose
• ArgoUML
• Gaphor

2.4.1 Diagrama de Classes

Um diagrama de classes, é considerado por vários escritores como o principal


diagrama dentre todos os diagramas existentes na UML, mostrando as diferentes classes que
fazem um sistema e como elas se relacionam. Os Diagramas de Classe são chamados
diagramas “estáticos” porque mostram as classes, com seus métodos e atributos bem como os
relacionamentos estáticos entre elas: quais classes “conhecem” quais classes ou quais classes
“são parte” de outras classes, mas não mostram a troca de mensagens entre elas.

5
Ferramentas case: ferramentas baseada em computadores que auxiliam atividades de engenharia de software
22

Figura 2 Exemplo de diagrama de classes

Em um diagrama de classes é possível identificar as seguintes associações:


• Agregação: Demonstra que as informações de um objeto precisam ser
complementadas de outra classe, objeto-todo e objeto-parte.
• Composição: Um tipo de agregação, onde o objeto-parte pertence a um único objeto-
todo.
• Especialização ou Generalização: Também conhecida como herança, representa as
dependências e hierarquias.
23

Figura 3 Exemplo de Diagrama de Caso de Uso

Antes de explicar o que é um caso de uso, é necessário entender o conceito de


cenário. Cenário é uma seqüência de passos que descreve uma interação entre um usuário e
um sistema. Um diagrama de caso de uso é um conjunto de cenários ligados por um objetivo
comum de um usuário. Normalmente quando modelamos sistemas, definimos um caso de uso
principal e outros que serão os alternativos.
24

Figura 4 Diagrama de Seqüência

O diagrama de seqüência é uma ferramenta que deve ser utilizada sempre em


função dos diagramas de casos de uso. Um diagrama de seqüência captura o comportamento
de um único caso de uso, ou seja, mostra a interação entre os objetos ao longo do tempo,
apresentando os objetos que participam da interação e a seqüência das mensagens trocadas.
25

2.5 ArgoUML

O ArgoUML foi a ferramenta case escolhida para uso por ser uma ferramenta
livre, de código aberto, muito bem conceituada por desenvolvedores que utilizam Linux.

Figura 5 interface de trabalho do ArgoUML


26

2.6 JDBC (Java Database Connectivity)

Escrito em Java, é um conjunto de classes e interfaces que faz o envio de


instruções SQL para banco de dados relacional, Para cada banco de dados existe um driver
JDBC específico e este pode estará em uma das quatro categorias de drivers JDBC, são elas:
• Ponte JDBC-ODBC:
É o tipo mais simples de driver JDBC, porém este é restrito ao SO Windows,
geralmente usado qndo não existe um driver nativo ao banco de dados utilizado.
• Driver API-Nativo:
O driver API-Nativo traduz as chamadas JDBC para as chamadas da API cliente do
banco de dados usado. Como a Ponte JDBC-ODBC, pode precisar de software extra
instalado na máquina cliente.
• Driver de Protocolo de Rede:
Traduz a chamada JDBC para um protocolo de rede independente do banco de dados
utilizado, que é traduzido para o protocolo do banco de dados por um servidor. Por
utilizar um protocolo independente, pode conectar as aplicações clientes Java a vários
bancos de dados diferentes. É o modelo mais flexível.
• Driver Nativo:
Converte as chamadas JDBC diretamente no protocolo do banco de dados.
Implementado em Java, normalmente é independente de plataforma e escrito pelos
próprios desenvolvedores. É o tipo mais recomendado para uso em aplicativos, e está
sendo utilizado no JMA – Sistema de Vídeo-Locadora.
27

2.7 Hibernate

O Hibernate é um framework de mapeamento objeto-relacional, escrito na


linguagem Java, o qual também possui versão disponível para .Net, com o nome de
Nhibernate. É um software livre, de código aberto, distribuído sob a licença GPL.
Este framework tem por objetivo diminuir a complexidade entre softwares escritos
na linguagem Java, baseados no modelo orientado a objeto e que precisam trabalhar com um
banco de dados do modelo relacional, através de arquivos XML e anotações JDK 5.0
(Metadados do Java) as quais substituem os arquivos XML.
Sua principal característica é a transformação de classes Java para tabelas de
dados. O Hibernate gera chamadas SQL, através da HQL, liberando o desenvolvedor do
trabalho manual de conversão dos dados, mantendo assim o software portável para qualquer
banco de dados SQL, com a desvantagem do aumento do tempo de execução.
A HQL – Hibernate Query Language – é um dialeto SQL para o Hibernate, uma
poderosa linguagem de consulta que se parece muito com a SQL, porém a HQL é totalmente
orientada a objetos, incluindo os paradigmas de herança, polimorfismo e encapsulamento,
utilizando a HQL, o desenvolvedor estará aumentando a distância entre o desenvolvimento
das regras de negócio e o banco de dados, ficando assim mais próximo ao MVC.

2.8 MVC

O MVC é um padrão de arquitetura de software, tem por objetivo a separação


entre os dados (Model) e o layout (View), desta forma as alterações feitas no layout não
afetam a manipulação dos dados, e estes poderão ser reorganizados sem alterar o layout.
O Model-View-Controller resolve esse impasse através da separação das tarefas
de acesso aos dados e regras de negócio, da lógica de apresentação e de interação com o
usuário, introduzindo entre os dois o Controller, o MVC é usado em padrões de projeto de
28

software, mas o MVC abrange mais da arquitetura de uma aplicação do que é típico para um
padrão de projeto.

Figura 6 Funcionamento MVC

2.9 PostgreSQL

Inicialmente desenvolvido na Universidade de Berkeley, Califórnia, a partir de


1996, o PostgreSQL firmou-se como um projeto open source desenvolvido por uma
comunidade de voluntários sob o coordenação do PostgreSQL Global Development Group, o
projeto é sustentado por doações de usuários, e também por patrocínio recebido de diversas
empresas, entre as quais se destacam:
• Fujitsu;
• Hub.Org;
• NTT Group;
• Red Hat;
• Skype;
• SRA;
• Sun MicroSystems;
O sistema tem adquirido grande prestígio na comunidade Linux, sendo
contemplado diversas vezes com o prêmio de melhor sistema de gerenciamento de banco de
dados pelo Linux Journal Editor's Choice.
Entre seus usuários estão órgãos governamentais de vários países e universidades
de prestígio mundial além de grandes empresas nacionais e internacionais, como:
29

• Universidade da Califórnia, Berkeley;


• FlightStats;
• Companhia do Metropolitano de São Paulo;
• Meu Carro Novo;
• Embrapa - Empresa Brasileira de Pesquisa Agropecuária;
• Câmara Municipal do Rio de Janeiro;
O PostgreSQL é um banco de dados do tipo Objeto-Relacional, isto é, um sistema
de gerenciamento de banco de dados relacional que permite aos desenvolvedores integrar ao
banco de dados seus próprios tipos de dado e métodos personalizados, se tornando assim o
SGBDOR código-aberto mais avançado do mundo [GESCHWINDE e SCHÖNIG, 2002].

2.9.1 pgAdmin III

O pgAdmin III é uma ferramenta de administração gráfica para o PostgreSQL, é


multi-plataforma, atualmente traduzido do idioma original – inglês – para mais de 20 idiomas,
é um software livre distribuído sob licença artística, nesta data é encontrado na sua versão
1.8.4.

Figura 7 interface do pgAdmin III


30

2.10 JasperReport / iReport 3.x

O JasperReport é uma biblioteca java, que permite definir um relatório e após


executá-lo em uma fonte de dados sua definição é feita através de arquivos XML - Extensible
Markup Language – contudo, normalmente é utilizado a ferramenta iReport, um editor do
tipo WYSIWYG6, para o arquivo XML, que após compilado gera um arquivo .jasper o qual é
executado a partir do código fonte java, com suporte a exportação do relatório para formatos
como, html, pdf, rtf, etc, sendo considerado por muitos uma das mais completas bibliotecas
para geração de relatórios.

Figura 8 Interface do iReport 3.0

6
What You See Is What You Get - O que você vê é o que você obtém
31

2.11 Engenharia de Software

É uma área da tecnologia de informação voltada para a especificação,


desenvolvimento e manutenção de sistemas de software aplicando tecnologias e práticas de
ciência da computação, gerencia de projetos e outras disciplinas, com o objetivo de trazer
organização, produtividade e qualidade ao projeto em desenvolvimento.
Atualmente essas práticas e tecnologias englobam base de dados, ferramentas,
linguagens de programação, bibliotecas, plataformas, padrões, processos e também a questão
da qualidade de software.
Segundo Friedrich Ludwig Bauer, “Engenharia de software é a criação e a
utilização de sólidos princípios da engenharia a fim de se obter um software que seja
confiável e que trabalhe eficientemente em máquinas reais, da maneira mais econômica”.
A utilização de modelos abstratos e precisos que permitam ao engenheiro
especificar, projetar, implementar e manter sistema de software, avaliando e garantindo suas
qualidades estão envolvidos nos fundamentos científicos da engenharia de software. Também
a engenharia de software deve oferecer mecanismos para se planejar e gerenciar todo o
processo de desenvolvimento do software.

2.11.1 Processo de Engenharia de Software

Processo de engenharia de software, ou processo de software, é uma seqüência


coerente de práticas que tem como objetivo principal o desenvolvimento ou evolução de
sistemas de software. Estas práticas englobam as atividades de especificação, projeto,
implementação, testes os quais se caracterizam pela iteração contínua de pessoas, ferramentas
e métodos.
Apesar de existir uma vasta quantidade de processos, todos eles possuem algumas
32

atividades básicas em comum, tais como:


• Especificação: atividade na qual são definidas as funcionalidades do sistema a ser
desenvolvido;
• Projeto: atividade na qual é tratado o controle da produção do software, visando
atender as funcionalidades definidas na fase de especificação;
• Validação: atividade que tem por objetivo garantir que o software possua os requisitos
especificados;
• Evolução: tem como objetivo de garantir que o software acompanhe a evolução do
cliente atendendo suas necessidades futuras.

2.11.2 Modelos de Processo de Software

Modelo de Processo de Software, ou simplesmente modelo de processo, é uma


abstração dos objetos e atividades envolvidas no processo de software. Também oferece uma
forma mais abrangente e fácil de representar o gerenciamento do processo de software e
conseqüentemente a evolução do mesmo.
O modelo escolhido para ser utilizado neste projeto foi o modelo em cascata,
modelo este composto pelas seguintes etapas (fases):
• Analise de requisitos;
• Projeto;
• Implementação;
• Verificação;
• Manutenção;
33

Figura 9 Modelo em cascata proposto por Yourdon

No modelo em cascata segundo Yourdon, o progresso de uma etapa para outra


acontece de uma forma seqüencial, obrigando a etapa atual estar completa e perfeita.
Inicialmente é feito a analise dos requisitos, onde são definidos os objetivos, as funções e as
restrições, com ajuda de clientes e usuários, e servem como uma especificação do sistema,
indicando o que deve ser implementado. Na etapa de projeto é envolvida a descrição do
sistema e do software em termos de unidades abstratas e de suas relações, indicando como o
software deve ser implementado. Em sua terceira etapa, o modelo em cascata a
implementação e testes de unidade onde as unidades do software são codificadas e testadas
individualmente. A quarta etapa é composta pela integração e testes de sistema onde as
unidades são integradas e testadas em conjunto. Na sua quinta e última etapa do modelo em
cascata, o sistema é instalado e colocado em operação. A manutenção envolve a correção de
erros e evolução do sistema para atender a os requisitos futuros do cliente.

2.12 Padrões de Projeto de Software

Os padrões de projeto de software, mais conhecido pela sua denominação em


inglês: Design Patterns, utilizando os padrões de projeto de software obtém-se soluções para
problemas oriundos do desenvolvimento de sistemas de software orientados a objetos. Com
34

um padrão de projeto de software é possível estabelecer um nome, definir o problema, a sua


solução, quando aplicar esta solução e quais as conseqüências que isto irá causar.
Os padrões de projetos acarretam em um vocabulário comum de desenho,
facilitando a comunicação, documentação e aprendizado dos sistemas de software.

2.12.1 História dos Padrões de Projeto

O conceito de padrão de projeto foi criado na década de 70 pelo arquiteto


Christopher Alexander. Em seus livros Notes on the Synthesis of Form, The Timeless Way of
Building e The Pattern Language, onde ele estabeleceu que um padrão deve ter, idealmente,
as seguintes características:
• Nome: nome significativo;
• Problema: o enunciado do problema;
• Contexto: a situação que causa o problema;
• Forças: a uma descrição das forças e restrições relevantes;
• Solução: solução conhecida para o problema;
• Exemplos: Amostras de aplicações de padrões;
• Contexto resultante: o estado do sistema após o padrão ter sido aplicado;
• Fundamentação: explicação das regras no padrão;
• Padrões relacionados: relacionamentos estáticos e dinâmicos;
• Usos conhecidos: ocorrência do padrão e de suas aplicações em sistemas conhecidos;

Na década de 80, a partir dos conceitos criados por Alexander, os programadores


Kent Beck e Ward Cunningham propuseram os primeiros padrões de projeto para a área da
ciência da computação. Em um trabalho para a conferência OOPSLA, eles apresentaram
alguns padrões para a construção de janelas na linguagem Smalltalk. O movimento ao redor
de padrões de projeto ganhou popularidade com o livro Design Patterns: Elements of
Reusable Object-Oriented Software, publicado em 1995. Os autores desse livro são Erich
Gamma, Richard Helm, Ralph Johnson e John Vlissides, conhecidos como a "Gangue dos
35

Quatro" (Gang of Four) ou simplesmente "GoF".

2.12.2 Padrões GoF

Os padrões "GoF" são organizados em famílias de padrões: de criação, estruturais


e comportamentais. Os padrões de criação são relacionados à criação de objetos, os estruturais
tratam das associações entre classes e objetos e os comportamentais das interações e divisões
de responsabilidades entre as classes ou objetos.
Aqui citamos os padrões das três famílias:
• Padrão de Criação:
o Abstract Factory;
o Builder;
o Factory Method;
o Prototype;
o Singleton;

• Padrões Estruturais
o Adapter;
o Bridge;
o Composite;
o Decorator;
o Façade;
o Flyweight;
o Proxy;

• Padrões Comportamentais
o Chain of Responsability;
o Command;
o Interpreter;
36

o Iterator;
o Mediator;
o Memento;
o Observer;
o State;
o Strategy;
o Template Method;
o Visitor;
37

3 DOMÍNIO DA APLICAÇÃO

No presente capítulo será apresentado uma breve análise do software atualmente


em uso na GLL – Vídeo-Locadora, e das melhorias propostas pelo JMA – Sistema de Vídeo-
Locadora.
Fora realizado uma pesquisa mercadológica dos softwares de gerenciamento de
Vídeo-Locadora e constatado uma falha neste nicho de mercado, com o objetivo de suprir esta
necessidade do mercado, surge o JMA – Sistema de Vídeo-Locadora.
Atualmente no ramo de softwares para administração de vídeo locadoras, existem
diversas opções em software de prateleira7, tanto no seguimento desktop como no seguimento
webapp, o software VideoSis que estava em uso na GLL Vídeo Locadora, é um software
demonstrativo, desenvolvido pela GenSis, o qual se torna falho em grande parte de suas
operações, tendo uma interface pouco amigável, com grande quantidade de menus. A
validação de campos como CPF, campos de data e de valor, não é feita, aceitando informar
por exemplo letras nos campos citados, sendo que os mesmos são campos com dados
exclusivamente numéricos.

3.1 A Vídeo-Locadora

A vídeo-locadora na qual este trabalho foi baseado chama-se “GLL Vídeo-


locadora” e fica localizada na Avenida João Posser, 1477, na cidade de Marau, RS.

7
software de prateleira: pacote fechado de software, não personalizado por cliente
38

3.2 O Funcionamento da Vídeo-Locadora

Quando um cliente chega a vídeo-locadora, poderá dirigir-se as prateleiras onde


estão expostos os filmes disponibilizados para locação e escolher o filme desejado ou então
solicitar ao atendente que o faça. Após escolher o filme, o cliente deverá identificar-se para
que a locação seja inclusa em seu cadastro, caso não exista um cadastro este deverá ser criado
informando dados pessoais tais como:

• Nome;
• Endereço;
• Telefone;
• E-mail;
• Possui autorizados;
• Etc;

A GLL Vídeo-Locadora, atualmente utiliza o sistema VideoSis, que é um sistema


demonstrativo desenvolvido pela Gensis, sistema esse que possui grande número de falhas no
seu desenvolvimento, além de não ser intuitivo em seus vários menus, fazendo com que o
usuário perca bastante tempo procurando o que realmente deseja, no quesito validação de
campos o VideoSis permite, por exemplo, a inserção de caracteres do tipo letra nos campos de
CPF e data, os quais seriam de preenchimento exclusivo com números, o sistema possui uma
grande quantidade de relatórios, tornando difícil uma simples tarefa de emitir um relatório.
39

Figura 10 interface de cadastro de clientes do VideoSis

Figura 11 interface do menu de relatórios do VídeoSis


40

Figura 12 Relatório de clientes

Após analisar este e outros sistemas, foi detectada uma grande necessidade do
mercado não somente local, mas também regional e estadual, o que levou ao desenvolvimento
do JMA – Sistema de Vídeo-Locadora, um software que visa acima de tudo a praticidade na
sua utilização.
Com a implantação do JMA, o cliente terá a sua disposição um software rápido,
que utiliza tecnologias de ponta no seu funcionamento, não esquecendo a simplicidade no seu
uso, visando assim uma maior praticidade e agilidade para o cliente no seu uso diário.
41

4 ANÁLISE E DESENVOLVIMENTO DO SISTEMA

A seguir, serão detalhados alguns dos diagramas que foram utilizados para o
desenvolvimento do JMA – Sistema de Vídeo-Locadora.

4.1 Diagrama de Entidade-Relacionamento

Figura 13 Diagrama de entidade e relacionamento


42

A figura 13 apresenta o diagrama de entidade-relacionamento, também conhecido


como modelo entidade-relacionamento (MER), este foi utilizado para o desenvolvimento do
JMA – Sistema de Vídeo-Locadora. No desenvolvimento do JMA, foi utilizado o banco de
dados PostgreSQL, o qual, como já citado anteriormente, é um banco de dados que possui
características Objeto-Relacional, sendo então necessário a utilização de um MER. O MER
mostra ao desenvolvedor uma visualização física do seu banco de dados antes do mesmo ser
implementado, exibindo em seu contexto as entidades e os relacionamentos entre as mesmas,
facilitando e muito a criação do banco de dados.

4.2 Dicionário de dados

Um dicionário de dados (do inglês data dictionary) é uma coleção de metadados


que contêm definições e representações de elementos de dados.

Dentro do contexto de SGBD, um dicionário de dados é um grupo de tabelas,


habilitadas apenas para leitura ou consulta, ou seja, é uma base de dados, propriamente dita,
que entre outras coisas, mantém as seguintes informações:

• Definição precisa sobre elementos de dados;

• Perfis de usuários, papéis e privilégios;

• Descrição de objetos;

• Integridade de restrições;

• Stored procedures (pequeno trecho de programa de computador, armazenado em um


SGBD, que pode ser chamado freqüentemente por um programa principal) e gatilhos;

• Estrutura geral da base de dados;

• Informação de verificação;

• Alocações de espaço;

Dicionário de Dados do JMA – SVL, vide anexo A.


43

4.3 Diagrama de Classes Parte 1

Em um diagrama de classe, é representada a estrutura e as relações entre as


classes que servirão de modelo para os objetos do software.

Figura 14 Diagrama de classes parte 1

Na Figura 14 – Diagrama de Classes parte 1, apresenta-se as classes Ator,


44

AtorFilme, Filme, Categoria, Genero, Item e a classe ItemLocacao.


Na classe Ator, ficam armazenados os dados referentes aos atores que fazem
participação nos filmes que serão cadastrados. São esses os dados a serem cadastrados:
ato_codigo, que faz referência ao código do ator cadastrado no sistema, ato_nome,
corresponde ao nome do ator a ser cadastrado. Essa classe possui métodos de inclui, altera e
retorna apenas para o atributo ato_nome, uma vez que o atributo ato_codigo é uma chave
primaria na tabela do banco de dados, não permitindo assim a sua alteração.
A classe AtorFilme, é uma classe gerada de um relacionamento N para N entre a
classe Ator e a classe Filme. A manipulação de seus dados é feita através da manutenção de
filmes, sendo composta de duas chaves primárias e estrangeiras simultaneamente. São elas:
ato_codigo que referencia ao código do ator na tabela Ator, e fil_codigo a qual referencia o
código do filme, no qual o ator atuou, na tabela Filme.
A classe Filme, é responsável por controlar o cadastro de filmes no JMA –
Sistema de Vídeo-Locadora, nela são encontrados os seguintes atributos: fil_codigo,
fil_duracaominutos, cat_codigo, gen_codigo, suas chaves primarias são fil_codigo,
cat_codigo, gen_codigo, sendo que cat_codigo e gen_codigo são também chaves estrangeiras,
Essa classe é implementada na manutenção de Item juntamente com categoria e gênero.
Na classe Categoria, são armazenados dados referentes a categoria dos filmes, são
eles: cat_codigo, cat_descricao, cat_precolocacao, cat_diasdevolucao, onde cat_codigo é um
código do tipo seqüencial, em cat_descricao fica armazenado a descrição da categoria, por
exemplo, super lançamento, lançamento, etc..., cat_precolocacao armazena o preço da
categoria o qual será aplicado a todos os itens da categoria, cat_diasdevolucao armazena a
quantidade de dias que um item pode permanecer com o cliente pelo valor de uma
diária(cat_precolocacao).
Na classe Genero, são armazenados os dados referentes aos gêneros ao qual os
filmes cadastrados farão parte. São esses os dados a serem cadastrados: gen_codigo, que faz
referência ao código do gênero cadastrado no sistema, gen_descricao que corresponde a
descrição do gênero a ser cadastrado. Essa classe possui métodos de inclui, altera e retorna
apenas para o atributo gen_descricao, sendo que o atributo gen_codigo é uma chave primária
na tabela do banco de dados, não permitindo assim a sua alteração.
A classe Item, composta pelos seguintes atributos: ite_codigo, ite_titulo,
ite_datacompra, ite_locado, fil_codigo, for_codigo, sendo que o atributo ite_codigo é um
45

código do tipo seqüencial representando o código da mídia física, por exemplo o dvd, o
atributo ite_titulo representa o título da mídia, no atributo ite_datacompra será armazenado a
data de compra do item (mídia), o atributo ite_locado é um atributo do tipo Boolean, ou seja,
é um atributo que pode receber apenas dois valores, verdadeiro ou falso, o atributo fil_codigo
faz referencia a classe Filme, trazendo para a classe Item atributos como a duração do filme
incluído na mídia através do atributo fil_duracaominutos da classe Filme, o Gênero e a
Categoria a qual esta mídia esta ligada, já no atributo for_codigo, será registrado o valor
correspondente ao código do fornecedor da mídia a ser persistida.
Para a classe ItemLocacao, temos iteloc_dataprevistadevolucao,
iteloc_datadevolucao, iteloc_diasatrazo e iteloc_valordiaria como atributos normais e
loc_codigo e ite_codigo como chaves estrangeiras e primárias simultaneamente, onde o
atributo loc_codigo representa o código da locação proveniente da classe Locacao, o atributo
ite_codigo, referencia ao código do item na classe Item, os atributos
iteloc_dataprevistadevolucao e iteloc_datadevolucao, são atributos do tipo data, os quais irão
receber respectivamente a data prevista para a devolução do item à locadora e a data efetiva
da devolução do item, permitindo assim calcular através do atributo iteloc_diasatrazo o valor
a ser cobrado pela locação, armazenando o valor a ser cobrado no atributo iteloc_valordiaria.
46

4.4 Diagrama de Classes Parte 2

Figura 15 Diagrama de classes parte 2

Na figura 15, é apresentada a parte 2 do Diagrama de Classes, a qual é a seqüência


do Diagrama de Classes Parte 1. Nesta parte do diagrama são apresentadas as seguintes
classes: Estado, Cidade, Pessoa, Fornecedor, Cliente, Autorizado, Locacao, Assistidos,
Reserva e Usuario.
Na classe Estado, são apresentados os seguintes atributos: est_codigo, est_nome,
est_abreviatura, esta classe, não terá uma tela de manutenção no sistema, devido aos seus
47

dados serem restritos a 27 estados no caso do Brasil, esses dados serão inseridos na
implantação do sistema, diretamente no banco de dados do cliente, sendo que o atributo
est_codigo representa o código do estado a ser cadastrado, o atributo est_nome representa o
nome do estado que será cadastrado, o atributo est_abreviatura ira receber os dados referentes
a abreviatura do nome do estado, atributo esse que será utilizado nos relatórios do JMA.
Na classe Cidade, temos como seus atributos: cid_codigo, cid_nome e est_codigo,
onde cid_codigo é um código do tipo seqüencial representando o código da cidade que esta
sendo cadastrada no JMA – Sistema de Vídeo-Locadora, o atributo cid_nome, representa o
nome da cidade em questão, e o atributo est_codigo é um atributo do tipo chave estrangeira
que representa o estado do qual esta cidade faz parte.
A classe Pessoa, é uma classe abstrata, e como seus atributos temos: pes_codigo,
pes_nome, pes_endereco, pes_complemento, pes_bairro, pes_telefone, pes_cep, pes_email,
pes_datacadastro, cid_codigo. Para o atributo pes_codigo é atribuído um valor seqüencial e
único, este sendo gerado automaticamente através do banco de dados PostgreSQL, o atributo
pes_nome referencia o nome do cliente(PF)/fornecedor(PJ), neste ponto ainda não
especificado, os atributos pes_endereco, pes_complemento, pes_bairro e pes_cep são
preenchidos com valores correspondentes ao endereço da PF/PJ, no atributo pes_telefone é
persistido o valor correspondente ao telefone da PF/PJ, no atributo pes_email será persistido o
e-mail da PF/PF, no atributo pes_datacadastro será armazenado uma data que por padrão será
a data atual, podendo esta ser alterada de acordo com a necessidade do cliente, na classe
pessoa o atributo cid_codigo representa uma chave estrangeira de ligação com a tabela cidade,
vinculando assim uma PF/PJ a uma cidade.
A classe Fornecedor, é uma classe do tipo extends, a qual é uma extensão da
classe Pessoa, especificando assim que a classe Fornecedor armazenará os dados referentes à
apenas os cadastros de Pessoas Jurídicas do JMA. Nesta classe temos os atributos
for_inscricaoestadual, for_cnpj, for_codigo, onde o atributo for_inscricaoestadual armazenará
dados referentes a inscrição estadual dos fornecedores. O atributo for_cnpj será responsável
por armazenar o valor correspondente ao CNPJ dos fornecedores, e o atributo for_codigo que
faz referência a classe pessoa através de vinculação de chave estrangeira.
Temos também a classe Cliente, que também é uma classe do tipo extends, sendo
uma extensão da classe Pessoa, especificando que a classe Cliente fará o armazenamento
exclusivo de dados correspondente aos cadastros de Pessoas Físicas. A classe Cliente tem
48

como seus atributos: cli_cpf, cli_rg, cli_datanasciment, cli_limitecredito, cli_saldo, cli_ativo e


cli_codigo. O atributo cli_cpf irá armazenar os dados correspondente ao CPF, assim como o
atributo cli_rg armazenará os dados referentes ao RG de cada cliente, o atributo
cli_datanascimento corresponde a data de nascimento do cliente. Este atributo será utilizado
no controle de mídias a serem locadas, evitando assim a locação de mídias impróprias para a
idade informada. Os atributos cli_limitecredito e cli_saldo serão utilizados no controle de
diárias com acerto pendente, não permitindo registrar uma nova locação se o saldo estiver
zerado, o valor padrão de saldo para cada cliente é de R$ 20,00, valor este proveniente da
analise de requisitos do sistema e o atributo cli_codigo que faz referência a classe pessoa
através de vinculação por chave estrangeira.
A classe Autorizado, é responsável pelo armazenamento de dados referentes aos
autorizados de cada cliente, sendo eles: aut_codigo, aut_nome, aut_parentesco, cli_codigo,
sendo que para o atributo aut_codigo é atribuído um valor seqüencial e único, para o atributo
aut_nome é atribuído valor referente ao nome do autorizado, em aut_parentesco é armazenado
o valor referente ao parentesco do autorizado em relação ao cliente, no atributo cli_codigo
será armazenado o código do cliente ao qual o autorizado em questão “pertence”.
A classe Reserva, armazena os dados referentes às reservas de mídias efetuadas
pelos clientes e/ou autorizados, tendo como seus atributos: res_codigo, res_data, res_situacao,
ite_codigo, cli_codigo, onde res_codigo é atribuído um valor seqüencial e único, res_data é a
data em que o cliente efetuou a reserva, esta sendo controlada através do atributo
res_situacao, também na classe Reserva o atributo ite_codigo é uma chave estrangeira, a qual
faz referência ao atributo ite_codigo na classe Item, o atributo cli_codigo referencia a classe
Cliente no seu atributo cli_codigo, sendo assim possível controlar em nome de qual cliente
qual item esta reservado.
Na classe Assistidos, que possui como seus atributos: ass_codigo, ass_data,
cli_codigo, ite_codigo, uma vez que o valor do atributo ass_codigo é atribuído um valor
seqüencial e único, o atributo res_data recebe o valor correspondente a data em que o cliente
(atributo cli_codigo) locou o item referenciado pelo atributo ite_codigo, Esta classe auxiliará
no controle de mídias já locadas pelo cliente evitando a necessidade de emissão de um
relatório para ter este controle.
Na classe Locacao, temos como atributos: loc_codigo, loc_datalocacao,
loc_subtotal, loc_valortotal, loc_valordiarias, loc_valorrecebido, loc_pago, loc_troco,
49

cli_codigo e aut_codigo. Onde o atributo loc_codigo recebe um valor seqüencial e único, o


atributo loc_datalocacao recebe a data em que o cliente/autorizado (atributos cli_codigo e
aut_codigo ambos FK) efetuou a locação, o atributo loc_subtotal, é a soma parcial dos itens
registrados, o atributo loc_valortotal representa a soma final dos itens incluídos na locação, ao
atributo loc_valordiarias é atribuido o valor das diarias referentes a categoria do item que esta
sendo locado, o atributo loc_valorrecebido auxilia para o caixa efetuar o troco (atributo
loc_troco), também temos o atributo loc_pago este sendo um atributo de controle do
pagamento da locação.

4.5 Diagramas de Caso de Uso

O Diagrama de Caso de Uso descreve a funcionalidade proposta para o novo


sistema. Segundo Ivar Jacobson, podemos dizer que um Caso de Uso é um "documento
narrativo que descreve a seqüência de eventos de um ator que usa um sistema para completar
um processo".
Abaixo temos um diagrama de caso de uso, o qual trata o cadastro de clientes na
vídeo-locadora;

Figura 16 Cadastro de clientes na vídeo-locadora


50

No diagrama de caso de uso abaixo, é tratado a chegada de um novo filme para a


vídeo-locadora;

Figura 17 chegada de um novo filme para a vídeo-locadora


51

No próximo diagrama de caso de uso, fica claro o tratamento da locação e/ou devolução de
uma mídia.

Figura 18 Tratamento da locação e/ou devolução de uma mídia

4.6 Diagramas de Seqüência

O Diagrama de Seqüência é uma das ferramentas UML usadas para representar


interações entre objetos de um cenário, realizadas através de operações ou métodos
(procedimentos ou funções). Este diagrama é construído a partir do Diagrama de Casos de
Usos. Primeiro, se define qual o papel do sistema (Use Cases), depois, é definido como o
software realizará seu papel (Seqüência de operações).
52

No diagrama de seqüência a seguir, é representado o diagrama de seqüência de uma locação;

Figura 19 Diagrama de seqüência


53

4.7 Interfaces do Sistema JMA

Nesta seção do serão apresentadas algumas interfaces do software JMA – Sistema


de Vídeo-Locadora.

Figura 20 Interface do Cadastro de Atores

A Figura 20 mostra a interface de cadastro de ator. Para iniciar o cadastro, o


usuário que esta operando o sistema, deverá clicar no botão “Incluir” na barra de ferramentas
da tela, com isto, serão habilitados os campos Código e Nome, o Campo código é do tipo
auto-incremento, com seu valor controlado pelo banco de dados, o campo Nome, é um campo
onde o usuário do sistema irá digitar o nome do ator.
Caso o usuário deseje cancelar a operação, ele deve proceder com um clique no
botão “Cancelar”, para Gravar esta operação no banco de dados, o mesmo deverá clicar no
54

botão “Gravar”.

Figura 21 Interface de Manutenção de Locações

Na Figura 4.6, ao ser acessada pelo usuário, a manutenção de locações irá


apresentar os campos desabilitados, e os botões Incluir, Alterar e Excluir. Ao pressionar o
botão Incluir, os campos cliente, filme e a tabela, são habilitados, permitindo que o usuário
selecione o cliente e o filme que esta sendo locado pelo cliente.
Caso o usuário esteja em dúvida com relação ao nome do cliente e/ou do filme
escolhido, o usuário deverá clicar no botão “Buscar” permitindo assim a busca do
cliente/filme desejado.
Após localizar o filme desejado o usuário deverá clicar no botão “Adicionar
Filme”, adicionando assim o filme a locação. Suponha que o cliente decida escolher outro
filme e não mais este que foi adicionado, o usuário então, deverá clicar no botão “Remover
Filme”.
55

Figura 22 interface de consulta de gêneros

Na Figura 22, a interface de manutenção de gêneros do JMA, o usuário tem a


opção de selecionar a ordem pela qual o usuário gostaria de ver a tabela, esta informação
também é utilizada para filtrar os resultados da busca através da digitação de dados na caixa
de texto ao lado de “Filtrar por:”, após a digitação dessa informação, o usuário deverá clicar
no botão “Buscar”, o qual através de um método de busca preenche a tabela com as
informações correspondentes ao filtro digitado na caixa de texto.
Por esta ser uma tela exclusivamente de consulta, o usuário não pode alterar as
informações que se encontrarem em tela após o clique no botão “Buscar”.
56

Figura 23 Relatório de Clientes do JMA

Na Figura 23, no relatório de clientes podemos observar os seguintes campos:


• Código;
• Cliente (Nome);
• Endereço;
• CPF;
• Data de Nascimento;
• Telefone;
• E-mail;
• Saldo;
57

5 CONSIDERAÇÕES FINAIS

Através do desenvolvimento deste sistema outrora denominado JMA – Sistema de


Vídeo-Locadora, é possível concluir que, os usuários envolvidos no atendimento ao público
que freqüenta a vídeo-locadora, poderão oferecer aos clientes, um atendimento rápido, eficaz,
e com resultados confiáveis sobre os atendimentos efetuados na vídeo-locadora.
Uma das dificuldades encontradas no desenvolvimento do JMA – SVL, foi em
relação ao hibernate, sendo que no inicio do desenvolvimento foi utilizado este framework,
contudo com a evolução do software, foi detectado uma grande dificuldade para mapeamento
das chaves estrangeiras do sistema, com isso foi abandonado esta tecnologia, passando a
utilizar JDBC.
Quanto a implantação do JMA – SVL, podemos destacar que não será feita
conversão dos dados existentes, será utilizado o hardware já existente na vídeo-locadora.
Em trabalhos futuros, o JMA- Sistema de Vídeo-Locadora, será transportado para
a plataforma web, para este trabalho futuro está sendo feito um estudo das possíveis
linguagens de programação para web, e web 2.0.
Tendo sido observado principalmente as linguagens Java e Flex, por ser uma
tecnologia relativamente nova, o Flex tem obtido um conceito muito bom entre a comunidade
desenvolvedora de sistemas web.
58

Figura 24 Aplicação desenvolvida em Flex + Java


59

6 REFERÊNCIAS BIBLIOGRÁFICAS

YOURDON, E. Análise Estruturada Moderna. Rio de Janeiro: Campus, 1990.

PRESSMAN, R. S. Engenharia de Software. São Paulo: Makron Books, 2005.

MEDEIROS, E. S. Desenvolvendo Software com UML 2.0: Definitivo, 1ª ed. Makron Books,
2004

BOOCH,Grady; JACOBSON, Ivar; RUMBAUGH, James. UML:guia do usuario. 2. ed. Rio


de Janeiro: Elsevier, 2005.

DEITEL,H. M;DEITEL,P.J. Java: como programar. 6.ed. Porto Alegre: Bookman, 2006.

RAMOS, Ricardo Argenton. Treinamento Prático em UML. 1. ed. São Paulo: Digerati, 2006.

GESCHWINDE Ewald; SCHÖNIG, Hans-Jürgen. PostgreSQL Developer's Handbook. 1. ed.


Indianapolis, IN: Sams, 2002.

CADENHEAD, Rogers; LEMAY, Laura. Aprenda em 21 dias Java 2. Rio de Janeiro:


Elsevier, 2005.

Disponível em :
http://www.hibernate.org/hib_docs/v3/reference/en/pdf/hibernate_reference.pdf capturado em
30 de setembro de 2008.
60

Disponível em: http://www.netbeans.org/index_pt_BR.html capturado em 27 de setembro de


2008.

Disponível em: http://www.krugle.org/#2 capturado em 29 de novembro de 2008.


61

7 ANEXO A

Descrição
Descrição do Modelo PHTAZ
Nome PHTAZ
Código PHTAZ
DBMS PostgreSQL 8
Comment
Database <phtaz>

Descrição Completa do Modelo


Lista de Tabelas
Nome Código
assistidos assistidos
Ator ator
atorfilme atorfilme
autorizado autorizado
categoria categoria
Cidade cidade
Cliente cliente
Estado estado
Filme filme
fornecedor fornecedor
Gênero genero
Item item
62

itemlocacao itemlocacao
Locação locacao
Pessoa pessoa
Reserva reserva
Usuário usuario

Tabela assistidos
Descrição da Tabela assistidos
Nome assistidos
Código assistidos

Relações da Tabela assistidos


Nome Código Tabela Pai Colunas Chave Estrangeira
pfk_cli_cod pfk_cli_cod cliente cli_codigo
pfk_ite_codigo pfk_ite_codigo item ite_codigo

Lista de atributos da tabela assistidos


Nome Código
ass_codigo ass_codigo
ass_data ass_data
cli_codigo cli_codigo
ite_codigo ite_codigo

Lista de chaves da tabela assistidos


Nome Código Primary
pk_ass_codigo pk_ass_codigo X

Tabela ator
Descrição da Tabela ator
Nome ator
63

Código ator

Relações da Tabela ator


Nome Código Tabela Colunas Chave Estrangeira
Filha
fk_ato_codigo fk_ato_codigo atorfilme ato_codigo

Lista de atributos da tabela ator


Nome Código
ato_codigo ato_codigo
ato_nome ato_nome

Lista de chaves da tabela ator


Nome Código Primary
pk_ato_codigo pk_ato_codigo X

Tabela atorfilme
Descrição da Tabela atorfilme
Nome atorfilme
Código atorfilme

Relações da Tabela atorfilme


Nome Código Tabela Pai Colunas Chave Estrangeira
fk_ato_codigo fk_ato_codigo ator ato_codigo
fk_fil_codigo fk_fil_codigo filme fil_codigo

Lista de atributos da tabela atorfilme


Nome Código
ato_codigo ato_codigo
fil_codigo fil_codigo
64

Lista de chaves da tabela atorfilme


Nome Código Primary
pk_ato_fil_codigo pk_ato_fil_codigo X

Tabela autorizado
Descrição da Tabela autorizado
Nome autorizado
Código autorizado

Relações da Tabela autorizado


Nome Código Tabela Filha Colunas Chave Estrangeira
pfk_aut_codigo pfk_aut_codigo locacao aut_codigo

Relações da Tabela autorizado


Nome Código Tabela Colunas Chave
Pai Estrangeira
pfk_pes_cli_aut_codigo pfk_pes_cli_aut_codigo cliente cli_codigo

Lista de atributos da tabela autorizado


Nome Código
aut_codigo aut_codigo
aut_nome aut_nome
aut_parentesco aut_parentesco
cli_codigo cli_codigo

Lista de chaves da tabela autorizado


Nome Código Primary
pk_aut_codigo pk_aut_codigo X

Tabela categoria
Descrição da Tabela categoria
Nome categoria
65

Código categoria

Relações da Tabela categoria


Nome Código Tabela Filha Colunas Chave Estrangeira
fk_cat_codigo fk_cat_codigo filme cat_codigo

Lista de atributos da tabela categoria


Nome Código
cat_codigo cat_codigo
cat_descricao cat_descricao
cat_precolocacao cat_precolocacao
cat_diasdevolucao cat_diasdevolucao

Lista de chaves da tabela categoria


Nome Código Primary
pk_cat_codigo pk_cat_codigo X

Tabela cidade
Descrição da Tabela cidade
Nome cidade
Código cidade

Relações da Tabela cidade


Nome Código Tabela Colunas Chave Estrangeira
Filha
fk_cid_codigo fk_cid_codigo pessoa cid_codigo

Relações da Tabela cidade


Nome Código Tabela Pai Colunas Chave Estrangeira
fk_est_codigo fk_est_codigo estado est_codigo

Lista de atributos da tabela cidade


66

Nome Código
cid_codigo cid_codigo
cid_nome cid_nome
est_codigo est_codigo

Lista de chaves da tabela cidade


Nome Código Primary
pk_cid_codigo pk_cid_codigo X

Tabela cliente
Descrição da Tabela cliente
Nome cliente
Código cliente

Relações da Tabela cliente


Nome Código Tabela Colunas Chave
Filha Estrangeira
pfk_cli_cod pfk_cli_cod assistidos cli_codigo
pfk_cli_cod_res pfk_cli_cod_res reserva cli_codigo
pfk_cli_loc_codigo pfk_cli_loc_codigo locacao cli_codigo
pfk_pes_cli_aut_codigo pfk_pes_cli_aut_codigo autorizado cli_codigo

Relações da Tabela cliente


Nome Código Tabela Pai Colunas Chave Estrangeira
pfk_cli_pes_codigo pfk_cli_pes_codigo pessoa cli_codigo

Lista de atributos da tabela cliente


Nome Código
cli_cpf cli_cpf
67

cli_rg cli_rg
cli_datanascimento cli_datanascimento
cli_limitecredito cli_limitecredito
cli_saldo cli_saldo
cli_ativo cli_ativo
cli_codigo cli_codigo

Lista de chaves da tabela cliente


Nome Código Primary
pk_pes_codigo_cli pk_pes_codigo_cli X

Tabela estado
Descrição da Tabela estado
Nome estado
Código estado

Relações da Tabela estado


Nome Código Tabela Filha Colunas Chave Estrangeira
fk_est_codigo fk_est_codigo cidade est_codigo

Lista de atributos da tabela estado


Nome Código
est_codigo est_codigo
est_nome est_nome
est_abreviatura est_abreviatura

Lista de chaves da tabela estado


Nome Código Primary
pk_est_codigo pk_est_codigo X

Tabela filme
Descrição da Tabela filme
68

Nome filme
Código filme

Relações da Tabela filme


Nome Código Tabela Filha Colunas Chave Estrangeira
fk_fil_codigo fk_fil_codigo atorfilme fil_codigo
pfk_fil_codigo pfk_fil_codigo item fil_codigo

Relações da Tabela filme


Nome Código Tabela Pai Colunas Chave Estrangeira
fk_cat_codigo fk_cat_codigo categoria cat_codigo
fk_gen_codigo fk_gen_codigo genero gen_codigo

Lista de atributos da tabela filme


Nome Código
fil_codigo fil_codigo
fil_duracaominutos fil_duracaominutos
gen_codigo gen_codigo
cat_codigo cat_codigo

Lista de chaves da tabela filme


Nome Código Primary
pk_fil_codigo pk_fil_codigo X

Tabela fornecedor
Descrição da Tabela fornecedor
Nome fornecedor
Código fornecedor

Relações da Tabela fornecedor


Nome Código Tabela Colunas Chave Estrangeira
69

Filha
pfk_for_ite_codigo pfk_for_ite_codigo item for_codigo

Relações da Tabela fornecedor


Nome Código Tabela Colunas Chave
Pai Estrangeira
pfk_pes_codigo_fornecedor pfk_pes_codigo_fornecedor pessoa for_codigo

Lista de atributos da tabela fornecedor


Nome Código
for_inscricaoestadual for_inscricaoestadual
for_cnpj for_cnpj
for_codigo for_codigo

Lista de chaves da tabela fornecedor


Nome Código Primary
pk_pes_codigo_for pk_pes_codigo_for X

Tabela genero
Descrição da Tabela genero
Nome genero
Código genero

Relações da Tabela genero


Nome Código Tabela Filha Colunas Chave Estrangeira
fk_gen_codigo fk_gen_codig filme gen_codigo
o

Lista de atributos da tabela genero


Nome Código
gen_codigo gen_codigo
gen_descricao gen_descricao
70

Lista de chaves da tabela genero


Nome Código Primary
pk_gen_codigo pk_gen_codigo X

Tabela item
Descrição da Tabela item
Nome item
Código item

Relações da Tabela item


Nome Código Tabela Filha Colunas Chave Estrangeira
pfk_ite_codigo pfk_ite_codigo assistidos ite_codigo
pfk_ite_codigo_il pfk_ite_codigo_il itemlocacao ite_codigo
pfk_ite_codigo_res pfk_ite_codigo_res reserva ite_codigo

Relações da Tabela item


Nome Código Tabela Pai Colunas Chave Estrangeira
pfk_fil_codigo pfk_fil_codigo filme fil_codigo
pfk_for_ite_codigo pfk_for_ite_codigo fornecedor for_codigo

Lista de atributos da tabela item


Nome Código
ite_codigo ite_codigo
ite_titulo ite_titulo
ite_datacompra ite_datacompra
ite_locado ite_locado
fil_codigo fil_codigo
for_codigo for_codigo

Lista de chaves da tabela item


71

Nome Código Primary


pk_ite_codigo pk_ite_codigo X

Tabela itemlocacao
Descrição da Tabela itemlocacao
Nome itemlocacao
Código itemlocacao

Relações da Tabela itemlocacao


Nome Código Tabela Pai Colunas Chave Estrangeira
pfk_ite_codigo_il pfk_ite_codigo_il item ite_codigo
pfk_loc_codigo pfk_loc_codigo locacao loc_codigo

Lista de atributos da tabela itemlocacao


Nome Código
iteloc_dataprevistadevolucao iteloc_dataprevistadevolucao
iteloc_datadevolucao iteloc_datadevolucao
iteloc_diasatrazo iteloc_diasatrazo
iteloc_valordiaria iteloc_valordiaria
loc_codigo loc_codigo
ite_codigo ite_codigo

Lista de chaves da tabela itemlocacao


Nome Código Primary
pfk_ite_loc_cod pfk_ite_loc_cod X

Tabela locacao
Descrição da Tabela locacao
Nome locacao
Código locacao

Relações da Tabela locacao


72

Nome Código Tabela Filha Colunas Chave Estrangeira


pfk_loc_codigo pfk_loc_codigo itemlocacao loc_codigo

Relações da Tabela locacao


Nome Código Tabela Pai Colunas Chave Estrangeira
pfk_aut_codigo pfk_aut_codigo autorizado aut_codigo
pfk_cli_loc_codigo pfk_cli_loc_codigo cliente cli_codigo

Lista de atributos da tabela locacao


Nome Código
loc_codigo loc_codigo
loc_datalocacao loc_datalocacao
loc_subtotal loc_subtotal
loc_valordiarias loc_valordiarias
loc_valortotal loc_valortotal
loc_valorrecebido loc_valorrecebido
loc_pago loc_pago
cli_codigo cli_codigo
aut_codigo aut_codigo
loc_troco loc_troco
Lista de chaves da tabela locacao
Nome Código Primary
pk_loc_codigo pk_loc_codigo X

Tabela pessoa
Descrição da Tabela pessoa
Nome pessoa
Código pessoa

Relações da Tabela pessoa


Nome Código Tabela Colunas Chave
73

Filha Estrangeira
pfk_cli_pes_codigo pfk_cli_pes_codigo cliente cli_codigo
pfk_pes_codigo_fornecedor pfk_pes_codigo_fornecedor fornecedor for_codigo

Relações da Tabela pessoa


Nome Código Tabela Pai Colunas Chave Estrangeira
fk_cid_codi fk_cid_codig cidade cid_codigo
go o

Lista de atributos da tabela pessoa


Nome Código
pes_codigo pes_codigo
pes_nome pes_nome
pes_endereco pes_endereco
pes_complemento pes_complemento
pes_bairro pes_bairro
pes_telefone pes_telefone
pes_cep pes_cep
pes_email pes_email
pes_datacadastro pes_datacadastro
cid_codigo cid_codigo

Lista de chaves da tabela pessoa


Nome Código Primary
pk_pes_codigo pk_pes_codigo X

Tabela reserva
Descrição da Tabela reserva
Nome reserva
Código reserva

Relações da Tabela reserva


74

Nome Código Tabela Pai Colunas Chave Estrangeira


pfk_cli_cod_res pfk_cli_cod_res cliente cli_codigo
pfk_ite_codigo_res pfk_ite_codigo_res item ite_codigo

Lista de atributos da tabela reserva


Nome Código
res_codigo res_codigo
res_datareserva res_datareserva
ite_codigo ite_codigo
cli_codigo cli_codigo
res_situacao res_situacao

Lista de chaves da tabela reserva


Nome Código Primary
asdsadsada asdsadsada X

Tabela usuario
Descrição da Tabela usuario
Nome usuario
Código usuario

Lista de atributos da tabela usuario


Nome Código
usu_codigo usu_codigo
usu_nome usu_nome
usu_senha usu_senha

Lista de chaves da tabela usuario


Nome Código Primary
pk_usu_codigo pk_usu_codigo X

Lista de Referencias
75

Nome Código Tabela Pai Tabela Colunas Chave


Filha Estrangeira
fk_ato_codigo fk_ato_codigo ator atorfilme ato_codigo
fk_cat_codigo fk_cat_codigo categoria filme cat_codigo
fk_cid_codigo fk_cid_codigo cidade pessoa cid_codigo
fk_est_codigo fk_est_codigo estado cidade est_codigo
fk_fil_codigo fk_fil_codigo filme atorfilme fil_codigo
fk_gen_codigo fk_gen_codigo genero filme gen_codigo
pfk_aut_codigo pfk_aut_codigo autorizado locacao aut_codigo
pfk_cli_cod pfk_cli_cod cliente assistidos cli_codigo
pfk_cli_cod_res pfk_cli_cod_res cliente reserva cli_codigo
pfk_cli_loc_codigo pfk_cli_loc_codi cliente locacao cli_codigo
go
pfk_cli_pes_codigo pfk_cli_pes_cod pessoa cliente cli_codigo
igo
pfk_fil_codigo pfk_fil_codigo filme item fil_codigo
pfk_for_ite_codigo pfk_for_ite_codi fornecedor item for_codigo
go
pfk_ite_codigo pfk_ite_codigo item assistidos ite_codigo
pfk_ite_codigo_il pfk_ite_codigo_i item itemlocacao ite_codigo
l
pfk_ite_codigo_res pfk_ite_codigo_ item reserva ite_codigo
res
pfk_loc_codigo pfk_loc_codigo locacao itemlocacao loc_codigo
pfk_pes_cli_aut_codigo pfk_pes_cli_aut cliente autorizado cli_codigo
_codigo
pfk_pes_codigo_fornec pfk_pes_codigo pessoa fornecedor for_codigo
edor _fornecedor

Descrição fk_ato_codigo
Descrição da chave fk_ato_codigo
76

Nome fk_ato_codigo
Código fk_ato_codigo
Tabela Filha atorfilme
Tabela Pai ator
Colunas Chave Estrangeira ato_codigo

Descrição dos Joins em relação à fk_ato_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
ato_codigo ato_codigo

Referência fk_cat_codigo
Descrição da chave fk_cat_codigo
Nome fk_cat_codigo
Código fk_cat_codigo
Tabela Filha filme
Tabela Pai categoria
Colunas Chave Estrangeira cat_codigo

Descrição dos Joins em relação à fk_cat_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
cat_codigo cat_codigo

Referência fk_cid_codigo
Descrição da chave fk_cid_codigo
Nome fk_cid_codigo
Código fk_cid_codigo
Tabela Filha pessoa
Tabela Pai cidade
Colunas Chave Estrangeira cid_codigo

Descrição dos Joins em relação à fk_cid_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
77

cid_codigo cid_codigo

Referência fk_est_codigo
Descrição da chave fk_est_codigo
Nome fk_est_codigo
Código fk_est_codigo
Tabela Filha cidade
Tabela Pai estado
Colunas Chave Estrangeira est_codigo

Descrição dos Joins em relação à fk_est_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
est_codigo est_codigo

Referência fk_fil_codigo
Descrição da chave fk_fil_codigo
Nome fk_fil_codigo
Código fk_fil_codigo
Tabela Filha atorfilme
Tabela Pai filme
Colunas Chave Estrangeira fil_codigo

Descrição dos Joins em relação à fk_fil_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
fil_codigo fil_codigo

Referência fk_gen_codigo
Descrição da chave fk_gen_codigo
Nome fk_gen_codigo
Código fk_gen_codigo
Tabela Filha filme
Tabela Pai genero
78

Colunas Chave gen_codigo


Estrangeira

Descrição dos Joins em relação à fk_gen_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
gen_codigo gen_codigo

Referência pfk_aut_codigo
Descrição da chave pfk_aut_codigo
Nome pfk_aut_codigo
Código pfk_aut_codigo
Tabela Filha locacao
Tabela Pai autorizado
Colunas Chave aut_codigo
Estrangeira

Descrição dos Joins em relação à pfk_aut_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
aut_codigo aut_codigo

Referência pfk_cli_cod
Descrição da chave pfk_cli_cod
Nome pfk_cli_cod
Código pfk_cli_cod
Tabela Filha assistidos
Tabela Pai cliente
Colunas Chave Estrangeira cli_codigo

Descrição dos Joins em relação à pfk_cli_cod


Coluna na Tabela Pai Coluna na Tabela Filha
cli_codigo cli_codigo
79

Referência pfk_cli_cod_res
Descrição da chave pfk_cli_cod_res
Nome pfk_cli_cod_res
Código pfk_cli_cod_res
Tabela Filha reserva
Tabela Pai cliente
Colunas Chave Estrangeira cli_codigo

Descrição dos Joins em relação à pfk_cli_cod_res


Coluna na Tabela Pai Coluna na Tabela Filha
cli_codigo cli_codigo

Referência pfk_cli_loc_codigo
Descrição da chave pfk_cli_loc_codigo
Nome pfk_cli_loc_codigo
Código pfk_cli_loc_codigo
Tabela Filha locacao
Tabela Pai cliente
Colunas Chave Estrangeira cli_codigo

Descrição dos Joins em relação à pfk_cli_loc_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
cli_codigo cli_codigo

Referência pfk_cli_pes_codigo
Descrição da chave pfk_cli_pes_codigo
Nome pfk_cli_pes_codigo
Código pfk_cli_pes_codigo
Tabela Filha cliente
Tabela Pai pessoa
Colunas Chave cli_codigo
Estrangeira
80

Descrição dos Joins em relação à pfk_cli_pes_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
pes_codigo cli_codigo

Referência pfk_fil_codigo
Descrição da chave pfk_fil_codigo
Nome pfk_fil_codigo
Código pfk_fil_codigo
Tabela Filha item
Tabela Pai filme
Colunas Chave Estrangeira fil_codigo

Descrição dos Joins em relação à pfk_fil_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
fil_codigo fil_codigo

Referência pfk_for_ite_codigo
Descrição da chave pfk_for_ite_codigo
Nome pfk_for_ite_codigo
Código pfk_for_ite_codigo
Tabela Filha item
Tabela Pai fornecedor
Colunas Chave Estrangeira for_codigo

Descrição dos Joins em relação à pfk_for_ite_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
for_codigo for_codigo

Referência pfk_ite_codigo
Descrição da chave pfk_ite_codigo
Nome pfk_ite_codigo
81

Código pfk_ite_codigo
Tabela Filha assistidos
Tabela Pai item
Colunas Chave Estrangeira ite_codigo

Descrição dos Joins em relação à pfk_ite_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
ite_codigo ite_codigo

Referência pfk_ite_codigo_il
Descrição da chave pfk_ite_codigo_il
Nome pfk_ite_codigo_il
Código pfk_ite_codigo_il
Tabela Filha itemlocacao
Tabela Pai item
Colunas Chave ite_codigo
Estrangeira

Descrição dos Joins em relação à pfk_ite_codigo_il


Coluna na Tabela Pai Coluna na Tabela Filha
ite_codigo ite_codigo

Referência pfk_ite_codigo_res
Descrição da chave pfk_ite_codigo_res
Nome pfk_ite_codigo_res
Código pfk_ite_codigo_res
Tabela Filha reserva
Tabela Pai item
Colunas Chave ite_codigo
Estrangeira

Descrição dos Joins em relação à pfk_ite_codigo_res


82

Coluna na Tabela Pai Coluna na Tabela Filha


ite_codigo ite_codigo

Referência pfk_loc_codigo
Descrição da chave pfk_loc_codigo
Nome pfk_loc_codigo
Código pfk_loc_codigo
Tabela Filha itemlocacao
Tabela Pai locacao
Colunas Chave Estrangeira loc_codigo

Descrição dos Joins em relação à pfk_loc_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
loc_codigo loc_codigo

Referência pfk_pes_cli_aut_codigo
Descrição da chave pfk_pes_cli_aut_codigo
Nome pfk_pes_cli_aut_codigo
Código pfk_pes_cli_aut_codigo
Tabela Filha autorizado
Tabela Pai cliente
Colunas Chave Estrangeira cli_codigo

Descrição dos Joins em relação à pfk_pes_cli_aut_codigo


Coluna na Tabela Pai Coluna na Tabela Filha
cli_codigo cli_codigo

Referência pfk_pes_codigo_fornecedor
Descrição da chave pfk_pes_codigo_fornecedor
Nome pfk_pes_codigo_fornecedor
Código pfk_pes_codigo_fornecedor
Tabela Filha fornecedor
83

Tabela Pai pessoa


Colunas Chave Estrangeira for_codigo

Descrição dos Joins em relação à pfk_pes_codigo_fornecedor


Coluna na Tabela Pai Coluna na Tabela Filha
pes_codigo for_codigo

Lista de Usuários
Nome Código
postgres postgres

Usuário postgres
Descrição do usuário postgres
Nome Postgres
Código Postgres

Lista das tabelas do usuário postgres


Nome Código
Assistidos assistidos
Ator ator
Atorfilme atorfilme
Autorizado autorizado
Categoria categoria
Cidade cidade
Cliente cliente
Estado estado
Filme filme
Fornecedor fornecedor
Gênero genero
Item item
Itemlocacao itemlocacao
84

Locação locacao
Pessoa pessoa
Reserva reserva
Usuário Usuário

Você também pode gostar