Banco de Dados
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:
- 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;
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:
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
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.