43
1 FACULDADE ANHANGUERA DE PORTO ALEGRE TECNOLOGIA EM ANALISE E DESENVOLVIMENTO DE SISTEMAS Jair Pereira RA:7581609868 Rodrigo da Silva Bueno RA: 7581610567 Luciano Fagundes RA: 6789414136 Andre Fagundes RA: 6576310339 ATPS – SISTEMAS DE BANCO DE DADOS RELATORIO FINAL Tutor: Rosi Piber

Tads_atps_abnt - Sistemas de Banco de Dados_vf (1)

Embed Size (px)

DESCRIPTION

trabalho de sistemas de banco de dados

Citation preview

20

FACULDADE ANHANGUERA DE PORTO ALEGRETECNOLOGIA EM ANALISE E DESENVOLVIMENTO DE SISTEMAS

Jair Pereira RA:7581609868 Rodrigo da Silva Bueno RA: 7581610567Luciano Fagundes RA: 6789414136Andre Fagundes RA: 6576310339

ATPS SISTEMAS DE BANCO DE DADOSRELATORIO FINAL

Tutor: Rosi Piber

PORTO ALEGRE RIO GRANDE DO SUL22/04/2014

Jair Pereira RA:7581609868 Rodrigo da Silva Bueno RA: 7581610567Luciano Fagundes RA: 6789414136Andre Fagundes RA: 6576310339

ATPS SISTEMAS DE BANCO DE DADOS

Relatrio Final dos processos utilizados para resoluo dos problemas propostos da Atividade Praticas Supervisionadas da cadeira Sistemas de Banco de Dados. Orientador: Rosi Piber

PORTO ALEGRE RIO GRANDE DO SUL22/04/2014SUMRIO

1INTRODUCAO41.1Problema41.2Objetivos41.2.1Geral41.3Metodologia42DESENVOLVIMENTO42.1A Escolha do Tipo de Banco de Dados42.1.1Comparativo SGBD x Arquivos42.2Modelo de Dados62.2.1Conceito62.2.2Modelos de Dados mais Utilizados62.3Escolha do Modelo Final82.3.2DER Diagrama Entidade Relacionamento122.3.3Normalizao de Dados152.3.4Algebra Relacional183CONCLUSO224BIBLIOGRAFIA235ANEXO24

INTRODUCAO

Problema

A empresa LFLXZ Ltda. est informatizando a parte de controle de seu estacionamento. Diante disso est contratando sua equipe como uma consultoria que desenvolver um Modelo de Dados de forma a organizar todas as informaes em um SGBD (Sistema Gerenciador de Banco de Dados). A modelagem de dados dever ser realizada a partir da entidade Estacionamento, gerada a partir do levantamento de dados elaborado e com vistas a atender a demanda do cliente

Objetivos

Geral

Elaborar um modelo de dados para o sistema de informao para controle de umestacionamento.

Metodologia

Utilizar as leituras obrigatrias e vivencias do grupo.

DESENVOLVIMENTO

A Escolha do Tipo de Banco de Dados

Comparativo SGBD x Arquivos

Sistemas de Gerenciamento de Arquivos

A implantao e interao com o sistema no fcil, no possvel saber quem chave estrangeira, e quem chave primaria, qualquer dano ao banco de dados, todos os programas so afetados virtualmente e todos os usurios podem usa-lo como documentao.No processamento tradicional de arquivos, o programa que ir manipular os dados deve conter este tipo de informao, ficando limitado a manipular as informaes que o mesmo conhece. A estrutura dos dados est incorporadaao programa de acesso e desta forma, qualquer alterao na estrutura de arquivos implica na alterao no cdigo fonte de todos os programas

SGBD Sistema Gerenciador de Banco de Dados

O SGBD mantm no somente os dados mas tambm a forma como os mesmos soarmazenados, contendo uma descrio completa do banco de dados. Estas informaesso armazenadas no catlogo do SGBD, o qual contm informaes como a estrutura de cada arquivo, o tipo e o formato de armazenamento de cada tipo de dado, restries, etc. A informao armazenada no catlogo chamada de Meta Dados , integrao com o sistema mais fcil, e as alteraes so mais claras.

Quadro 1 Prs e Contras de Cada Tipo de Banco de Dados

TipoPrsContras

Arquivo- Exclusividade sobre a arquitetura- No h custo com licena, somente custo de desenvolvimento-Banco de Dados-Aplicaes especficas;-Redundncia de dados;

-Dependncia entre dados e aplicativos;-Menos segurana;-A integridade deve ser mantida em cada programa;-O controle de concorrncia deve ser feito pelos programas.

SGBD-Aplicaes mais genricas;-Controle de redundncia de dados;-Independncia de dados e aplicativos;-Mais segurana;-O controle e a manuteno integral dos dados so feitos pelo SGBD;-O controle de concorrncia feito pelo SGBD.- Exige capacidade tcnica apurada dependendo do fornecedor da soluo (ex: Oracle).

- Custo elevado para alguns tipos de fornecedor

Modelo de Dados

Conceito

Modelar significa criar um modelo que explique as caractersticas de funcionamento e comportamento de um software a partir do qual ele ser criado, facilitando seu entendimento e seu projeto, atravs das caractersticas principais que evitaro erros de programao, projeto e funcionamento. uma parte importante do desenho de um sistema de informao.A modelagem de dados a primeira etapa de um projeto que envolva banco de dados e tem como seu principal objetivo o desenvolvimento de um modelo que contenha entidades e relacionamentos, e que com isso seja possvel representas as especificaes das informaes do negcio (OLIVEIRA,2002).A modelagem de dados ajuda a organizar a forma de pensamento sobre os dados, demonstrando o significado.

A abordagem que se dispensa ao assunto normalmente atende trs perspectivas: Modelagem Conceitual, Modelagem Lgica e Modelagem Fsica. A primeira e conhecida e usada como representao de alto nvel e considera exclusivamente o ponto de vista do usurio criador do dado, a segunda j agrega alguns detalhes de implementao e a terceira demonstra como os dados so fisicamente armazenados.Um modelo de dados a coleo de, pelo menos, 3 componentes:

1) Um conjunto de tipos de estruturas de dadosDefine o tipo de dados e como se inter-relacionam2) Um conjunto de operadoresOperaes que permitem manipular as estruturas de dados definidas.3) Um conjunto de regras de integridadeRegras que definem que dados so vlidos

Modelos de Dados mais Utilizados

Modelo Relacional

O Modelo Relacional foi introduzido por Edgar Frank Codd (1970) e tornou-se um padro para aplicaes comerciais, devido a sua simplicidade e desempenho. um modelo formal, bastante representativo e ao mesmo tempo bastante simples, foi o primeiro modelo de dados descrito teoricamente.Revelou-se ser o mais flexvel e adequado ao solucionar os vrios problemas que se colocam no nvel da concepo e implementao da base de dados. A estrutura fundamental do modelo relacional a relao (tabela). Uma relao constituda por um ou mais atributos (campos) que traduzem o tipo de dados a armazenar. Cada instncia do esquema (linha) chamada de tupla (registro).

Ex Software: MYSQL

Modelo Orientado a Objeto

A motivao para seu surgimento est em funo dos limites de armazenamento e representao semntica impostas no modelo relacional. Antevia-se que tais sistemas ofereceriam o ferramental necessrio para as novas categorias de aplicaes que no estavam sendo adequadamente suportadas por bases de dados relacionais. Um aspecto chave em programao orientada a objetos o conceito de abstrao, que permite abstrair (nesta denio) substncia como declaraes de classes; valores e propriedades mensurveis como declaraes de tipos; e aes como declaraes de mtodos ou procedimentos. Um objeto encapsula uma estrutura que s manipulvel atravs de mtodos componentes de uma interface pblica.

Ex Software: DB4O

DB4O, um poderoso SGBDOO para manipulao de objetos como base de dados, fcil maneira de se armazenar objetos nativamente em JAVA ou.NET(Prxima Release da suporte a PHP), possui uma performance ate 40X maior que qualquer banco de dados relacional, processa aproximadamente 200.000 objetos por segundo, seu cdigo aberto e seu custo muito baixo(praticamente zero).

Modelo Hierrquico

Uma base de dados hierrquica um tipo de sistema de gerenciamento de banco de dados que conecta registos numa estrutura de dados em rvore atravs de ligaes de tal modo que cada tipo de registo tenha apenas um possuidor. A base de dados se baseia em um Modelo de Entidades e Relacionamentos: cada registro uma coleo de atributos (campos), cada um dos quais contendo somente uma informao; uma ligao a associao entre dois registros. Por exemplo: em uma dada base de dados comercial, uma encomenda (i.e. registro) possuda por um nico cliente.

Ex Software: IMS

Escolha do Modelo Final

Justificativa

Para os dados a serem processados n SGBD vamos utilizar o modelo relacional pela sua simplicidade de implantao e alto grau de compatibilidade com os maiores softwares de SGBD do mercado.Figura 1 Exemplo Modelo Relacional

Esquema do Banco de Dados

Tabela Estacionamento

Quadro 2 Esquema Tabela Estacionamento

Tabela:Estacionamento

CampoDescrioTipoTamanhoRestrioComentrios

pkid_estacionamentoNmero de cadastro do cliente no estacionamentointerger-Not nullSequencial

fkid_clienteNmero de cadastro do clienteinterger-Not nullNmero do cadastro na tabela Cliente

pkplaca_veiculoNmero da placa do veculo do clientevarchar7Not nullComposto por 3 letras e 4 nmeros (AAA9999)

pknro_vagaNmero do cadastro da vagainterger-Not nullNmero do cadastro na tabela Vaga

statusStatus da vaga no estacionamento do clientevarchar3Not nullDefault:LBD(Liberada), outros valores:OCP(Ocupada)RES(Reservada)PND(Pendente)

Tabela Vaga

Quadro 3 Esquema Tabela Vaga

Tabela:Vaga

CampoDescrioTipoTamanhoRestrioComentrios

pknro_vagaNmero do cadastro da vaga no banco de dadosinterger-Not nullSequencial

locl_vagaLocalizao da vaga no estacionamentovarchar250Not nullLocal onde est localizada a vaga no mapa do estacionamento. Ex.: Lote A1...

fksigla_vagaDescrio da sigla da vagavarchar3Not nullApenas MEN(Mensalista)ROT(Rotativa)

fkstatus_vaga Sigla do status da vaga no estacionamentovarchar3Not nullSigla cadastrada na tabela Status

Tabela Cliente

Quadro 4 Esquema Tabela Cliente

Tabela:Cliente

CampoDescrioTipoTamanhoRestrioComentrios

pkid_clienteNmero de cadastro do cliente no banco de dadosinterger-Not nullSequencial

nome_clienteNome completo do clientevarchar250Not null-

pkcpf_clienteNmero do CPF do clientevarchar12Not nullFormatado com a mscara 999999999-99

telefone_comlNmero do telefone comercial do clienteinterger11Not nullComposto pelo DDD e nmero do telefone

telefone_reslNmero do telefone residencial do clienteinterger11Not nullComposto pelo DDD e nmero do telefone

telefone_celrNmero do telefone celular do clienteinterger11Not nullComposto pelo DDD e nmero do telefone

email Endereo de e-mail do clientevarchar200nullDever conter o smbolo @

pkplaca_veiculoNmero da placa do veculo do clientevarchar7Not nullComposto por 3 letras e 4 nmeros (AAA9999)

modelo_veiculoDescrio do modelo do veculovarchar40null-

cor_veiculoDescrio da cor do veculovarchar40null-

tipo_veiculoDescrio do tipo do veculovarchar40null-

ano_veiculoAno de fabricao do veculoyear4nullApenas o ano com 4 caracteres(YYYY)

Tabela Tipo Vaga

Quadro 5 Esquema Tabela Tipo Vaga

Tabela:Tipo_Vaga

CampoDescrioTipoTamanhoRestrioComentrios

pknro_vagaNmero do cadastro da vaga na tabela vagainterger-Not nullNmero do cadastro da vaga feito na tabela vaga

pktipo_vagaDescrio completa do tipo de vagavarchar50Not nullEx.: Mensalista, Rotativa

valor_vaga Descrio da sigla do statusfloat10Not null-

sigla_vagaDescrio da sigla da vagavarchar3Not nullApenas MEN(Mensalista)ROT(Rotativa)

Tabela Status

Quadro 6 Esquema Tabela Status

Tabela:Status

CampoDescrioTipoTamanhoRestrioComentrios

pkid_statusNmero do cadastro do status no banco de dadosinterger-Not nullSequencial

desc_statusDescrio completa do statusvarchar50Not nullEx.: Liberada, Pendente,Reservada, Ocupada

pksigla_status Descrio da sigla do statusvarchar3Not nullDefault:LBD(Liberada), outros valores:OCP(Ocupada)RES(Reservada)PND(Pendente)

Instancia do Banco de Dados

Tabela Estacionamento

Quadro 7 Instncia Tabela Estacionamento

id_estacionamentoid_clienteplaca_veiculonro_vagastatus

13IIU629210LBD

22IKP606011OCP

31KPQ161612PND

Tabela Cliente

Quadro 8 Instncia Tabela Cliente

id_clientenome_clientecpf_clientetelefone_comltelefone_resltelefone_celremailplaca_veiculomodelo_veiculocor_veiculotipo_veiculoano_veiculo

1Fulano12345678910513230303051323030306599874561teste@teste.com.IIU6292CorsaAzulPasseio1998

2Ciclano98765431241513254088951325408896198745612teste1@teste.comIKP6060CeltaCinzaPasseio2012

3Beltrano12378945678613255447861325544785184561237teste3@teste.comKPQ1616Ford KaVermelhoPasseio2003

Tabela Vaga

Quadro 9 Instncia Tabela Vaga

nro_vagalocl_vagasigla_vagastatus_vaga

10LOTE A1MEN2

11LOTE A2ROT3

12LOTE A3ROT1

Tabela Tipo Vaga

Quadro 10 Instncia Tabela Tipo Vaga

nro_vagatipo_vagavalor_vagasigla_vaga

10Mensalista300MEN

11Rotativa5ROT

12Rotativa5ROT

Tabela Status

Quadro 11 Instncia Tabela Status

id_statusdesc_statussigla_status

1PendentePND

2LiberadaLBD

3OcupadaOCP

DER Diagrama Entidade Relacionamento

Conceito de Cardinalidade

um dos princpios fundamentais sobre o relacionamento de um banco de dados relacional. Nela so definidos os graus de relao entre duas entidades ou tabelas. O relacionamento vrios-para-vrios (N:N) entre os registros da tabela doutor e os registro da tabela paciente, pois vrios mdicos podero atender vrios pacientes, um mdico atende diversos paciente, assim como um paciente pode ser atendido por diversos mdicos;O relacionamento um-para-vrios (1:N) no relacionamento entre a tabela departamento em relao a tabela de mdicos, pois um doutor, poder trabalhar em somente um departamento do hospital, contudo, um departamento poder ter vrios doutores.O relacionamento um-para-um (1:1) ser usado nos casos onde o registro de uma tabela s poder ter uma associao com um registro de outra tabela. No nosso caso, isso caberia na relao entre um quarto de apartamento e um paciente. Pois um paciente s poder estar em um determinado apartamento, e cada apartamento s poder abrigar um determinado paciente (partindo do princpio de quartos individuais).O relacionamento zero-para-vrios (0:N) ser usado nos casos onde o registro de uma tabela no precisa ter uma associao com um registro de outra tabela. No nosso caso, isso caberia na relao entre um quarto de apartamento e uma televiso. Pois o quarto poder no ter nenhuma televiso, e a televiso pode estar em vrios quartos.

Demonstrao Grfica do Modelo (DER)

Figura 1 Modelo DER

Cardinalidade para o Modelo (DER)

1. Entidade Cliente: o relacionamento dos dados da tabela cliente ser com a entidade estacionamento, um-para-vrios(1:N), ou seja um cliente pode ter mais de um estacionamento cadastrado para si mesmo.2. Entidade estacionamento: o relacionamento dos dados da tabela estacionamento ser com as entidades cliente, vaga e status, onde o relacionamento com cliente ser um-para-um (1:1), ou seja um estacionamento pode estar somente cadastrado para um cliente. O relacionamento com a vaga ser um-para-um (1:1), ou seja um estacionamento pode estar somente cadastrado com uma vaga. O relacionamento com status ser um-para-um (1:1), ou seja um estacionamento s pode ter um status cadastrado para si mesmo.3. Entidade vaga: o relacionamento dos dados da tabela vaga ser com as entidades estacionamento, tipo_vaga e status, onde o relacionamento com estacionamento ser zero-para-vrios(0:N), ou seja uma vaga pode estar cadastrado em um ou nenhum estacionamento. O relacionamento com tipo_vaga ser um-para-um(1:), ou seja uma vaga s pode ter um tipo de vaga cadastrado para si mesma. O relacionamento com status ser um-para-um(1:1), ou seja uma vaga s pode ter um status cadastrado para si mesma.4. Entidade tipo_vaga: o relacionamento dos dados da tabela tipo_vaga ser com a entidade vaga, onde o relacionamento com vaga ser zero-para-vrios(0:N), ou seja um tipo de vaga pode estar cadastrado em uma ou nenhuma vaga.5. Entidade status: o relacionamento dos dados da tabela status ser com as entidades estacionamento e vaga, onde o relacionamento com estacionamento ser zero-para-vrios(0:N), ou seja um status pode estar cadastrado em um ou nenhum estacionamento. O relacionamento com vaga ser zero-para-vrios(0:N), ou seja um status pode estar cadastrado em uma ou nenhuma vaga.

Demonstrao em MySql do (DER)

Figura 2 Modelo DER (MYSQL)

Normalizao de Dados

Conceito de Normalizao

uma srie de passos que se seguem no projeto de um banco de dados, que permitem um armazenamento consistente e um eficiente acesso aos dados em bancos de dados relacionais. Esses passos reduzem a redundncia de dados e as chances dos dados se tornarem inconsistentes. No entanto, muitos SGBDs relacionais no tm separao suficiente entre o projeto lgico da base de dados e a implantao fsica do banco de dados, e isso tem como consequncia que as consultas feitas a um banco de dados totalmente normalizado tm um mau desempenho. Nestes casos, usa-se por vezes a desnormalizao para melhorar o desempenho, com o custo de menores garantias de consistncia.

Os tipos de normalizao de dados so: Primeira Forma Normal(1FN) Segunda Forma Normal(2FN) Terceira Forma Normal(3FN) Quarta Forma Normal(4FN) Forma Normal de Boyce-Codd (BCNF) Quinta Forma Normal (5FNou PJ/NF) Domain-Key Normal Form(DK/NF)

Normalizao (1FN) - Primeiro Forma de Normalizao

Uma tabela est na 1FN, se e somente se, no possuir atributos multivalorados. Possveis problemas que a forma apresenta so redundncia e anomalias de atualizao.

Quadro 12 (1FN)

cliente-id_cliente -id_estacionamento -nome_cliente-cpf_cliente -telefone_coml-telefone_resl-telefone_celr-email-placa_veiculo -modelo_veiculo-cor_veiculo-tipo_veiculo-ano_veiculo

estacionamento-id_estacionamento -id_cliente -placa_veiculo -modelo_veiculo-cor_veiculo-tipo_veiculo-ano_veiculo-nro_vaga -sigla_vaga -status

Normalizao (2FN) - Segunda Forma de Normalizao

Uma relao est na 2FN se, e somente se, estiver na 1FN e cada atributo no chave for dependente da chave primria inteira, isto , cada atributo no-chave no poder ser dependente de apenas parte da chave. Maior independncia de dados, Redundncias e anomalias: dependncias funcionais indiretas.

Quadro 13 (2FN)

estacionamento-id_estacionamento -id_cliente -placa_veiculo -modelo_veiculo-cor_veiculo-tipo_veiculo-ano_veiculo-nro_vaga -sigla_vaga -status

vaga-nro_vaga -locl_vaga-sigla_vaga-status_vaga

Normalizao (3FN) - Segunda Forma de Normalizao

Uma relao R est na 3FN, se estiver na 2FN e cada atributo no-chave de R no possuir dependncia transitiva, para cada chave candidata de R. Maior independncia de dados;3FN gera representaes lgicas finais na maioria das vezes;Redundncias e anomalias: dependncias funcionais multivaloradas.Quadro 14 (3FN)

cliente-id_cliente -nome_cliente-cpf_cliente -telefone_coml-telefone_resl-telefone_celr-email-placa_veiculo -modelo_veiculo-cor_veiculo-tipo_veiculo-ano_veiculo

estacionamento-id_estacionamento -id_cliente -placa_veiculo -nro_vaga -sigla_vaga -status

vaga-nro_vaga -locl_vaga-sigla_vaga-status

tipo_vaga-nro_vaga -tipo_vaga -valor_vaga-sigla_vaga

status-id_status -desc_status-sigla_status

Algebra Relacional

Conceito de Algebra Relacional

uma linguagem de consulta formal, porm procedimental, ou seja, o usurio d as instrues ao sistema para que o mesmo realize uma sequncia de operaes na base de dados para calcular o resultado desejado.A lgebra Relacional define operadores para atuar nas tabelas (semelhante aos operadores +, -, etc. da lgebra que estamos acostumados) para chegar ao resultado desejado.A forma de trabalho desta linguagem de consulta a de pegar uma ou mais tabelas (conforme necessidade) como entrada de dados e produzir uma nova tabela como resultado das operaes.

Descrio das Operaes

Seleo

uma operao que para um conjunto inicial fornecido como argumento, produz um subconjunto estruturalmente idntico, mas apenas com os elementos do conjunto original que atendem a uma determinada condio (chamada de predicado). A seleo pode ser entendida como uma operao que filtra as linhas de uma relao(tabela), e uma operao unria, pois opera sobre um nico conjunto de dados.

Resultado subconjunto horizontal de uma relao Operadores de comparao : =, =, Operadores lgicos: ^ (and) V (or) (not)

Projeo

Produz um conjunto onde h um elemento para cada elemento do conjunto de entrada, sendo que a estrutura dos membros do conjunto resultante definida nos argumentos da operao. Pode ser entendida como uma operao que filtra as colunas de uma tabela. Por operar sobre apenas um conjunto de entrada classificada como uma operao unria.

Unio

Produz como resultado uma Relao que contm todas as linhas da primeira Relao seguidas de todas as linhas da segunda tabela. A Relao resultante possui a mesma quantidade de colunas que as relaes originais, e tem um nmero de linhas que no mximo igual soma das linhas das relaes fornecidas como operandos, j que as linhas que so comuns a ambas as relaes aparecem uma nica vez no resultado.Obs: As relaes devem possuir o mesmo nmero de atributos.

Interseco

Esta uma operao adicional que produz como resultado uma tabela que contm, sem repeties, todos os elementos que so comuns s duas tabelas fornecidas como operandos. As tabelas devem ser unio-compatveis.

Diviso

Diviso uma operao da lgebra relacional utilizada quando se deseja extrair de uma relao R1 uma determinada parte que possui as caractersticas (valores de atributos) da relao R2.

Diferena

uma operao que requer como operandos duas relaes unio-compatveis, ou seja, estruturalmente idnticas. O resultado uma relao que possui todas as linhas que existem na primeira relao e no existem na segunda.

Juno

O resultado da operao juno natural uma relao com todas as combinaes das tuplas na relao1 (R1) e relao2 (R2) nas quais os seus atributos em comum so iguais. uma operao que produz uma combinao entre as linhas de uma relao com as linhas correspondentes de outra relao, sendo em princpio correspondente a uma seleo pelos atributos de relacionamento sobre um produto cartesiano dessas relaes:A operao de juno foi criada porque esse tipo de combinao de tabelas muito comum, facilitando com isso a escrita de expresses. A tabela resultante de uma juno tem todas as colunas da primeira tabela e todas da segunda tabela.

Exemplos Prticos de Acordo com Problema Proposto

Seleo

Comando select * from estacionamento where id_cliente = 3.Figura 3 Exemplo consulta Seleo

Projeo

Comando select nome_cliente, cpf_cliente, placa_veiculo from cliente where cor_veiculo = 'Vermelho'Figura 4 Exemplo consulta Projeo

Unio

Comando select cli.nome_cliente, es.placa_veiculo, vg.locl_vaga from estacionamento as es inner join cliente as cli on cli.id_cliente = es.id_cliente inner join vaga as vg on vg.nro_vaga = es.nro_vaga

Figura 5 Exemplo consulta Uniao

Interseco

Comando select vg.nro_vaga, vg.status_vaga, es.placa_veiculo from estacionamento as es inner join vaga as vg on vg.status_vaga = es.`status`

Figura 6 Exemplo consulta Interseo

Diviso

Comando select es.id_cliente, es.placa_veiculo from estacionamento as es inner join cliente as cli on es.placa_veiculo = cli.placa_veiculoFigura 7 Exemplo consulta Diviso

Diferena

Comando select cli.nome_cliente, cli.placa_veiculo, es.nro_vaga from cliente as cliinner join estacionamento as es on es.id_cliente = cli.id_cliente

Figura 8 Exemplo consulta Diferena

Juno

Comando select es.placa_veiculo, vg.sigla_vaga from estacionamento as es left join vaga as vg on vg.status_vaga = es.`status`

Figura 9 Exemplo consulta Juno

CONCLUSO

O modelo relacional foi proposto por Edgar Codd em 1970, como uma nova maneira de representao de dados. Neste seu trabalho Codd mostrou que uma viso relacional dos dados permite a sua descrio em uma maneira natural, sem que sejam necessriasestruturas adicionais para sua representao, provendo uma maior independncia dosdados em relao aos programas. Em complementao, apresentou bases para tratarproblemas como redundncia e consistncia. Mais tarde, em outro trabalho, Codddefiniu uma lgebra relacional e provou, por meio de sua equivalncia com o clculorelacional, que ela era relacionalmente completa, dando fundamentao terica aomodelo relacional.Este modelo, por suas caractersticas e por sua completitude, mostrou ser umaexcelente opo, superando os modelos mais usados quela poca: o de redes e o hierrquico. A maior vantagem do modelo relacional sobre seus antecessores arepresentao simples dos dados e a facilidade com que consultas complexas podem ser expressas e foi utilizado para tratar o problema proposto das entidades estacionamento e vaga.

BIBLIOGRAFIA

PRESSMAN, Roger S. Engenharia de Software. 6. ed. So Paulo: McGraw-Hill, 2006.SILVA, Nelson Peres. Anlise e estrutura de sistemas de informao. So Paulo: rica, 2007.SOARES, Mrcio V. et al. Algoritmos e Lgica de Programao. 2. ed. So Paulo: CengageLearning, 2011.WIKIPEDIA,NORMA FORMAL, PRIMEIRA, http://pt.wikipedia.org/wiki/Normaliza%C3%A7%C3%A3o_de_dados#Primeira_Forma_Normal, Ultima Atualizao: 11/02/2014http://www.devmedia.com.br/algebra-relacional-parte-i/2663, Ultima Atualizao: 01/04/2014http://www.macoratti.net/13/06/sql_arcb.htm : Ultima Atualizao : 30/03/2012https://dev.mysql.com/ : Ultima Atualizao 12/04/2012

http://www.heidisql.com/ : Ultima Atualizao: 30/03/2014

ANEXO

Comando de configurao do banco de dados utilizado no projeto com a ferramenta open source MySql e HeidiSQL.

-- ---------------------------------------------------------- Servidor: 127.0.0.1-- Verso do servidor: 5.6.12-log - MySQL Community Server (GPL)-- OS do Servidor: Win32-- HeidiSQL Verso: 8.2.0.4675-- --------------------------------------------------------

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET NAMES utf8 */;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

-- Copiando estrutura do banco de dados para atpsCREATE DATABASE IF NOT EXISTS `atps` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;USE `atps`;

-- Copiando estrutura para tabela atps.clienteCREATE TABLE IF NOT EXISTS `cliente` ( `id_cliente` int(11) NOT NULL, `nome_cliente` varchar(250) COLLATE utf8_bin NOT NULL, `cpf_cliente` varchar(12) COLLATE utf8_bin NOT NULL, `telefone_coml` int(11) NOT NULL, `telefone_resl` int(11) NOT NULL, `telefone_celr` int(11) NOT NULL, `email` varchar(200) COLLATE utf8_bin DEFAULT NULL, `placa_veiculo` varchar(7) COLLATE utf8_bin NOT NULL, `modelo_veiculo` varchar(40) COLLATE utf8_bin DEFAULT NULL, `cor_veiculo` varchar(40) COLLATE utf8_bin DEFAULT NULL, `tipo_veiculo` varchar(40) COLLATE utf8_bin DEFAULT NULL, `ano_veiculo` year(4) DEFAULT NULL, PRIMARY KEY (`id_cliente`), KEY `cpf_cliente` (`cpf_cliente`), KEY `placa_veiculo` (`placa_veiculo`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- Exportao de dados foi desmarcado.

-- Copiando estrutura para tabela atps.estacionamentoCREATE TABLE IF NOT EXISTS `estacionamento` ( `id_estacionamento` int(11) NOT NULL, `id_cliente` int(11) NOT NULL, `placa_veiculo` varchar(7) COLLATE utf8_bin DEFAULT NULL, `nro_vaga` int(11) NOT NULL, `status` varchar(3) COLLATE utf8_bin NOT NULL, KEY `id_estacionamento` (`id_estacionamento`), KEY `id_cliente` (`id_cliente`), KEY `placa_veiculo` (`placa_veiculo`), KEY `nro_vaga` (`nro_vaga`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- Exportao de dados foi desmarcado.

-- Copiando estrutura para tabela atps.statusCREATE TABLE IF NOT EXISTS `status` ( `id_status` int(11) NOT NULL AUTO_INCREMENT, `desc_status` varchar(50) COLLATE utf8_bin DEFAULT NULL, `sigla_status` varchar(3) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`id_status`), KEY `sigla_status` (`sigla_status`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- Exportao de dados foi desmarcado.

-- Copiando estrutura para tabela atps.tipo_vagaCREATE TABLE IF NOT EXISTS `tipo_vaga` ( `nro_vaga` int(11) NOT NULL, `tipo_vaga` varchar(50) COLLATE utf8_bin DEFAULT '0', `valor_vaga` varchar(50) COLLATE utf8_bin DEFAULT NULL, `sigla_vaga` varchar(3) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`nro_vaga`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- Exportao de dados foi desmarcado.

-- Copiando estrutura para tabela atps.vagaCREATE TABLE IF NOT EXISTS `vaga` ( `nro_vaga` int(11) NOT NULL, `locl_vaga` varchar(250) COLLATE utf8_bin NOT NULL, `sigla_vaga` varchar(3) COLLATE utf8_bin NOT NULL, `status_vaga` varchar(3) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`nro_vaga`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- Exportao de dados foi desmarcado./*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

-- ---------------------------------------------------------- Servidor: 127.0.0.1-- Verso do servidor: 5.6.12-log - MySQL Community Server (GPL)-- OS do Servidor: Win32-- HeidiSQL Verso: 8.2.0.4675-- --------------------------------------------------------

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET NAMES utf8 */;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

-- Copiando estrutura do banco de dados para atpsCREATE DATABASE IF NOT EXISTS `atps` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;USE `atps`;

-- Copiando estrutura para tabela atps.clienteCREATE TABLE IF NOT EXISTS `cliente` ( `id_cliente` int(11) NOT NULL, `nome_cliente` varchar(250) COLLATE utf8_bin NOT NULL, `cpf_cliente` varchar(12) COLLATE utf8_bin NOT NULL, `telefone_coml` int(11) NOT NULL, `telefone_resl` int(11) NOT NULL, `telefone_celr` int(11) NOT NULL, `email` varchar(200) COLLATE utf8_bin DEFAULT NULL, `placa_veiculo` varchar(7) COLLATE utf8_bin NOT NULL, `modelo_veiculo` varchar(40) COLLATE utf8_bin DEFAULT NULL, `cor_veiculo` varchar(40) COLLATE utf8_bin DEFAULT NULL, `tipo_veiculo` varchar(40) COLLATE utf8_bin DEFAULT NULL, `ano_veiculo` year(4) DEFAULT NULL, PRIMARY KEY (`id_cliente`), KEY `cpf_cliente` (`cpf_cliente`), KEY `placa_veiculo` (`placa_veiculo`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- Copiando dados para a tabela atps.cliente: ~15 rows (aproximadamente)/*!40000 ALTER TABLE `cliente` DISABLE KEYS */;INSERT INTO `cliente` (`id_cliente`, `nome_cliente`, `cpf_cliente`, `telefone_coml`, `telefone_resl`, `telefone_celr`, `email`, `placa_veiculo`, `modelo_veiculo`, `cor_veiculo`, `tipo_veiculo`, `ano_veiculo`) VALUES(1, 'Paulo Nunes Maciel', '84854911573', 2147483647, 2147483647, 2147483647, '[email protected]', 'ILM4540', 'SpaceCross', 'Vermelho', 'Perua', '2005'),(2, 'Rodrigo Sander Menegassi', '64952647200', 2147483647, 2147483647, 2147483647, '[email protected]', 'DPV4540', 'Palio Weekend', 'Cinza', 'Perua', '2009'),(3, 'Carlos Alberto Silva', '74865728260', 512421138, 2147483647, 2147483647, '[email protected]', 'IAV1546', 'Ecosport', 'Preta', 'Perua', '2008'),(4, 'Lucas Klein Pereira', '05987430739', 512421149, 2147483647, 2147483647, '[email protected]', 'MHM0058', 'Spacefox', 'Amarelo', 'Perua', '2007'),(5, 'Jorge Alberto do Santos', '34110981042', 2147483647, 2147483647, 2147483647, '[email protected]', 'IAQ3456', 'Focus', 'Branco', 'Perua', '2006'),(6, 'Adriana Piccolo', '16482233627', 2147483647, 2147483647, 2147483647, '[email protected]', 'JDO3211', 'Fiat Siena', 'Dourado', 'Perua', '2010'),(7, 'Paula Borges de Almeida', '63836756218', 2147483647, 2147483647, 2147483647, '[email protected]', 'IAR0987', 'Palio ELX', 'Preto', 'Perua', '2011'),(8, 'Amanda Maciel Fraga', '55313169920', 2147483647, 2147483647, 2147483647, '[email protected]', 'IAR7866', 'Ecosport', 'Prata', 'Perua', '2009'),(9, 'Pablo Germiniani', '65838247797', 2147483647, 2147483647, 2147483647, '[email protected]', 'BEZ5433', 'Fiat Bravo', 'Vermelho', 'Perua', '2013'),(10, 'Rodrigo Machado Santos', '44423864630', 2147483647, 2147483647, 2147483647, '[email protected]', 'AIP2344', 'Honda Civic', 'Dourado', 'Perua', '2004'),(11, 'Vagner Alves', '16068251438', 2147483647, 2147483647, 2147483647, '[email protected]', 'ILM6577', 'Uno Vivace', 'Branco', 'Perua', '2006'),(12, 'Paulo Nunes Maciel', '49040363951', 2147483647, 2147483647, 2147483647, '[email protected]', 'IAV4523', 'Meriva Maxx', 'Cinza', 'Perua', '2010'),(13, 'Paulo Nunes Maciel', '62537214021', 2147483647, 2147483647, 2147483647, '[email protected]', 'ILM1345', 'Citroen C4', 'Verde', 'Perua', '2013'),(14, 'Paulo Nunes Maciel', '76131936080', 2147483647, 2147483647, 2147483647, '[email protected]', 'JDP3455', 'Fox', 'Vermelho', 'Perua', '2005'),(15, 'Paulo Nunes Maciel', '60788850490', 2147483647, 2147483647, 2147483647, '[email protected]', 'JDP6788', 'Kia Cerato', 'Prata', 'Perua', '2012');/*!40000 ALTER TABLE `cliente` ENABLE KEYS */;

-- Copiando estrutura para tabela atps.estacionamentoCREATE TABLE IF NOT EXISTS `estacionamento` ( `id_estacionamento` int(11) NOT NULL, `id_cliente` int(11) NOT NULL, `placa_veiculo` varchar(7) COLLATE utf8_bin DEFAULT NULL, `nro_vaga` int(11) NOT NULL, `status` varchar(3) COLLATE utf8_bin NOT NULL, KEY `id_estacionamento` (`id_estacionamento`), KEY `id_cliente` (`id_cliente`), KEY `placa_veiculo` (`placa_veiculo`), KEY `nro_vaga` (`nro_vaga`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- Copiando dados para a tabela atps.estacionamento: ~7 rows (aproximadamente)/*!40000 ALTER TABLE `estacionamento` DISABLE KEYS */;INSERT INTO `estacionamento` (`id_estacionamento`, `id_cliente`, `placa_veiculo`, `nro_vaga`, `status`) VALUES(1, 1, 'ILM4540', 1, 'OCP'),(1, 3, 'IAV1546', 2, 'OCP'),(1, 14, 'JDP6788', 5, 'OCP');/*!40000 ALTER TABLE `estacionamento` ENABLE KEYS */;

-- Copiando estrutura para tabela atps.statusCREATE TABLE IF NOT EXISTS `status` ( `id_status` int(11) NOT NULL AUTO_INCREMENT, `desc_status` varchar(50) COLLATE utf8_bin DEFAULT NULL, `sigla_status` varchar(3) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`id_status`), KEY `sigla_status` (`sigla_status`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- Copiando dados para a tabela atps.status: ~6 rows (aproximadamente)/*!40000 ALTER TABLE `status` DISABLE KEYS */;INSERT INTO `status` (`id_status`, `desc_status`, `sigla_status`) VALUES(1, 'Liberada', 'LBD'),(2, 'Ocupada', 'OCP'),(3, 'Pendente', 'PND'),(4, 'Reservada', 'RES'),(5, 'Manutencao', 'MNT'),(6, 'Inativa', 'INT');/*!40000 ALTER TABLE `status` ENABLE KEYS */;

-- Copiando estrutura para tabela atps.tipo_vagaCREATE TABLE IF NOT EXISTS `tipo_vaga` ( `nro_vaga` int(11) NOT NULL, `tipo_vaga` varchar(50) COLLATE utf8_bin DEFAULT '0', `valor_vaga` varchar(50) COLLATE utf8_bin DEFAULT NULL, `sigla_vaga` varchar(3) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`nro_vaga`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- Copiando dados para a tabela atps.tipo_vaga: ~10 rows (aproximadamente)/*!40000 ALTER TABLE `tipo_vaga` DISABLE KEYS */;INSERT INTO `tipo_vaga` (`nro_vaga`, `tipo_vaga`, `valor_vaga`, `sigla_vaga`) VALUES(1, 'Mensalista', '100.00', 'MEN'),(2, 'Mensalista', '100.00', 'MEN'),(3, 'Mensalista', '100.00', 'MEN'),(4, 'Mensalista', '100.00', 'MEN'),(5, 'Mensalista', '100.00', 'MEN'),(6, 'Rotativa', '10.00', 'ROT'),(7, 'Rotativa', '10.00', 'ROT'),(8, 'Rotativa', '10.00', 'ROT'),(9, 'Rotativa', '10.00', 'ROT'),(10, 'Rotativa', '10.00', 'ROT');/*!40000 ALTER TABLE `tipo_vaga` ENABLE KEYS */;

-- Copiando estrutura para tabela atps.vagaCREATE TABLE IF NOT EXISTS `vaga` ( `nro_vaga` int(11) NOT NULL, `locl_vaga` varchar(250) COLLATE utf8_bin NOT NULL, `sigla_vaga` varchar(3) COLLATE utf8_bin NOT NULL, `status_vaga` varchar(3) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`nro_vaga`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- Copiando dados para a tabela atps.vaga: ~10 rows (aproximadamente)/*!40000 ALTER TABLE `vaga` DISABLE KEYS */;INSERT INTO `vaga` (`nro_vaga`, `locl_vaga`, `sigla_vaga`, `status_vaga`) VALUES(1, 'A1', 'MEN', 'LBD'),(2, 'A2', 'MEN', 'OCP'),(3, 'A3', 'MEN', 'OCP'),(4, 'A4', 'MEN', 'OCP'),(5, 'A5', 'MEN', 'RES'),(6, 'C1', 'ROT', 'LBD'),(7, 'C2', 'ROT', 'LBD'),(8, 'C3', 'ROT', 'LBD'),(9, 'C4', 'ROT', 'LBD'),(10, 'C5', 'ROT', 'LBD');/*!40000 ALTER TABLE `vaga` ENABLE KEYS */;/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;