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 */;
Top Related