MySQL Workbench ANÁLISE Planejamento de bancos de dados com o MySQL Workbench Planejar um pequeno banco de dados no papel é simples, mas a estrutura logo vai se complicando quando mais elementos são adicionados. O MySQL Workbench pode ajudar a manter as tabelas organizadas. por Falko Benthin M uitos aplicativos necessitam de algum tipo de banco de dados. Quanto mais complexo o projeto, mais complicadas, demoradas, tortuosas e com tendência a erros ficam as estruturas dos bancos de dados correspondentes. Os fabricantes de softwares estão cientes desse problema, o que explica a enorme quantidade de ferramentas de visualização para planejamento e geração de banco de dados. A escolha de ferramentas de visualização é um tanto restrita no Linux. Os desenvolvedores podem optar entre ofertas gratuitas ou comerciais; as fer- ramentas gratuitas normalmente são oferecidas pelos próprios fabricantes do banco de dados. As ferramentas comerciais geralmente suportam múltiplos bancos de dados, mas ferramentas de vendedores de bancos de dados normalmente destinam-se a seu próprio produto. O MySQL Workbench [1], feito para ser usado com o sistema de banco de dados MySQL, é uma dessas ferramentas. É uma ferramenta gráfica para planejar e editar esquemas MySQL. O sistema de gerenciamento de bancos de dados MySQL não é somente para desenvolvedores profissio- nais de bancos de dados. Os bancos de dados MySQL são muito usados por webdesigners e administradores de sistemas. Mesmo que você seja apenas um desenvolvedor MySQL ocasional, irá perceber que uma ferramenta como o MySQL Workbench é muito útil e eficiente. Ele usa a licença GPLv2 e se baseia na experiência e no feedback da ferramenta de modelagem de dados DBDesigner 4 [2]. O Workbench está disponível nas versões padrão e comunitária; a edição padrão difere da comunitária pelo custo de 79 € anuais, capacidade de verificar esque- Quadro 1: Instalação Há pacotes binários do MySQL Workbench disponíveis para Ubuntu e Fedora [3]. Com sorte, é possível encontrar o software em repositórios de outras distribuições ou de terceiros. Por exemplo, Norbert Tretkowski criou um pacote do Workbench [4] para o Debian. Se forem necessárias mudanças urgentes, é possível baixar o código-fonte da ferramenta, descompactar o tarball, ir para o diretório criado por ele e ler o arquivo README antes de qualquer coisa. O arquivo lista as dependências do software, além de outras coisas. É possível, então, montar o software por meio do comando: ./autogen.sh –prefix=caminho && make -j3 install em uma janela de comando. Será preciso substituir caminho pelo nome do diretório onde o software está sendo instalado. Essa instalação demorou bastante no nosso laboratório, mas foi completada com sucesso, pois todas as dependências já haviam sido resolvidas. 50 http://www.linuxmagazine.com.br MySQL Workbench | ANÁLISE Figura 1O MySQL Workbench inicia em um espaço organizado. mas e modelos de bancos de dados e incluir documentação. A versão comunitária do MySQL Workbench inclui uma grande coleção de recursos. Administradores e desenvolvedores de banco de dados podem usá-lo para planejar tabelas, views, índices, stored procedures e triggers; parsear esquemas de bancos de dados existentes para visualizá-los (“engenharia reversa”); sincronizar esquemas com bancos de dados existentes (“gerenciamento de mudanças”) e exportar e imprimir modelos de diagramas. O MySQL Workbench é uma ferramenta para estruturar um banco de dados; ele não suporta buscas ou alterações de dados (para isso, a Oracle oferece o MySQL Query Browser). Este artigo usa a versão estável 5.1 do MySQL Workbench. Primeira vez Após instalar o MySQL Workbench (veja o quadro 1), inicie a ferramenta digitando mysql-workbench na linha de comando (figura 1). Com isso, será possível criar um novo modelo de banco de dados visualmente, através de diagramas EER (Extended Entity Linux Magazine #67 | Junho de 2010 incluirá seus nomes e sobrenomes, e uma coluna (atributo) com valores inteiros para a chave primária. Para criar a tabela, clique no ícone no lado direito da janela ou apenas tecle [T]. Após posicionar a tabela, é possível usar as abas do editor de tabelas para definir seu nome, os nomes das colunas e dos tipos, qualquer chave estrangeira, os gatilhos e as partições. Cada um desses itens leva a mais diálogos que permitem definir os tipos dos dados, condições, chaves primárias ou opções, caso se esteja usando chaves estrangeiras. O software lista os atributos abaixo do nome da tabela no espaço de trabalho. Para cada atributo, há um ícone colorido que permite identificar com facilidade seu tipo. O ícone da chave aponta para uma chave primária, por exemplo. Em nosso laboratório, levou um certo tempo para o ícone mudar após alteramos as colunas; em caso de dúvida, é sempre uma boa ideia checar o editor de tabelas. Relation – Entidade-Relacional Estendido) ou entrar no esquema. O método visual é mais simples para a maioria dos usuários; por esse motivo, será o foco deste artigo. Graças a controles intuitivos, o aprendizado é simples. O espaço de trabalho possui áreas bem delimitadas: à esquerda, há a caixa de ferramentas com os passos usados com maior frequência; à direita, o Após criar a primeira tabela, é navegador (muito útil no caso de um possível criar outras e definir as grande banco de dados), o catálogo chaves estrangeiras, que mos(que pode ser usado para acessar tram a relação entre os campos tabelas, views e procedures) e uma de várias tabelas. Para criá-las, caixa de informações. Na base da use a caixa de ferramentas ou janela do aplicativo ficam os edito- o editor de tabelas. O programa res de objetos para os objetos criados ficou um pouco instável em nosou abertos. so laboratório quando tentamos Vamos supor que queiramos criar um simples banco de dados de contatos para manter um controle do que emprestamos a nossos amigos. Começaremos criando a tabela Amigos, que Figura 2As camadas ajudam a controlar grandes projetos. Chaves estrangeiras e camadas 51 ANÁLISE | MySQL Workbench de Routines. O editor de rotinas irá iniciar na base da janela, onde será possível escrever a procedure (figura 3). O diagrama EER mostra apenas grupos de rotinas. Crie um grupo e arraste e solte as rotinas desejadas para o Routine Group Editor (Editor de Grupos de Rotina). Engenharia reversa Figura 3O editor de rotinas aparece na base da janela. criar chaves estrangeiras com a caixa de ferramentas; recomendamos o uso do editor. Agora, vá para a aba Foreign Keys e crie uma chave estrangeira apontando para a primeira tabela. Para isso, basta clicar na caixa correspondente: o MySQL Workbench irá sugerir um nome para a chave estrangeira e apresentará uma lista para selecionar as tabelas existentes no banco de dados. O software exibirá as candidatas na área ao lado do nome da chave estrangeira e tabelas referenciadas. Ao fazer isso, ele apenas sugere campos com tipos de dados possíveis. O Workbench normalmente cria relações que combinam com os tipos de dados. Por exemplo, um registro Pessoas poderia apontar para vários registros de endereços e de números de telefones – isso é chamado de relação um-para-muitos. Se o tipo de relação não estiver correto, clique na relação com o botão direito do mouse e faça ajustes no editor de relações. Quando uma tabela contém múltiplas chaves estrangeiras, o programa irá realçá-las em cores 52 diferentes quando o mouse passar por cima delas. Para controlar as áreas relacionadas em grandes bancos de dados, o MySQL Workbench introduz o conceito de camadas. Uma camada permite destacar com o uso de cores várias tabelas, para agrupá-las visualmente. Para usar as camadas, basta ir à barra de ferramentas ou digitar L e passar o mouse por cima de todos os objetos que devem ser incluídos na camada (figura 2). Rotinas É possível usar diagramas EER para criar visualizações de modo similar à criação de tabelas, mas os procedimentos e funções armazenados precisam ser definidos no esquema físico, não em um diagrama. O MySQL Workbench também se refere a procedures e funções armazenados como rotinas. Este exemplo usa uma pequena procedure que conta o número de objetos emprestados no momento. Para isso, iremos do diagrama EER para o modelo MySQL. Chegando lá, clique em Add Routine, abaixo Caso haja um modelo de banco de dados pronto para ser usado, é possível enviá-lo diretamente para seu banco de dados ou usar um arquivo. Para isso, selecione File | Export | Forward Engineer Create SQL Script ([Shift]+[Ctrl]+[G]), digite o nome do arquivo (sem o nome do arquivo, o aplicativo irá exibir o script mas não armazená-lo) e, se for preciso, selecione as opções necessárias. Em um segundo passo, o software perguntará quais objetos devem ser exportados (figura 4) antes de finalmente gerar o script. Para transferir o modelo diretamente para o servidor do banco de dados, é preciso inserir os parâmetros da conexão ao servidor em Database | Manage Connections. Para enviar o esquema recém-criado diretamente para o servidor, selecione Forward Engineering sob Database. Com poucos cliques é possível enviar o banco de dados para o local desejado. O processo para utilizar modelos de bancos de dados já existentes (“engenharia reversa”) também é bem simples. É possível executar Figura 4Alguns cliques permitem especificar o que o MySQL Workbench deve incluir no script. http://www.linuxmagazine.com.br MySQL Workbench | ANÁLISE um script SQL para importar o modelo ou pegá-lo em um servidor de banco de dados ativo. Existe um assistente no menu Databases para auxiliar neste processo. O programa solicita os dados de conexão e o esquema que será obtido. Caso o esquema contenha mais de 15 tabelas, a visualização pode ficar um tanto ruim: as 145 tabelas importadas de um sistema de informações de um hospital ficaram muito embaralhadas, e foi preciso fazer uma boa limpeza (figura 5). Graças ao forward engineering e à engenharia reversa, é possível usar o MySQL Workbench para modificar esquemas existentes e sincronizar os bancos de dados resultantes (Database | Synchronize Model, ou File | Export | Synchronize with SQL Create Script). Conclusões O MySQL Workbench oferece vários recursos muito úteis para planejar bancos de dados de larga escala. Porém, o software abusa dos recursos da máquina e ficou bem lento em alguns momentos, no nosso computador não tão potente (Pentium 4 2.5GHz com 1 GB de RAM). Infelizmente, o programa travou várias vezes, portanto, uma função para salvar o trabalho automaticamente em intervalos regulares seria uma boa ideia. O MySQL Workbench não foi feito para planejar bancos de dados em outros sistemas de gerenciamento de bancos de dados. Caso você trabalhe com outro sistema, considere uma ferramenta diferente, como o Database Virtual Architect [5], o Sybase PowerDesigner [6] ou o velhinho DBDesigner 4 [2]. Dito isto, caso você deseje uma ferramenta gratuita para ajudar a projetar bancos de dados MySQL, o MySQL Workbench é uma boa opção. Ele possui bons recursos que facilitarão a vida dos desenvolvedores e administradores Linux Magazine #67 | Junho de 2010 Figura 5Importar um grande número de tabelas pode deixar o diagrama ERR um tanto embaralhado. de bancos de dados. O MySQL Workbench 5.2, que está para ser lançado, suporta buscas no servidor e tarefas administrativas. Para obter esses recursos, os desenvolvedores incluíram no aplicativo algumas partes do MySQL Query Browser e do MySQL Administrator. n Mais informações [1] MySQL Workbench: http://www.mysql.com/products/workbench/ [2] DBDesigner 4: http://www.fabforce.net/dbdesigner4/ [3] Download do MySQL-Workbench: http://dev.mysql.com/downloads/select.php?id=8 [4] MySQL Workbench para Debian “Lenny”: http://tretkowski. de/blog/categories/3-Debian [5] Database Visual Architect: http://www.visual-paradigm.com/pro duct/dbva/ [6] Sybase PowerDesigner: http://www.sybase.com/products/mode development/powerdesigner ling- Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em [email protected] Este artigo no nosso site: http://lnm.com.br/article/3530 53