Banco de Dados
- 14/03/2009
MySQL Workbench (Modelagem de banco de dados)
Olá pessoal.
Hoje vou falar de uma ferramenta muito útil para ‘desenhar’(modelar) banco de dados. Tenho utilizado o MySQL Workbech para fazer minhas DER(Diagrama de entidade de relacionamento – Wiki).
Diagrama de entidade de relacionamento é um modelo diagramático que descreve o modelo de dados de um sistema com alto nível de abstração. Ele é a principal representação do Modelo de Entidades e Relacionamentos. Sua maior aplicação é para visualizar o relacionamento entre tabelas de um banco de dados, no qual as relações são construídas através da associação de um ou mais atributos destas tabelas.
O MySQL Workbech é um software gratuito que veio substituir o DBDesigner4(nunca utilizei).
Para fazer o download do MySQLWorkbench acesse o seguinte site: http://dev.mysql.com/downloads/workbench/5.1.html
Gostei: Free, tem versão para Linux, pode-se salvar um PNG ou PDF do diagrama, ele gera o código SQL(schema), pode-se definir registros para as tabelas e quando rodar o SQL ele ja faz o INSERT(útil para fazer instações de sistema, ou quando libera o sistema para o cliente testar… fica fácil zerar o banco depois).
Não gostei: Depende do Microsof t .NET Framework [update]no caso de Windows[/update].
Fiz um exemplo bem simples, abaixo tem a imagem do diagrama e em seguida o SQL gerado por ele:
-
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
-
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
-
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=‘TRADITIONAL’;
-
-
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
-
USE `mydb`;
-
-
– —————————————————–
-
– Table `mydb`.`user_types`
-
– —————————————————–
-
CREATE TABLE IF NOT EXISTS `mydb`.`user_types` (
-
`id` INT NOT NULL AUTO_INCREMENT ,
-
`name` VARCHAR(45) NULL ,
-
`created` NULL ,
-
PRIMARY KEY (`id`) )
-
ENGINE = InnoDB;
-
-
– —————————————————–
-
– Table `mydb`.`users`
-
– —————————————————–
-
CREATE TABLE IF NOT EXISTS `mydb`.`users` (
-
`id` INT NOT NULL AUTO_INCREMENT ,
-
`name` VARCHAR(45) NOT NULL ,
-
`email` VARCHAR(45) NULL ,
-
`username` VARCHAR(45) NOT NULL ,
-
`password` VARCHAR(45) NOT NULL ,
-
`created` DATETIME NULL ,
-
`user_types_id` INT NOT NULL ,
-
PRIMARY KEY (`id`) ,
-
INDEX `fk_users_user_types` (`user_types_id` ASC) ,
-
CONSTRAINT `fk_users_user_types`
-
FOREIGN KEY (`user_types_id` )
-
REFERENCES `mydb`.`user_types` (`id` )
-
ON DELETE NO ACTION
-
ON UPDATE NO ACTION)
-
ENGINE = InnoDB;
-
-
– —————————————————–
-
– Table `mydb`.`new_types`
-
– —————————————————–
-
CREATE TABLE IF NOT EXISTS `mydb`.`new_types` (
-
`id` INT NOT NULL AUTO_INCREMENT ,
-
`name` VARCHAR(45) NOT NULL ,
-
`created` DATETIME NULL ,
-
PRIMARY KEY (`id`) )
-
ENGINE = InnoDB;
-
-
– —————————————————–
-
– Table `mydb`.`news`
-
– —————————————————–
-
CREATE TABLE IF NOT EXISTS `mydb`.`news` (
-
`id` INT NOT NULL AUTO_INCREMENT ,
-
`title` VARCHAR(45) NOT NULL ,
-
`description` VARCHAR(250) NOT NULL ,
-
`created` DATETIME NULL ,
-
`clicks` INT NULL ,
-
`new_types_id` INT NOT NULL ,
-
`users_id` INT NULL ,
-
PRIMARY KEY (`id`) ,
-
INDEX `fk_news_new_types` (`new_types_id` ASC) ,
-
INDEX `fk_news_users` (`users_id` ASC) ,
-
CONSTRAINT `fk_news_new_types`
-
FOREIGN KEY (`new_types_id` )
-
REFERENCES `mydb`.`new_types` (`id` )
-
ON DELETE NO ACTION
-
ON UPDATE NO ACTION,
-
CONSTRAINT `fk_news_users`
-
FOREIGN KEY (`users_id` )
-
REFERENCES `mydb`.`users` (`id` )
-
ON DELETE NO ACTION
-
ON UPDATE NO ACTION)
-
ENGINE = InnoDB;
-
-
– —————————————————–
-
– Table `mydb`.`profile`
-
– —————————————————–
-
CREATE TABLE IF NOT EXISTS `mydb`.`profile` (
-
`id` INT NOT NULL ,
-
`website` VARCHAR(45) NULL ,
-
`msn` VARCHAR(45) NULL ,
-
`gtalk` VARCHAR(45) NULL ,
-
`phone` VARCHAR(45) NULL ,
-
`users_id` INT NULL ,
-
PRIMARY KEY (`id`) ,
-
INDEX `fk_profile_users` (`users_id` ASC) ,
-
CONSTRAINT `fk_profile_users`
-
FOREIGN KEY (`users_id` )
-
REFERENCES `mydb`.`users` (`id` )
-
ON DELETE NO ACTION
-
ON UPDATE NO ACTION)
-
ENGINE = InnoDB;
-
-
USE `mydb`;
-
-
– —————————————————–
-
– Data for table `mydb`.`users`
-
– —————————————————–
-
SET AUTOCOMMIT=0;
-
INSERT INTO `users` (`id`, `name`, `email`, `username`, `password`, `created`, `user_types_id`) VALUES (1, ‘admin’, ”, ‘admin’, ‘pwdadmin’, ’0′, 1);
-
-
COMMIT;
-
-
– —————————————————–
-
– Data for table `mydb`.`user_types`
-
– —————————————————–
-
SET AUTOCOMMIT=0;
-
INSERT INTO `user_types` (`id`, `name`, `created`) VALUES (1, ‘Administrador’, NULL);
-
INSERT INTO `user_types` (`id`, `name`, `created`) VALUES (2, ‘Usuário’, NULL);
-
-
COMMIT;
-
-
SET SQL_MODE=@OLD_SQL_MODE;
-
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
-
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Outra coisa que gostei bastante é que você não cria os campos com os relacionamentos, ao definir um relacionamento o Mysql Workbench cria sozinho.
Bem, eu não tinha custume de trabalhar com diagramas e nem modelar o banco.
Estou mudando sériamente meu conceito. Modelar o banco ajuda muito, te da uma visão ‘macro’ do todo! é muito melhor do que ficar olhando para o Phpmyadmin e clicando nas tabelas para lembrar os nomes dos campos e etc…
Abraços!!


(10 votos, média: 4.90 de 5)

19 Comentários to “MySQL Workbench (Modelagem de banco de dados)”
Muito bom o post cara,
DER é chato de fazer mas dependendo da ferramenta fica fácil. Já dei uma olhada no MySQL Workbech e realmente é muito bom e fácil de usar.
Falou…
Por Thiago Tótaro (3 comments) em 14/03/2009
Hi Marcelo,
Thanks for using and blogging about MySQL Workbench. I posted a link to your blog on our forums
Just a quick note that only the Windows version depends on MSFT .NET (for the GUI). This is because the GUI is native to each platform.
Coming this Monday is Beta 1 (feature complete) of MySQL Workbench 5.1 on Mac OS X, Linux (Fedora, Ubuntu, RHEL), and Windows.
Join the discussions:
http://forums.mysql.com/index.php?151
Por MySQL Workbench (2 comments) em 15/03/2009
Another example.
Using MySQL Workbench to design the VoiceHotel Database Model
http://tomasmuller.com.br/2009/03/14/using-mysql-workbench-to-design-the-voicehotel-database-model/
[Brazilian] Utilizando o MySQL Workbench para criação do VoiceHotel Database Model
http://tomasmuller.com.br/2009/03/09/utilizando-o-mysql-workbench-para-criacao-do-voicehotel-database-model/
Por MySQL Workbench (2 comments) em 15/03/2009
Otimo post. MySQL Workbench realmente é uma ferramente muito util. Só falta agora a prometida versão pra linux.
Por Diego Henrique (1 comments) em 16/03/2009
Hi @MySQL Workbench,
His comments were very well placed. Thank you.
About the second comment, I was preparing a post for this
But the reference was great!
Thanks again!!
Por Marcelo Sabadini (109 comments) em 17/03/2009
Fala Diego tudo bem?
Seguinte, de uma olhadinha neste link: http://dev.mysql.com/workbench/?p=156
Na verdade ja rola versão para algumas distribuições do Linux.
Abração kra!!
Por Marcelo Sabadini (109 comments) em 17/03/2009
Marcelo bom dia
Olhe queria ver com você se vc tem os tutoriais no seu pc deste o começo de como usar um banco de dados tenho instalado aqui o MyQL-WORKBENCH.Se não for tomar muito o seu tempo se poderia me passar ou indigar onde esta suas paginas,deste o inicio.Adorei seus tutoriais parabéns.O Dreamweaver sei trabalhar com ele fiz vários sites para amigas minha.Vi um seu toturial com ele que gostei muito muito bem explicado,outra vez parabéns e obrigada por compartilhar com nós o seus conhecimentos.Estou montando um site de aulas de scrips digital,para passar aqui na net,para quem quser aprender,já tem 20 alunas e nem terminei os tutoriais.
BJS
Por Berenice (1 comments) em 08/04/2009
“Bem, eu não tinha custume de trabalhar com diagramas e nem modelar o banco.
Estou mudando sériamente meu conceito. Modelar o banco ajuda muito, te da uma visão ‘macro’ do todo! é muito melhor do que ficar olhando para o Phpmyadmin e clicando nas tabelas para lembrar os nomes dos campos e etc…”
Disse tudo meu amigo… além das dicas do Mini-curso PHP, onde eu aprendi bastante, uma vez que sou iniciante em desenvolvimento, essa do MySQL Workbench tem me ajudado muito agora.
Por Rogerio J. Gentil (3 comments) em 06/09/2009
Muito Bom mesmo o seu post!
Eu instalei o workbench no Fedora 12 e postei no meu blog como instalar e gostaria de colocar o link do seu blog no meu post.
Obrigado.
Por Douglas (1 comments) em 19/01/2010
marcelo..
primeiramente parabens pela postagen…
Mas agora vamos as duvidas.. rs
cara eu ja fiz conforme vc manda acima na postagem, soh que claro eu criei uma banco de dados conforme minha necessidade. Entao gostaria de saber como faço para poder popular este banco de dados…
Obrigado pela ajuda.
Por Gustavo (1 comments) em 09/02/2010
Olá Gustavo tudo bom?
Seguinte, quando vc esta modelando a tabela la na barra de propriedades onde tem ‘Table’, ‘Columns’ tem uma aba chamada <b.'Insert'.
Nesta coluna vc insere todos os registros. Mas lembre-se de clicar no botão ‘Save’ antes de sair desta aba, pois se não clicar vai perder todos os INSERTs hehehe
um grande abraço!!!
Por Marcelo Sabadini (109 comments) em 09/02/2010
Bom dia, blz?
tenho uma dúvida. Criei um BD só pra testar a ferramenta e achei bem legal mesmo. Mas depois de criado e inserido alguns registros, se eu alterar o BD (criar mais algum campo, mudar o tipo de algum campo) enfim, qualquer alteração no BD os meus registros vão pro espaço. Tu sabe como eu faço pra atualizar o BD sem perder os registros? Obrigado []s
Por Pablo Diego (1 comments) em 10/02/2010
opa! Entre as ferramentas gratuitas o workbench está bem na frente, mas ainda precisa melhorar muito, principalmente a conexao com o BD, onde alterar no bd era para dar so um refresh no workbench e ele ja atualizar. Pablo eu tive esse problema sorte que criei um schema para teste. Vc deve Fazer a Reserve Enginner primeiro, la vc escolhe as tables, em seguinda vc vai em Synchronize model, e lá vc vai dizer de onde quer atualizar do BD para o workbench ou o contrario. Ai ele atualiza.
Bom, a ferramenta nao me convenceu de eu sair do mysql maestro que eh uma excelente ferramenta e com um layout bem melhor que o workbench facilitando bastante o trabalho. Tem coisa no workbench que eh melhor ir no mysql query browser e fazer, pela facilidade.
Parabens pelo post.
Por camilo lopes (1 comments) em 17/02/2010
Gostei muito da interface e da praticidade do Workbench, porem acho que encontrei um erro gravissimo.
Eu abri um database que havia criado anteriormete. Depois precisei fazer algumas alterações. Por exemplo, um simples rename de campos de uma tabela. Na hora que faço as alterações e exporto para o banco fisico, essas alteraçOEs nao são processadas.
Isso acontece pq quando ele grava o script do sql (texto) pra envia-lo ao banco, ele grava no formato: IF NOT EXIST ‘database’.'tabela’.
Assim, como o database já existe (eu apenas estou alterando), as alterações não são processadas. O correto seria fazer um ALTER TABLE.
Façam os testes ai e postem seus comentários.
Por Giordano Menezes (1 comments) em 28/04/2010
Eu estava procurando por uma ferramenta de modelagem. Achei este artigo e a partir dai instalei o WorkBench e estou gostando da brincadeira. (já utilizei o CA erWin)
Por Humberto (1 comments) em 15/03/2011
Fala moçada!
Legal o teu post Marcelo! Sou novato no uso do workbench e gostaria de saber, se alguém tem idéia de quantas tabelas eu posso por em um mesmo diagrama (ERR), ou se haveria um jeito de aumentarmos o número de páginas do mesmo. Pois ele começa com duas e ainda não consegui fazer este número aumentar.
Valeu!
Por Sergio Moraes (1 comments) em 28/05/2011
Olá, apenas uma correção, esse diagrama na verdade é um DTR (Diagrama de TABELA relacional) e não um DER.
Abs!
Por Tales A. Mendonça (1 comments) em 26/07/2011
This might be the greatest piece of writing to date!
Por fat loss (1 comments) em 11/11/2011
Amador…
Por Mister (1 comments) em 15/11/2011