Pages

Subscribe:

Ads 468x60px

Labels

01/06/2010

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
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:
DER
  1. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  2. SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  3. SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=‘TRADITIONAL’;
  4.  
  5. CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
  6. USE `mydb`;
  7.  
  8. – —————————————————–
  9. – Table `mydb`.`user_types`
  10. – —————————————————–
  11. CREATE  TABLE IF NOT EXISTS `mydb`.`user_types` (
  12.   `id` INT NOT NULL AUTO_INCREMENT ,
  13.   `name` VARCHAR(45) NULL ,
  14.   `created`  NULL ,
  15.   PRIMARY KEY (`id`) )
  16. ENGINE = InnoDB;
  17.  
  18. – —————————————————–
  19. – Table `mydb`.`users`
  20. – —————————————————–
  21. CREATE  TABLE IF NOT EXISTS `mydb`.`users` (
  22.   `id` INT NOT NULL AUTO_INCREMENT ,
  23.   `name` VARCHAR(45) NOT NULL ,
  24.   `email` VARCHAR(45) NULL ,
  25.   `username` VARCHAR(45) NOT NULL ,
  26.   `password` VARCHAR(45) NOT NULL ,
  27.   `created` DATETIME NULL ,
  28.   `user_types_id` INT NOT NULL ,
  29.   PRIMARY KEY (`id`) ,
  30.   INDEX `fk_users_user_types` (`user_types_id` ASC) ,
  31.   CONSTRAINT `fk_users_user_types`
  32.     FOREIGN KEY (`user_types_id` )
  33.     REFERENCES `mydb`.`user_types` (`id` )
  34.     ON DELETE NO ACTION
  35.     ON UPDATE NO ACTION)
  36. ENGINE = InnoDB;
  37.  
  38. – —————————————————–
  39. – Table `mydb`.`new_types`
  40. – —————————————————–
  41. CREATE  TABLE IF NOT EXISTS `mydb`.`new_types` (
  42.   `id` INT NOT NULL AUTO_INCREMENT ,
  43.   `name` VARCHAR(45) NOT NULL ,
  44.   `created` DATETIME NULL ,
  45.   PRIMARY KEY (`id`) )
  46. ENGINE = InnoDB;
  47.  
  48. – —————————————————–
  49. – Table `mydb`.`news`
  50. – —————————————————–
  51. CREATE  TABLE IF NOT EXISTS `mydb`.`news` (
  52.   `id` INT NOT NULL AUTO_INCREMENT ,
  53.   `title` VARCHAR(45) NOT NULL ,
  54.   `description` VARCHAR(250) NOT NULL ,
  55.   `created` DATETIME NULL ,
  56.   `clicks` INT NULL ,
  57.   `new_types_id` INT NOT NULL ,
  58.   `users_id` INT NULL ,
  59.   PRIMARY KEY (`id`) ,
  60.   INDEX `fk_news_new_types` (`new_types_id` ASC) ,
  61.   INDEX `fk_news_users` (`users_id` ASC) ,
  62.   CONSTRAINT `fk_news_new_types`
  63.     FOREIGN KEY (`new_types_id` )
  64.     REFERENCES `mydb`.`new_types` (`id` )
  65.     ON DELETE NO ACTION
  66.     ON UPDATE NO ACTION,
  67.   CONSTRAINT `fk_news_users`
  68.     FOREIGN KEY (`users_id` )
  69.     REFERENCES `mydb`.`users` (`id` )
  70.     ON DELETE NO ACTION
  71.     ON UPDATE NO ACTION)
  72. ENGINE = InnoDB;
  73.  
  74. – —————————————————–
  75. – Table `mydb`.`profile`
  76. – —————————————————–
  77. CREATE  TABLE IF NOT EXISTS `mydb`.`profile` (
  78.   `id` INT NOT NULL ,
  79.   `website` VARCHAR(45) NULL ,
  80.   `msn` VARCHAR(45) NULL ,
  81.   `gtalk` VARCHAR(45) NULL ,
  82.   `phone` VARCHAR(45) NULL ,
  83.   `users_id` INT NULL ,
  84.   PRIMARY KEY (`id`) ,
  85.   INDEX `fk_profile_users` (`users_id` ASC) ,
  86.   CONSTRAINT `fk_profile_users`
  87.     FOREIGN KEY (`users_id` )
  88.     REFERENCES `mydb`.`users` (`id` )
  89.     ON DELETE NO ACTION
  90.     ON UPDATE NO ACTION)
  91. ENGINE = InnoDB;
  92.  
  93. USE `mydb`;
  94.  
  95. – —————————————————–
  96. – Data for table `mydb`.`users`
  97. – —————————————————–
  98. SET AUTOCOMMIT=0;
  99. INSERT INTO `users` (`id`, `name`, `email`, `username`, `password`, `created`, `user_types_id`) VALUES (1, ‘admin’, , ‘admin’, ‘pwdadmin’, ‘0′, 1);
  100.  
  101. COMMIT;
  102.  
  103. – —————————————————–
  104. – Data for table `mydb`.`user_types`
  105. – —————————————————–
  106. SET AUTOCOMMIT=0;
  107. INSERT INTO `user_types` (`id`, `name`, `created`) VALUES (1, ‘Administrador’, NULL);
  108. INSERT INTO `user_types` (`id`, `name`, `created`) VALUES (2, ‘Usuário’, NULL);
  109.  
  110. COMMIT;
  111.  
  112. SET SQL_MODE=@OLD_SQL_MODE;
  113. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  114. 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.

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!!

2 comentários:

Anônimo disse...

When some one searches for his vital thing, therefore he/she desires to be available
that in detail, therefore that thing is maintained over here.
Also visit my website - la caixa

Anônimo disse...

Tente uma ferramenta gratuita - Valentina Studio. Produto surpreendente! IMO é o melhor gerente mysql, para todas as plataformas. http://www.valentina-db.com/en/valentina-studio-overview

Postar um comentário

Todos os comentários serão moderados e postados um tempo depois, comentários ofencivos serão deletados.