Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
FACULDADE SUMARÉ<br />
CURSO BANCO DE DADOS<br />
BEATRIZ TONI<br />
DANIEL COSTA<br />
LUIS PACHECO<br />
LUIZ SILVA<br />
SILAS OLIVEIRA<br />
PROJETO INSTALAÇÃO E CONFIGURAÇÃO DE <strong>SGBD</strong><br />
SÃO PAULO<br />
2012
BEATRIZ TONI<br />
DANIEL COSTA<br />
LUIS PACHECO<br />
LUIZ SILVA<br />
SILAS OLIVEIRA<br />
PROJETO INSTALAÇAO E CONFIGURAÇÃO DE <strong>SGBD</strong><br />
SÃO PAULO<br />
2012<br />
Trabalho do Projeto Profissional<br />
Interdisciplinar (PPI) submetido à<br />
Faculdade Sumaré, como parte dos<br />
requisitos para a conclusão do<br />
segundo semestre letivo de 2012 do<br />
curso Tecnólogo em Banco de Dados.<br />
Orientador: Prof. Claudio Aguirre
AGRADECIMENTOS<br />
Primeiramente agradecemos a Deus por nos conceder saúde e inteligência<br />
necessária para o desenvolvimento deste projeto.<br />
Seguimos agradecendo mais uma vez a oportunidade que nos foi concedida<br />
pelo Sr. José Justino Berto (proprietário da Pizzaria Vecchia Mamma) de implantar<br />
esse sistema como parte do trabalho e ao Caio Victor (amigo do Daniel) por nos<br />
ajudar nas dificuldades que tivemos no decorrer do desenvolvimento do sistema.<br />
Por fim agradecemos a todos da equipe que uma forma ou de outra<br />
colaboraram para esse feito.
Toni, Beatriz; Costa, Daniel; Pacheco, Luis; Silva Luiz; Oliveira, Silas.<br />
Projeto de “<strong>Instalação</strong> e <strong>Configuração</strong> de <strong>SGBD</strong> 2012 66 folhas” � 66 f.<br />
Trabalho de PPI “<strong>Instalação</strong> e <strong>Configuração</strong> de <strong>SGBD</strong>”. Faculdade Sumaré, São<br />
Paulo, 2012.<br />
RESUMO<br />
Este trabalho apresenta um estudo de caso de um projeto que consiste em<br />
implementar um sistema de pedidos de pizzas online para a Pizzaria Vecchia<br />
Mamma. Como o projeto tem foco principal em instalar um <strong>SGBD</strong>, escolhemos o<br />
MySQL por se tratar de um sistema gratuito, de fácil utilização e que é usado em<br />
grande parte das aplicações web. Desde 2002 a pizzaria usa o sistema primitivo de<br />
cadastro manual para elaborar os pedidos. Foi proposto construir uma página web<br />
onde o cliente poderá fazer pedidos online (diminuindo o fluxo de ligações) e a<br />
administração da pizzaria poderá visualizar e imprimir os pedidos (reduzindo o<br />
tempo e a possibilidade de informação incorreta à cozinha). A metodologia usada<br />
para aplicação do projeto foi uma pesquisa de campo onde o proprietário da pizzaria<br />
citada nos concedeu a oportunidade de realizar este projeto, em contrapartida não<br />
seria onerado.<br />
Palavras Chaves: Sistema, Pizzaria, <strong>SGBD</strong>, Pedidos, Projeto.
Backup – cópia de segurança<br />
BD – banco de dados<br />
LISTA DE SIGLAS E TERMOS EM INGLÊS<br />
Bugs – erro de funcionamento de um software<br />
DB ou Database - banco de dados<br />
DBA – DataBase Administrator (Administrador de Banco de Dados)<br />
Deadk-Lock – situação onde dois usuários alteraram ao mesmo tempo um mesmo<br />
registro na tabela<br />
Full Text – método que garante que qualquer palavra pesquisada no banco de<br />
dados será encontrada<br />
Foreing Keys – chave estrangeira<br />
GA – gerenciador de arquivos<br />
GIS – Geographic information System ou SIG (Sistema de Informações<br />
Geoespaciais)<br />
GLP – General Public Licence (Licença Pública Geral) - tipo de licença de software<br />
livre<br />
Hot Backups – gerar cópia de segurança remotamente<br />
Indexes – índice<br />
OLAP – On-Line Anlytical Processing (Processo Analítico On-Line) – consiste em<br />
analisar e manipular grandes quantidades de dados sob diversas perspectivas<br />
Primary Key – chave primária<br />
Replicações – processo de duplicar (em <strong>SGBD</strong> consiste em armazenar uma cópia<br />
do banco de dados original em local diferente)<br />
<strong>SGBD</strong> – Sistema de Gerenciamento de Bando de Dados<br />
Stored Engines – em tradução livre “motor de armazenamento”<br />
Stored Procedures – procedimento armazenado<br />
Triggers – em tradução livre “gatilho” ou “disparador”<br />
Unicode – tipo padrão de manipulação de textos
ÍNDICE DE FIGURAS<br />
Banco de Dados.........................................................................................................11<br />
<strong>Instalação</strong> do MySQL<br />
Windows Installer 34<br />
MySQL Installer 34<br />
Welcome MySQL 35<br />
Contrato de Licença MySQL 35<br />
Aceitação Contrato Licença MySQL 36<br />
Verificar Atualizações do Software 36<br />
Conclusão da Atualização do Software 37<br />
Escolher Tipo da <strong>Instalação</strong> 37<br />
Verificar Softwares Requeridos 38<br />
Download do Microsoft Visual C++ 2010 (software faltante) 38<br />
Extracting Files 39<br />
Contrato de Licença 39<br />
Aceitação do Contrato de Licença 40<br />
Progresso da <strong>Instalação</strong> do Microsoft Visual C++ 2010 40<br />
Finalização da <strong>Instalação</strong> 41<br />
Download Visual Studio Tools for Office 2010 Runtime (software faltante) 41<br />
Início da <strong>Instalação</strong> 42<br />
Contrato de Licença 42<br />
Aceitação do Contrato de Licença 43<br />
Progresso da <strong>Instalação</strong> 43<br />
Finalização da <strong>Instalação</strong> 44
Checagem Final dos Softwares Requeridos 45<br />
Softwares do Pacote a ser Instalados 45<br />
Progresso <strong>Instalação</strong> do MySQL 5.5.27 46<br />
Progresso <strong>Instalação</strong> do MySQL Workbench CE 5.2.41 46<br />
Progresso <strong>Instalação</strong> do MySQL Notifier 1.0.3 47<br />
Progresso <strong>Instalação</strong> do MySQL for Excel 1.0.6 47<br />
Progresso <strong>Instalação</strong> do Connector/ODBC 5.1.11 48<br />
Progresso <strong>Instalação</strong> do Connector/C++ 1.1.0 48<br />
Progresso <strong>Instalação</strong> do Connector/C 6.0.2 49<br />
Progresso <strong>Instalação</strong> do Connector/J 5.1.20.0 49<br />
Progresso <strong>Instalação</strong> do Connector/NET 6.5.4 50<br />
Progresso <strong>Instalação</strong> do MySQL Documentation 5.5.27 50<br />
Progresso <strong>Instalação</strong> do Sample and Examples 5.5.27 51<br />
Finalização da <strong>Instalação</strong> dos Softwares do Pacote 51<br />
<strong>Configuração</strong> do MySQL Server 5.5.27 52<br />
Opções de <strong>Configuração</strong> 52<br />
<strong>Configuração</strong> de Senhas 53<br />
Senha Configurada 53<br />
Finalização da <strong>Configuração</strong> 54<br />
Finalização da <strong>Configuração</strong> e <strong>Instalação</strong> do MySQL 5.5.27 54<br />
Interface do Workbench – administração do MySQL 55<br />
Aplicativo Web<br />
Tela do site da pizzaria 59<br />
Tela de cadastro e login 59<br />
Tela de pedido do cliente 60
Tela opção de meia pizza 60<br />
Tela do ambiente administrativo 61<br />
Tela de visualização dos pedidos do dia61<br />
PopUp para impressão do pedido (único) 62<br />
Tela de cadastro dos funcionários 62<br />
Tela de pesquisa de funcionários 63<br />
Tela de cadastro de produtos 63
ÍNDICE DE GRÁFICOS<br />
As 5 pizzas mais vendidas – quantidade e valor 56<br />
Vendas por semana - quantidade56<br />
Vendas por semana - valores 57
1. BANCO DE DADOS 11<br />
1.1 Introdução 11<br />
1.2 Função do banco de dados 11<br />
SUMÁRIO<br />
2. SISTEMA DE BANCO DE DADOS 12<br />
2.1 Vantagens da utilização de um <strong>SGBD</strong> 12<br />
2.2 Objetivos a atingir num <strong>SGBD</strong> 13<br />
2.3 Arquitetura de um <strong>SGBD</strong> – existem 3 níveis 13<br />
2.4 Regras para se determinar um <strong>SGBD</strong> 13<br />
2.4.1 Auto Contenção13<br />
2.4.2 Independência dos dados 14<br />
2.4.3 Abstração dos dados 14<br />
2.4.4 Visões 14<br />
2.4.5 Transações 14<br />
2.4.6 Acesso Automático 15<br />
2.5 Conclusão sobre as regras 15<br />
2.6 Alguns exemplos de <strong>SGBD</strong>’s 16<br />
2.7 Fases para criação de um <strong>SGBD</strong> 16<br />
3. BANCO DE DADOS MySQL 17<br />
3.1 Introdução 17<br />
3.2 História 17<br />
3.3 Características 18<br />
3.4 Utilização 18<br />
4. SOBRE O MySQL 19<br />
4.1 Por que o MySQL demorou a expandir-se? 19<br />
4.2 Mas, porque ele é tão bom? 19
4.3 Principais vantagens 19<br />
4.4 Segurança 20<br />
4.5 Aplicabilidade 20<br />
4.6 Licença do MySQL 20<br />
5. PRINCIPAIS COMANDOS DO MySQL 21<br />
6. FUNÇÕES DE UM DBA 32<br />
6.1 Conhecimento em sistemas operacionais 32<br />
6.2 Conhecimento em redes 32<br />
6.3 Compreensão da arquitetura em banco de dados 32<br />
6.4 Noções do sistema de armazenamento 33<br />
7. INSTALAÇÃO DO MySQL – IMAGENS 34<br />
8. HISTÓRIA DA PIZZARIA VECCHIA MAMMA 58<br />
9. APLICATIVO WEB 59<br />
10. CONCLUSÃO 64<br />
11. REFERÊNCIAS 65
1. BANCO DE DADOS<br />
1.1 Introdução<br />
Banco de dados (abreviado BD, ou em inglês DB – DataBase) é uma entidade<br />
na qual é possível armazenar dados de maneira estruturada e com a menor<br />
redundância possível. Estes dados serão utilizados por programas, onde diferentes<br />
usuários farão acesso. Assim, a noção básica de dados é acoplada geralmente a<br />
uma rede, a fim de colocar essas informações em conjunto.<br />
1.2 Função do banco de dados<br />
O banco de dados permite armazenar dados à disposição de usuários para<br />
uma nova inserção, atualização ou consulta. Um banco de dados pode ser local,<br />
quer dizer, utilizável em uma máquina por um usuário, ou repartido, onde as<br />
informações são armazenadas são armazenadas em máquinas distantes e<br />
acessíveis em rede. A vantagem essencial da utilização dos bancos de dados é a<br />
possibilidade de poder ser acessada por vários usuários simultaneamente.<br />
12
Tendo como objetivo controlar os dados, bem como o acesso de usuários,<br />
deu início a criação de um sistema de gerenciamento. A gestão do banco de dados é<br />
feita através de um sistema chamado <strong>SGBD</strong>.<br />
2. SISTEMA DE BANCO DE DADOS – <strong>SGBD</strong><br />
Entende-se por <strong>SGBD</strong> (Sistema de Gerenciamento de Banco de Dados), programas<br />
ou conjunto de programas que possibilitam a criação e manipulação de base de<br />
dados (inserção, eliminação, alteração e consulta dos dados). Os dados são<br />
independentes dos programas que os manipulam. Assim o seu objetivo é registrar e<br />
manter a informação que for considerada necessária à organização / pessoa que<br />
gere o sistema, disponibilizando-a automaticamente para os mais diversos fins.<br />
Através de um <strong>SGBD</strong>, pode realizar um vasto conjunto de operações de gestão de<br />
banco de dados, das quais é possível destacar:<br />
13<br />
• Inserção, edição e apagamento de registros<br />
• Critérios de visualização de registros<br />
• Indexação e ordenação da informação contida nos registros<br />
• Operações estatísticas sobre os dados<br />
• Criação de slides de apresentação<br />
• Acesso a informação através da Internet<br />
• Impressão de relatórios<br />
• Automatização de funções<br />
• Programação<br />
2.1 Vantagens da utilização de um <strong>SGBD</strong><br />
• Diminuição de espaço físico ocupado<br />
• Maior integridade dos dados
• Menos redundância<br />
• Mais facilidade na partilha de dados<br />
• Maior facilidade de manutenção<br />
• Isolamento entre objetos de dados, o que protege a integridade da origem dos<br />
dados<br />
• Facilidade de mudança na criação de diferentes mapas com diferentes<br />
objetivos<br />
2.2 Objetivos a atingir num <strong>SGBD</strong><br />
• Incluir toda a informação relevante<br />
• Evitar redundância de informação<br />
• Assegurar a consistência e a integridade da informação na utilização do BD<br />
• Elaborar aplicações de fácil utilização e compreensão<br />
2.3 Arquitetura do <strong>SGBD</strong> – existem 3 níveis<br />
2.3.1 Nível físico: os ficheiros são guardados em suporte de armazenamento<br />
informático, e a partir daí são manipulados pelo <strong>SGBD</strong> em execução no computador.<br />
2.3.2 Nível conceitual: organização das informações em tabelas e relacionamentos.<br />
2.3.3 Nível de visualização: corresponde a forma como os dados são apresentados<br />
aos utilizadores finais, através de interfaces gráficas proporcionadas pelo <strong>SGBD</strong>.<br />
14<br />
2.4 Regras para se determinar um <strong>SGBD</strong><br />
2.4.1 Auto Contenção
Um <strong>SGBD</strong> não contém apenas os dados em si, mas armazena completamente toda<br />
a descrição dos dados, seus relacionamentos e formas de acesso. Normalmente<br />
esta regra é chamada de Meta-Base de Dados. Em um GA (Gerenciador de<br />
Arquivos), em algum momento ao menos, os programas aplicativos declaram<br />
estruturas (algo que ocorre tipicamente em linguagens C, COBOL e BASIC), ou<br />
geram os relacionamentos entre os arquivos (típicos do ambiente xBase). Por<br />
exemplo, quando você é obrigado a definir a forma do registro em seu programa,<br />
você não está lidando com um <strong>SGBD</strong>.<br />
2.4.2 Independência dos dados<br />
Quando as aplicações estiverem realmente imunes a mudanças na estrutura de<br />
armazenamento ou na estratégia de acesso aos dados, podemos dizer que esta<br />
regra foi atingida. Portanto, nenhuma definição dos dados deverá estar contida nos<br />
programas da aplicação. Quando você resolve criar uma nova forma de acesso, um<br />
novo índice, e precisar alterar o código de seu aplicativo, você não está lidando com<br />
um <strong>SGBD</strong>.<br />
2.4.3 Abstração dos dados<br />
Em um <strong>SGBD</strong> real é fornecida ao usuário somente uma representação conceitual<br />
dos dados, o que não inclui maiores detalhes sobre sua forma de armazenamento<br />
real. O chamado Modelo de Dados é um tipo de abstração utilizada para fornecer<br />
esta representação conceitual. Neste modelo, um esquema das tabelas, seus<br />
relacionamentos e suas chaves de acesso são exibidas ao usuário, porém nada é<br />
afirmado sobre a criação dos índices, ou como serão mantidos, ou qual a relação<br />
existente entre as tabelas que deverá ser mantida íntegra. Assim, se você desejar<br />
inserir um pedido em um cliente inexistente, e esta entrada não for automaticamente<br />
rejeitada, você não está lidando com um <strong>SGBD</strong>.<br />
15<br />
2.4.4 Visões
Um <strong>SGBD</strong> deve permitir que cada usuários visualize os dados de forma diferente<br />
daquela existente previamente no banco de dados. Uma visão consiste em um<br />
subconjunto de dados do banco de dados, necessariamente derivados dos<br />
existentes no banco de dados, porém estes não deverão estar explicitamente<br />
armazenados. Portanto, toda vez que você é obrigado a replicar uma estrutura, para<br />
fins de acesso de forma diferenciada por outros aplicativos, você não está lidando<br />
com um <strong>SGBD</strong>.<br />
2.4.5 Transações<br />
Um <strong>SGBD</strong> deve gerenciar completamente a integridade referencial definida em seu<br />
esquema, sem precisar em tempo algum, do auxílio do programa aplicativo. Desta<br />
forma, exige-se que o bando de dados tenha ao menos uma instrução que permita a<br />
gravação de uma série de modificações simultâneas e uma instrução capaz de<br />
cancelar uma série de modificações. Por exemplo, imaginemos que estamos<br />
cadastrando um pedido para um cliente, que este deseje reservar 5 itens de nosso<br />
estoque, que estão disponíveis e portanto são reservados, porém existem um<br />
bloqueio financeiro (duplicatas em atraso) que impede a venda. A transação deverá<br />
ser desfeita com apenas uma instrução ao banco de dados, sem quaisquer<br />
modificações suplementares nos dados.<br />
2.4.6 Acesso Automático<br />
Em um GA (Gerenciador de Arquivos) uma situação típica é o chamado Deadk-Lock,<br />
o abraço mortal. Esta situação indesejável pode ocorrer toda vez que um usuário<br />
travou um registro em uma tabela, e seu próximo passo será travar um registro em<br />
uma tabela relacionada à primeira, porém se este registro estiver previamente<br />
travado por outro usuário, o primeiro usuário ficará paralisado, pois estará<br />
esperando o segundo usuário liberar o registro em uso, para que então possa travá-<br />
lo e prosseguir sua tarefa. Se por hipótese o segundo usuário necessitar travar o<br />
registro travado pelo primeiro usuário, afirmamos que ocorreu um abraço mortal,<br />
pois cada usuário travou um registro e precisava travar outro, justamente o registro<br />
anteriormente travado pelo outro! Imaginemos um caso onde o responsável pelos<br />
16
pedidos acabou de travar o registro “Item de Pedido”, e necessita travar um registro<br />
no “Cadastro de Produtos” para indicar nova reserva. Se concomitantemente estiver<br />
sendo realizada uma tarefa de atualização de pendências na “Tabela de Itens”, e<br />
para tato, previamente este segundo usuário travou a “Tabela de Produtos”, temos a<br />
ocorrência do abraço mortal. Se a responsabilidade de evitar a ocorrência for<br />
responsabilidade da aplicação, você não está lidando com um <strong>SGBD</strong><br />
2.5 Conclusão sobre as regras<br />
Um <strong>SGBD</strong> deve obedecer integralmente as seis regras descritas acima, caso<br />
contrário diante de um GA (Gerenciador de Arquivos) ou de um “quase” <strong>SGBD</strong>.<br />
17<br />
2.6 Alguns exemplos de <strong>SGBD</strong>’s<br />
• Oracle<br />
• Microsoft SQL Server<br />
• MySQL<br />
• IBM DB2<br />
• Interbase<br />
• Sybase<br />
• PostgreSQL<br />
• Firebird<br />
• Microsoft Access<br />
2.7 Fases para criação de um BD<br />
1. Definir a área de aplicação<br />
2. Determinar as entidades necessárias
3. Desenhar o diagrama de Entidade-Relacionamento (simplificado)<br />
4. Desenhar o diagrama de ocorrências<br />
5. Determinar o grau (tipo) de relacionamentos binários<br />
6. Determinar as partições obrigatórias<br />
7. Desenhar o diagrama de Entidade-Relacionamento (completo)<br />
8. Determinar as tabelas necessárias (segundo as regras)<br />
9. Para cada relação / tabela determinar as chaves candidatas<br />
10. Determinar as chaves primárias<br />
11. Definir as relações finais<br />
12. Definir o domínio dos atributos<br />
13. Desenhar as tabelas correspondentes as relações encontradas<br />
3. BANCO DE DADOS MySQL<br />
3.1 Introdução<br />
MySQL é um programa interativo que permite você conectar com um servidor<br />
de MySQL, perguntar e ver os resultados. Além disso, MySQL suporta o SQL padrão<br />
(ANSI). Isso cria uma ótima performance em servidores Unix / Linus. MySQL pode<br />
rodar como um service no Windows NT e como um processo normal em Windows<br />
95/98.O MySQL utiliza a linguagem SQL (Structured Query Language (inglês) ou<br />
Linguagem de Consulta Estruturada (português) como interface.<br />
18
3.2 História<br />
O MySQL surgiu a partir da necessidade da equipe que criou o <strong>SGBD</strong>, de<br />
utilizar algum mecanismo que permitisse a conexão de tabelas criadas na linguagem<br />
SQL para um determinado fim. A princípio, o grupo iria utilizar o mSQL, mas logo<br />
perceberam que esta ferramenta não era rápida o suficiente para atender às<br />
necessidades do projeto. O jeito foi criar uma solução própria. Nascia o MySQL.<br />
O MySQL foi criado na Suécia por dois suecos e um finlandês: David Axmark,<br />
Allan Larsson e Michael “Monty” Widenius, que tem trabalhados juntos desde a<br />
década de 1980. Hoje seu desenvolvimento e manutenção empregam<br />
aproximadamente 400 profissionais no mundo inteiro, e mais de mil contribuem<br />
testando o software, integrando-o a outros produtos, e escrevendo a respeito dele.<br />
No dia 16 de janeiro de 2008, a MySQL AB, desenvolvedora do MySQL foi<br />
adquirida pela Sun Microsystems, por US$ 1 bilhão, um preço jamais visto no setor<br />
de licenças livres. No dia 20 de abril de 2009 a Oracle compra a Sun Microsystems e<br />
todos os seus produtos, incluindo o MySQL. A Comissão Européia ainda não<br />
aprovou a aquisição.<br />
O sucesso do MySQL deve-se em grande media a fácil integração com o PHP<br />
incluído, quase que obrigatoriamente, nos pacotes de hospedagem de sites da<br />
Internet oferecidos atualmente. Empresas como Yahoo! Finance, MP3.com,<br />
Motorola, NASA, Silicon Graphics e Texas Instruments usam o MySQL em<br />
aplicações de missão crítica. A Wikipédia é um exemplo de utilização do MySQL em<br />
sites de grande audiência.<br />
O MySQL hoje suporta Unicode, Full Text, Indexes, Replicações, Hot<br />
Backups, GIS, OLAP e muitos outros recursos. Embora seja um dos bancos de<br />
dados mais utilizados no mundo, o MySQL está em constante desenvolvimento e<br />
alguns bugs que ainda se encontram são resolvidos com atualizações freqüentes.<br />
19<br />
3.3 Características<br />
• Portabilidade (suporta atualmente qualquer plataforma);<br />
• Compatibilidade (existem diversos drivers ODBC, JDBC e NET e módulos de<br />
interface para diversas linguagens de programação, como PHP,Delphi, Java,
C/C++, Python, Perl, Microsoft ASP e Ruby, Oracle Forms, .NET, Kylix, LISP,<br />
Lasso, Pike, TCL, Guile, Rexx, Dylan;<br />
• Excelente desempenho e estabilidade;<br />
• Pouco exigente quanto a recursos de hardware;<br />
• Facilidade de uso;<br />
• É um software Livre com base na GPL;<br />
• Contempla a utilização de vários Storage Engines como MyISAM, InnoDB,<br />
Falcon, BDB, Archive, Federated, CSV, Solid...<br />
• Suporta controle transacional;<br />
• Suporta Triggers;<br />
• Suporta Cursors (Non-Scrollable e Non-Updatable);<br />
• Suporta Stored Procedures e Functions<br />
• Replicação facilmente configurável;<br />
• Interfaces gráficas (MySQL Toolkit) de fácil utilização cedidos pela MySQL Inc.<br />
3.4 Utilização<br />
Uma característica fundamental do MySQL, quiçá na origem do sucesso, é<br />
ser desenvolvido em código aberto e funcionar num grande número de sistemas<br />
operacionais: Windows, Linux, FreeBSD, BSDI, Solaris, Mac OS X, SunOS, SGI, etc.<br />
É reconhecido pelo seu desempenho e robustez e também por ser multitarefa<br />
e multiusuário. A própria Wikipédia, usando o programa MediaWiki, utiliza o MySQL<br />
para gerenciar seu banco de dados, demonstrando que é possível utilizá-lo em<br />
sistemas de produção de alta exigência e em aplicações sofisticadas.<br />
No passado (até a versão 3.x), devido a não possuir funcionalidades<br />
consideradas essenciais em muitas áreas, como stored procedures, two-phase<br />
commit, subselects, foreing Keys, ou integridade referencial, era freqüentemente<br />
20
considerado como um sistema mais “leve” e para aplicações menos exigentes,<br />
sendo preferido por outros sistemas como o PostgreSQL.<br />
4. SOBRE O MySQL<br />
4.1 Por que o MySQL demorou a expandir-se?<br />
Na época da criação deste sistema, um dos objetivos era que ele rodasse em<br />
Linux, embora existam hoje versões para diversos Sistemas Operacionais, o que<br />
acabou popularizando o sistema em 1999, quando o S.O. do Sr. Linus Torvalds e o<br />
Movimento Open Source deslanchou no mercado mundial.<br />
O resultado disso foi que hoje, o MySQL, considerado o banco de dados mais<br />
rápido do mercado, tornou-se alternativa barata e viável para uma grande parte do<br />
mercado corporativo e on-line.<br />
4.2 Mas, porque ele é tão bom?<br />
O MySQL tem quase tudo que seus concorrentes mais renomados tem, com a<br />
vantagem ser: gratuito (não totalmente – será abordado esse assunto<br />
posteriormente), seu código fonte é aberto, é leve, rápido, seguro e prático.<br />
4.3 Principais vantagens<br />
Desempenho: Como dito acima, o MySQL é considerado o banco de dados<br />
mais rápido. Agilidade tem sido um ponto bastante relevante em matéria de<br />
sistemas, principalmente no quesito internet. E para que o sonho de muitos<br />
programadores se realizem, a equipe de desenvolvimento do MySQL tem se<br />
mostrado bastante calcada no que diz respeito a performance. Isso significa que<br />
cada dia que passa o <strong>SGBD</strong> mais rápido do mercado tende a ficar mais ágil e eficaz,<br />
dando conta do recado ao qual foi designado.<br />
21<br />
4.4 Segurança
Outro ponto forte e decisivo em um banco de dados é a sua segurança. Com<br />
seus diversos tipos de tabelas, característica exclusiva do MySQL, é possível ter um<br />
banco de dados bastante seguro e estável contando com a integridade referencial,<br />
backup e restore, controle de usuários e acessos, e ainda, se necessário, verificação<br />
e correção de tabelas que foram corrompidas.<br />
4.5 Aplicabilidade<br />
Muitos perguntam se o MySQL é usado somente para aplicações da internet.<br />
A resposta é não. O MySQL pode ser utilizado como banco de dados desktop, ou<br />
seja, em aplicações corporativas, e o melhor de tudo, dá suporte a diversas<br />
linguagens de programação (como por exemplo as citadas em Características).<br />
4.6 Licença do MySQL<br />
Essa é uma grande pergunta e gera muita dúvida.<br />
Sim, o mesmo está inscrito no tipo de licenciamento GPL General Public License.<br />
Observação: o produto não pode ser comercializado junto a sistemas desenvolvidos<br />
por qualquer programador, ou seja, ele não faz parte das mídias de instalação do<br />
produto vendido por você ou por uma fabricante de softwares, a menos que o código<br />
fonte do banco seja enviado junto com ele. Caso o programador deseje desenvolver<br />
um novo produto com base no código fonte do MySQL e distribuí-lo como de sua<br />
propriedade, deverá adquirir uma licença para isso conforme as regras de<br />
licenciamento GPL.<br />
5. PRINCIPAIS COMANDOS DO MySQL<br />
Em ordem alfabética:<br />
22
mysql_affect_rows:<br />
Este comando tem o objetivo de retornar o número de linhas afetadas por uma<br />
consulta.<br />
Exemplo:<br />
$resultado = mysql_query($query);<br />
if ($resultado && mysql_affect_rows() > 0){<br />
OBS.: O mysql_affect_rows só será válido quando usado em “querys” que alterem o<br />
conteúdo da tabela (exemplo: insert ou update).<br />
Para se efetuar consulta simples, indicamos os comandos select ou show, utilizando<br />
junto a estes o comando mysql_num_rows.<br />
mysql_close:<br />
Este comando tem o objetivo de fechar a conexão com o banco de dados MySQL.<br />
Exemplo:<br />
$conexao = mysql_connect('servidor', 'usuariohost', 'senhahost');<br />
if (!$conexao){ die 'Não pude conectar' . mysql_error()); }else { echo 'conexão ok'; }<br />
mysql_close($conexao);<br />
OBS.: O comando mysql_close não irá fechar conexões persistentes criadas por<br />
mysql_pconnect().<br />
mysql_connect:<br />
Este comando tem o objetivo de abrir a conexão com um banco de dados MySQL.<br />
Exemplo: Está disponível no exemplo acima ( mysql_close ).<br />
mysql_create_db:<br />
Este comando tem por objetivo criar um banco de dados MySQL.<br />
Exemplo:<br />
$conexao = mysql_connect('servidor', 'usuariohost', 'senhahost');<br />
if (!$conexao){ die 'Não pude conectar' . mysql_error()); }<br />
else {<br />
if(mysql_create_db('basededados')){ echo “base de dados criada com sucesso”; }<br />
else{ echo 'Error creating database: ' . mysql_error() . “n”;<br />
} // fecha else {<br />
23
OBS.: Indicamos ao invés de utilizar o mysql_create_db, usar o mysql_query, para<br />
fazer o comando CREATE DATABASE. Para compatibilidade com versões<br />
anteriores, o mysql_create_db também poderá ser utilizado, em todo caso, ela está<br />
obsoleta.<br />
mysql_data_seek:<br />
Este comando tem por objetivo mover o ponteiro interno de uma consulta.<br />
Exemplo:<br />
$resultado = mysql_query($query);<br />
for ($i = mysql_num_rows($resultado) – 1; $i >= 0; $i --){<br />
if (!mysql_data_seek($resultado, $i)){<br />
echo “Não pude mover para a linha $i” . mysql_error() . “n”;<br />
continue;<br />
} // fecha if (!mysql_data_seek($resultado, $i)){<br />
xxx outros comandos xxx<br />
}// fecha for ($i = mysql_num_rows($resultado) – 1; $i >= 0; $i --){<br />
OBS.: A função mysql_data_seek() pode ser usada somente em conjunto com o<br />
mysql_query e não com o mysql_unbuffered_query().<br />
mysql_db_query:<br />
Este comando tem por objetivo enviar uma consulta MySQL para a base de dados.<br />
Exemplo:<br />
$resultado = mysql_db_query(“$database”, $query);<br />
OBS.: Esta função está obsoleta desde o PHP 4.0.6. Ao invés dela, aconselhamos<br />
utilizar os comandos mysql_select_db() e mysql_query().<br />
mysql_drop_db:<br />
Utilizando este comando, você poderá excluir um banco de dados MySQL.<br />
Exemplo:<br />
24
$conexao = mysql_connect('servidor', 'usuariohost', 'senhahost');<br />
if (!$conexao){ die 'Não pude conectar' . mysql_error()); }<br />
else { if(mysql_drop_db(“basededados”)){ echo “base de dados excluída com<br />
sucesso”;<br />
}// fecha if(mysql_drop_db(“basededados”)){<br />
}// fecha if (!$conexao){<br />
OBS.: Esta função também está obsoleta. Ao invés dela, é aconselhável utilizar o<br />
comando mysql_query.<br />
mysql_errno:<br />
Este comando tem por finalidade retornar o número do erro da última chamada<br />
MySQL.<br />
Exemplo:<br />
$conexao = mysql_connect("localhost", "mysql_user", "mysql_password");<br />
if (!mysql_select_db("base de dados não existente", $conexao)) {<br />
echo mysql_errno($conexao) . ": " . mysql_error($conexao). "n";<br />
}<br />
O exemplo acima vai imprimir algo assim: 1049: Unknown database 'base de dados<br />
não existente'<br />
mysql_error:<br />
Este comando tem por finalidade retornar a mensagem de erro da última chamada<br />
MySQL.<br />
Exemplo:<br />
$conexao = mysql_connect("localhost", "mysql_user", "mysql_password");<br />
if (!mysql_select_db("base de dados não existente", $conexao)) {<br />
echo mysql_errno($conexao) . ": " . mysql_error($conexao). "n";<br />
}<br />
O exemplo acima vai imprimir algo assim: 1049: Unknown database 'base de dados<br />
não existente'<br />
mysql_fetch_array:<br />
Este comando tem por finalidade retornar o resultado de uma consulta como array.<br />
Exemplo:<br />
$resultado = mysql_query ($query);<br />
25
$campo = mysql_fetch_array($resultado);<br />
$variavel = $campo['campo'];<br />
mysql_fetch_field:<br />
Este comando tem por finalidade retornar informações sobre um campo da consulta<br />
(objeto).<br />
Exemplo:<br />
mysql_connect('localhost:3306', $user, $password) or die ("Não pude conectar: " .<br />
mysql_error());<br />
mysql_select_db("database");<br />
$result = mysql_query("select * from table") or die("A query falhou: " . mysql_error());<br />
$i = 0;<br />
while ($i < mysql_num_fields($result)) { echo "Informação para a coluna $i:<br />
n";<br />
$meta = mysql_fetch_field($result,$i);<br />
if (!$meta) { echo "Informação não disponivel<br />
n"; }<br />
echo "<br />
blob: $meta->blob<br />
max_length: $meta->max_length<br />
multiple_key: $meta->multiple_key<br />
name: $meta->name<br />
not_null: $meta->not_null<br />
numeric: $meta->numeric<br />
primary_key: $meta->primary_key<br />
table: $meta->table<br />
type: $meta->type<br />
unique_key: $meta->unique_key<br />
unsigned: $meta->unsigned<br />
zerofill: $meta->zerofill<br />
";<br />
$i++;<br />
}<br />
mysql_free_result($result);<br />
mysql_fetch_lengths:<br />
Este comando tem por finalidade retornar o tamanho máximo de cada campo em<br />
uma consulta.<br />
26
Exemplo:<br />
$campo = mysql_fetch_assoc($resultado);<br />
$lengths = mysql_fetch_lengths($resultado);<br />
print_r($campo);<br />
print_r($lengths);<br />
mysql_fetch_object:<br />
Este comando tem por finalidade retornar uma linha da consulta como um objeto.<br />
Exemplo:<br />
while($campo = mysql_fetch_object($resultado)){<br />
echo $campo->Database . “n”;<br />
}<br />
mysql_fetch_row:<br />
Este comando tem por finalidade retornar uma linha da consulta como um array.<br />
Exemplo:<br />
$resultado = mysql_query ($query);<br />
while($campo = mysql_fetch_row($resultado)){<br />
$variavel = $campo ['campodatabela'];<br />
}<br />
mysql_field_name:<br />
Este comando tem por finalidade retornar o nome de um campo no consulta.<br />
Exemplo:<br />
$query = "select * from usuarios";<br />
$resultado = mysql_query($query);<br />
echo mysql_field_name($resultado, 0) . "n";<br />
echo mysql_field_name($resultado, 2);<br />
O exemplo acima retornará algo assim:<br />
id_usuario<br />
password<br />
27
mysql_field_seek:<br />
Este comando posiciona o ponteiro para um campo específico da consulta.<br />
Exemplo:<br />
$query = "SELECT * FROM TABELA";<br />
$resultado = mysql_query($query);<br />
mysql_field_seek($resultado,3);<br />
print_r(mysql_fetch_field($resultado));<br />
mysql_close($conexao);<br />
mysql_field_table:<br />
Este comando tem por finalidade retornar o nome da tabela à qual o campo<br />
pertence.<br />
Exemplo:<br />
$query = "SELECT * FROM TABELA";<br />
$resultado = mysql_query($query);<br />
$tabela = mysql_field_table($resultado, 0);<br />
echo $tabela;<br />
mysql_field_type:<br />
Este comando é similar ao mysql_field_name(). Quando executado, ele te<br />
possibilitar retornar o tipo de dado do campo.<br />
Exemplo:<br />
$query = "SELECT * FROM TABELA";<br />
$resultado = ($query);<br />
$fields = mysql_num_fields($resultado);<br />
$table = mysql_field_table($resultado, 0);<br />
echo "Sua '" . $table . "' tabela tem " . $fields . " campo(s)n";<br />
for ($i=0; $i < $fields; $i++) {<br />
$type = mysql_field_type($resultado, $i);<br />
echo $type;<br />
}<br />
28
mysql_field_flags:<br />
Através deste comando você poderá retornar os flags associados a um campo da<br />
consulta.<br />
Exemplo:<br />
$query = "SELECT * FROM TABELA";<br />
$resultado = ($query);<br />
$fields = mysql_num_fields($resultado);<br />
$table = mysql_field_table($resultado, 0);<br />
echo "Sua '" . $table . "' tabela tem " . $fields . " campo(s)n";<br />
for ($i=0; $i < $fields; $i++) {<br />
$flags = mysql_field_flags($resultado, $i);<br />
echo $flags . "n";<br />
}<br />
mysql_field_len:<br />
Utilizando este comando será possível retornar o tamanho de um campo da<br />
consulta.<br />
Exemplo:<br />
$query = "SELECT * FROM TABELA";<br />
$resultado = ($query);<br />
$fields = mysql_num_fields($resultado);<br />
$table = mysql_field_table($resultado, 0);<br />
echo "Sua '" . $table . "' tabela tem " . $fields . " campo(s)n";<br />
for ($i=0; $i < $fields; $i++) {<br />
$len = mysql_field_len($resultado, $i);<br />
echo $len;<br />
}<br />
mysql_free_result:<br />
Utilizando este comando, você poderá liberar os recursos alocados a uma consulta.<br />
deve ser chamado somente se você está preocupado em quanto da memória esta<br />
sendo usada na query num grande conjunto de resultados.<br />
Exemplo:<br />
$query = "SELECT * FROM TABELA";<br />
$resultado = mysql_query($query);<br />
29
while($campo = mysql_fetch_array($resultado)) {<br />
$id_campo = $campo["id_campo"];<br />
$nome = $campo["nome"];<br />
$senha = $campo["senha"];<br />
}<br />
mysql_free_result($resultado);<br />
mysql_insert_id:<br />
Utilizando este comando você poderá retornar o ID da última cláusula INSERT<br />
executada.<br />
Exemplo:<br />
$query = "INSERT INTO TABELA (produto) VALUES ('valor');<br />
$resultado = mysql_query($query);<br />
printf("A última inserção foi o id %dn", mysql_insert_id());<br />
OBS.:<br />
O comando mysql_insert_id() converte o tipo de retorno nativo da API em C do<br />
MySQL mysql_insert_id() para um tipo long (chamado int no PHP).<br />
Se a sua coluna AUTO_INCREMENT for uma coluna do tipo BIGINT, o valor<br />
retornado por mysql_insert_id() será incorreto. Recomendo ao invés deste comando<br />
utilizar a função SQL interna do MySQL LAST_INSERT_ID() em uma consulta SQL.<br />
mysql_list_fields:<br />
Através deste comando será possível retornar a relação de campos de uma<br />
consulta.<br />
Exemplo:<br />
$conexao = mysql_connect('localhost', 'usuariodomysql', 'senhadomysql');<br />
$fields = mysql_list_fields("database", "tabela", $conexao);<br />
$columns = mysql_num_fields($fields);<br />
for ($i = 0; $i < $columns; $i++) {<br />
echo mysql_field_name($fields, $i) . "n";<br />
}<br />
30
mysql_list_dbs:<br />
Através deste comando será possível listar os bancos de dados disponíveis no<br />
Servidor.<br />
Exemplo:<br />
$conexao = mysql_connect ('servidor', 'usuariodoservidor', 'senhadoservidor');<br />
$resultado = mysql_list_dbs($conexao);<br />
while($campo = mysql_fetch_object($resultado)){<br />
echo $campo->Database . “n”;<br />
}<br />
mysql_list_tables:<br />
Através deste comando será possível listar as tabelas existentes em um banco de<br />
dados MySQL.<br />
Exemplo:<br />
$nomedobd = 'nomedabasededados';<br />
if (!mysql_connect('servidor', 'usuariodoservidor', 'senhadoservidor')){<br />
echo 'Não foi possível conectar com o MySQL';<br />
exit;<br />
}<br />
$resultado = mysql_list_tables($nomedobd);<br />
mysql_num_fields:<br />
Através deste comando será possível retornar o número de campos de uma<br />
consulta.<br />
Exemplo:<br />
$query = "SELECT * FROM TABELA";<br />
$resultado = ($query);<br />
$campos = mysql_num_fields($resultado);<br />
echo $campos;<br />
mysql_num_rows:<br />
Através deste comando será possível retornar o número de linhas de uma consulta.<br />
31
Exemplo:<br />
$query = "SELECT * FROM TABELA";<br />
$resultado = ($query);<br />
$linhas = mysql_num_rows($resultado);<br />
echo $linhas;<br />
mysql_pconnect:<br />
Utilizando este comando você poderá estabelecer uma conexão persistente com o<br />
banco de dados.<br />
Exemplo:<br />
$conexao = mysql_pconnect('servidor', 'usuariohost', 'senhahost');<br />
mysql_query:<br />
Um dos comandos mais utilizados do MySQL. Através deste comando você poderá<br />
enviar uma consulta SQL ao banco de dados MySQL.<br />
Exemplo:<br />
$query = “SELECT * FROM DATABASE”;<br />
$resultado = mysql_query ($query);<br />
mysql_result:<br />
Através deste comando você poderá retornar os dados de uma consulta.<br />
Exemplo:<br />
$query = "SELECT * FROM TABELA";<br />
$resultado = mysql_query($query);<br />
$dominio = mysql_result($resultado, 0, "nome");<br />
mysql_select_db:<br />
Utilizando este comando, você poderá selecionar um banco de dados MySQL.<br />
Exemplo:<br />
$conexao = mysql_connect('localhost', 'usuariomysql', 'senhamysql');<br />
if (!$conexao) { die('Não conectado : ' . mysql_error()); }<br />
$db_selected = mysql_select_db('tabela', $conexao);<br />
if (!$db_selected) { die ('Não pode usar a tabela : ' . mysql_error()); }<br />
32
mysql_tablename:<br />
Este comando tem por finalidade retornar o nome da Tabela de um campo.<br />
Exemplo:<br />
mysql_connect (“servidor”, “usuariodoservidor”, “senhadoservidor”);<br />
$resultado = mysql_list_tables(“basededados”);<br />
for ($i = 0; $i < mysql_num_rows($resultado); $i++)<br />
printf (“Tabela: %sn”, mysql_tablename($resultado, $i));<br />
mysql_free_result($resultado);<br />
6. FUNÇÕES DE UM DBA<br />
O termo DBA tem como significado (em inglês) DataBase Administrator,<br />
(português) Administrador de Banco de Dados. O profissional dessa área, assim<br />
como o nome indica, é o responsável pelo banco de dados. A segurança de um<br />
banco de dados é algo que envolve profissionais de diversas áreas e conhecimentos<br />
interdisciplinares. Um banco de dados totalmente seguro é algo que o DBA sozinho<br />
dificilmente consegue garantir, mas é de responsabilidade do DBA fazer todo<br />
procedimento possível para que esses dados estejam em segurança. Para<br />
33
conseguir cumprir com suas responsabilidades, o DBA naturalmente deve deter<br />
algumas competências. O profissional deve conhecer as seguintes condições:<br />
34<br />
6.1 Conhecimento em Sistemas Operacionais<br />
Ainda que existam <strong>SGBD</strong>’s que rodem em mais de um banco de<br />
dados, eles são dependentes do sistema operacional onde estão<br />
instalados. É importante que o DBA conheça conceitos ligados ao<br />
sistema operacional (processos, threads, gerenciamento de memória,<br />
paginação, sistema de arquivos, etc.) bem como a implementação e<br />
otimização desses conceitos no Sistema Operacional que hospeda o<br />
banco de dados. Isso auxilia na configuração e otimização do sistema<br />
operacional ao banco de dados utilizado.<br />
6.2 Conhecimento em Redes<br />
Os bancos de dados são em sua esmagadora maioria compartilhados.<br />
Se os dados são compartilhados é certo que o acesso será feito via<br />
rede (Intranet, Internet e Extranet) e conhecer como essa transmissão<br />
ocorre é importante. É desejável que o DBA conheça características da<br />
rede (capacidade de tráfego, protocolos, etc.). Esse conhecimento<br />
pode ajudar a resolver problemas e aperfeiçoar o acesso ao banco de<br />
dados.<br />
6.3 Compreensão da arquitetura em banco de dados<br />
Entender como funciona um banco de dados, é um pouco mais do que<br />
conhecer uma tecnologia específica (ORACLE, DB2, SQL Server, etc.).<br />
Entender alguns dos fundamentos de banco de dados (algoritmos de<br />
indexação, concorrência, transações, etc.) podem ser tão valiosos<br />
quanto conhecer as implementações de um produto específico. Bons<br />
DBA’s não são aqueles que conhecem todos os comandos de um<br />
produto, mas certamente aqueles que sabem o que acontece nos<br />
“bastidores”.
35<br />
6.4 Noções do sistema de armazenamento<br />
A persistência dos dados é realizada em algum local próprio para<br />
armazenamento. É importante ao DBA ter conhecimento dos princípios<br />
que são utilizados nos sistemas de armazenamento (RAID, SAN, NAS,<br />
etc.). Esse conhecimento pode ajudar o DBA a utilizar a infra-estrutura<br />
de armazenamento para um projeto físico eficiente.
36<br />
7. INSTALAÇÃO DO MySQL - IMAGENS<br />
Pacote disponível no site http://dev.mysql.com/downloads<br />
Após duplo click no arquivo executável do MySQL, surgirá essa tela<br />
Preparação do Windows Installer (Instalador do Windows)
37<br />
Preparação do MySQL Installer (Instalador do MySQL)<br />
Preparador das configurações do MySQL
39<br />
Tela de Boas Vindas do MySQL e início da instalação
40<br />
Termos de licenciamento do produto
41<br />
É necessário aceitar os termos para prosseguir com a instalação
42<br />
*Obs.: somente após marcar a caixa de seleção surge o botão “Next” ativado para prosseguir
43<br />
Aqui é importante que o computador esteja conectado a internet, pois será verificado se há atualização do sistema<br />
*Obs.: Há uma caixa de seleção que, se marcada, poderá pular essa etapa, porém recomenda-se não marcar, deixando<br />
verificar possíveis atualizações
45<br />
Verificação concluída
47<br />
Nessa tela será escolhido o tipo e local da instalação (escolhemos o “Developer Dafault” e deixamos o local padrão)
49<br />
Aqui é realizado uma checagem dos softwares pré-instalados obrigatórios antes de continuar<br />
Observa-se que está faltando a instalação dos dois últimos. Será feito nas próximas telas
50<br />
Progresso de download do Microsoft Visual C++ 2010 32-bit runtime (primeiro dos faltantes)<br />
Extração dos arquivos de instalação do software requerido
51<br />
Tela inicial de instalação do Microsoft Visual C++ 2010
53<br />
Existe um contrato de licença de uso, onde é necessário aceitar os termos para continuar a instalação<br />
Obs.: somente após marcar a caixa de seleção aceitando os termos, o botão “Install” fica ativo para prosseguir
54<br />
Progresso da instalação do Microsoft Visual C++ 2010
56<br />
<strong>Instalação</strong> concluída<br />
Progresso de download do Visual Studio Tools for Office 2010 Runtime (segundo e último dos faltantes)
58<br />
Tela de Boas Vindas da <strong>Instalação</strong> do Microsoft Visual Studio 2010 Tools para Office Runtime<br />
Exibição do contrato de licença de uso do software
60<br />
É necessário aceitar os termos para prosseguir a instalação.<br />
*Obs.: somente após marcada a caixa de seleção o botão “Instalar” fica ativo<br />
Progresso da instalação do software
62<br />
<strong>Instalação</strong> finalizada
64<br />
Checagem dos softwares pré-instalados requeridos (agora OK)
66<br />
Softwares do pacote do MySQL que serão instalados
67<br />
Progresso da instalação do MySQL Server 5.5.27
68<br />
Progresso da instalação do MySQL Workbench CE 5.2.41
69<br />
Progresso da instalação do MySQL Notifier 1.0.3<br />
Progresso da instalação do MySQL for Excel 1.0.6
70<br />
Progresso da instalação do Connector/ODBC 5.1.11
71<br />
Progresso da instalação do Connector/C++ 1.1.0
72<br />
Progresso da instalação do Connector/C 6.0.2<br />
Progresso da instalação do Connector/J 5.1.20.0
73<br />
Progresso da instalação do Connector/NET 6.5.4
74<br />
Progresso da instalação do MySQL Documentation 5.5.27 (documentação nativa do MySQL 5.5.27)
75<br />
Progresso da instalação do Samples and Examples 5.5.27
76<br />
Conclusão da instalação dos softwares do pacote MySQL
77<br />
<strong>Configuração</strong> do MySQL Server 5.5.27
79<br />
Opções de configuração do MySQL Server 5.5.27 (deixamos a configuração padrão)
80<br />
<strong>Configuração</strong> de senhas do root (usuário padrão principal) e adição de novos usuários
81<br />
Configuramos uma senha para o root
82<br />
Finalização da configuração (também configuramos o padrão)
84<br />
Finalização da instalação do pacote MySQL
85<br />
Como deixamos marcada a caixa de seleção para iniciar o Workbench, surge a tela inicial de administração do MySQL
As 5 pizzas mais vendidas – Quantidade e Valor<br />
Vendas por Semana - Quantidade<br />
MUSSARELA 59<br />
CALABRESA 49<br />
PORTUGUESA 35<br />
FRANGO COM CATUPIRI 42<br />
NAPOLITANA 39<br />
224<br />
86
87<br />
Vendas por Semana - Valores<br />
Gráfico de Vendas por Semana (quantidade) – 5 mais vendidas
MUSSARELA R$ 1.180,00<br />
CALABRESA R$ 980,00<br />
PORTUGUESA R$ 1.015,00<br />
FRANGO COM CATUPIRI R$ 1.134,00<br />
NAPOLITANA R$ 975,00<br />
R$ 5.284,00<br />
88<br />
Gráfico de Vendas por Semana (valores) – 5 mais vendidas
89<br />
8. HISTÓRIA DA PIZZARIA VECCHIA MAMMA
Por: José Justino Berto (proprietário)<br />
“Em 2002 fui convidado para trabalhar nos fins de semana na Pizzaria Vecchia<br />
Mamma. Tudo estava indo muito bem, até que um dos sócios sofreu um acidente.<br />
Diante do fato, ele foi obrigado a desistir da sociedade. A partir daí comecei a<br />
trabalhar todos os dias da semana. Surgiram crises e dificuldades das mais<br />
variadas. Acabei me tornando um dos sócios, mas ainda assim as coisas pareciam<br />
não caminhar na direção desejada. Foi então que decidi seguir o caminho sozinho<br />
me tornando proprietário. Atualmente as coisas estão melhorando, graças a Deus.”<br />
90
9. APLICATIVO WEB – IMAGENS<br />
Desenvolvido para Pizzaria Vecchia Mamma<br />
91<br />
Tela Site da Pizzaria Vecchia Mamma<br />
http://www.jnpizzaria.com.br
92<br />
Tela de Cadastro e Login<br />
Tela onde o cliente poderá fazer os pedidos
93<br />
Tela com a opção de pedir uma pizza metade um sabor metade outro sabor
94<br />
Tela do ambiente administrativo
95<br />
Tela de visualização dos pedidos do dia<br />
PopUp de impressão do pedido (único)
96<br />
Tela de cadastro de funcionários
10. CONCLUSÃO<br />
Tela de pesquisa de funcionários<br />
Tela de cadastro de novos produtos<br />
No início do projeto, a proposta de implantar um sistema web para controle de uma<br />
pizzaria nos pareceu bem complexo, o que de fato foi, mas com o conhecimento que<br />
a equipe possuía do assunto e com intensas pesquisas conseguimos concluir o<br />
97
projeto. A gratificação maior foi saber que com a implantação do sistema proposto,<br />
houve efetivamente uma redução no fluxo de ligações, ganho de tempo na<br />
elaboração dos pedidos e diminuiu o índice de pedidos errados enviados à cozinha.<br />
O uso do <strong>SGBD</strong> MySQL foi significativo por se tratar de ser um software gratuito,<br />
leve, prático, de fácil instalação e compatível com aplicativos web.<br />
11. REFERÊNCIAS<br />
Todas as pesquisas, exceto a de campo, tiveram como base o procurador do<br />
site Google (http://www.google.com.br). Abaixo segue os links e o dia da<br />
pesquisa.<br />
98
Fonte acessada em 13/10/2012<br />
http://www.webmaster.pt/mysql-principais-comandos-mysql-769.html<br />
Fonte acessada em: 21/09/2012<br />
http://www.superphp.com.br<br />
Fonte acessada em: 21/09/2012<br />
http://pt.wikipedia.org/wiki/MySQL<br />
Fonte acessada em: 21/09/2012<br />
http://www.devmedia.com.br/mysql-quem-e-voce/1752<br />
Fonte acessada em: 21/09/2012<br />
http://www.infoescola.com/informatica/mysql/<br />
Fonte acessada em: 21/09/2012<br />
http://www.oficinadanet.com.br/artigo/484/por_que_usar_mysql<br />
Fonte acessada em: 21/09/2012<br />
http://gustavomaiaaguiar.wordpress.com/2008/07/13/a-figura-do-administrador-debanco-de-dados-dba<br />
Fonte acessada em: 21/09/2012<br />
http://www.plugmasters.com.br/sys/materias/108/1/<strong>SGBD</strong>---Sistema-Gerenciador-de-<br />
Banco-de-Dados<br />
Fonte acessada em: 21/09/2012<br />
99
http://sql4all.blogspot.com.br/2010/05/caracteristicas-gerais-de-um-sgbd.html<br />
Fonte acessada em: 21/09/2012<br />
www.ic.unicamp.br/~beatriz/cursos/mc536/slides/introducao.pdf<br />
Fonte acessada em: 21/09/2012<br />
http://www.plugmasters.com.br/sys/materias/313/1/A-figura-do-administrador-do-<br />
Banco-de-Dados-%28DBA%29<br />
Fonte acessada em: 21/09/2012<br />
http://ricardo2aoc.wordpress.com/sistema-de-gestao-de-base-de-dados-sgbd/<br />
100