MySQL Workbench의 Forward Engineering에서 ER 다이어그램에서 자동으로 데이터베이스 구축

무엇 말한다.



MySQL Workbench는 GUI에서 MySQL을 조작 할 수있는 공식 도구입니다.
공식 사이트 다운로드 👉 htps //w w. mysql. 이 m/jp/p 로즈 cts/를 rk베인 ch/
이것이 똥 편리하고, 이 소프트웨어 내에서 ER 다이어그램을 작성할 수 있고, 그것을 그대로 자동으로 좋은 느낌으로 데이터베이스로 해줍니다. 이 기능을 포워드 엔지니어링이라고 합니다. Create Tabele라든지 일절 서 없어도 괜찮습니다.
Postgres에서 바람을 피우십시오.

환경


  • macOS Mojave 버전 10.14.6
  • MySQL Workbench version8.0.18

  • 전제


  • MySQL이 설치되었습니다
  • MySQL Workbench 설치됨

  • 이 기사는 MySQL Workbench 사용법 기사가 아니므로 정방향 엔지니어링 이외의 사용법은 다른 기사를 참조하십시오.

    주제



    그 전에, 커멘드 라인으로부터 MySQL을 기동시켜 두어 주세요.
    mysql.server start
    

    1.ER 다이어그램 작성




    먼저 시작하면 메뉴 바 [File]에서 [New Model]로.


    다이어그램 추가를 두 번 클릭하여 새 ER 다이어그램을 만듭니다.


    ER 다이어그램 작업 화면. 왼쪽 컨텐트 바에서 표의 아이콘을 터치한 다음 방안 위를 터치하면 새 표를 표시할 수 있습니다.


    낸 테이블을 더블 클릭하면 아래에서 테이블명이나 컬럼을 편집하는 바가 등장하기 때문에, 뭐 여러가지 편집합니다.


    덧붙여서 테이블끼리를 관련으로 연결할 때도 컨텐츠 바의 적절한 관련 아이콘을 클릭해, 연결하고 싶은 테이블을 각각 클릭하면 관련을 작성할 수 있습니다.
    이 때 자동으로 외래 키 등은 필요한 테이블에 생성됩니다.


    적당한 ER도가 완성되었습니다!

    2. 순방향 엔지니어링




    그런데 조속히 ER 다이어그램으로부터 데이터베이스를 생성하고 싶은 곳입니다만, 우선 데이터베이스의 생성처인 인스턴스를 MySQL과 접속해 둡시다.
    방금 MySQL은 기동했으므로, 홈 화면의 우측 메뉴 바[MySQL 마크]로부터 적당한 인스턴스(기사에서는 디폴트의 녀석을 사용)를 더블 클릭으로 접속할 수 있습니다.


    연결이 끝나면 ER 다이어그램의 파일로 돌아가 상단 메뉴 바 [Database]에서 [Forward Engineer...]를 선택.


    여러가지 나오지만 전부 [continue]에서 OK입니다.
    아, 하지만 디폴트의 인스턴스 사용하고 있지 않은 사람등은 적절히 표시되는 설정으로 맞추어 주세요.


    그리고 데이터베이스 스키마를 정의하는 SQL 스크립트가 자동으로 생성되었습니다!
    이하 실제로 자동 생성된 것.

    생성된 스크립트
    -- MySQL Workbench Forward Engineering
    
    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='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
    
    -- -----------------------------------------------------
    -- Schema mydb
    -- -----------------------------------------------------
    
    -- -----------------------------------------------------
    -- Schema mydb
    -- -----------------------------------------------------
    CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
    USE `mydb` ;
    
    -- -----------------------------------------------------
    -- Table `mydb`.`students`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`students` (
      `id` VARCHAR(36) NOT NULL,
      `name` VARCHAR(45) NOT NULL,
      `gender` VARCHAR(1) NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE)
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`teachers`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`teachers` (
      `id` VARCHAR(36) NOT NULL,
      `name` VARCHAR(45) NOT NULL,
      `gender` VARCHAR(1) NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE)
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`classes`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`classes` (
      `id` VARCHAR(36) NOT NULL,
      `name` VARCHAR(45) NOT NULL,
      `day_of_week` VARCHAR(1) NOT NULL,
      `period` INT NOT NULL,
      `year` INT NOT NULL,
      `semester` VARCHAR(1) NOT NULL,
      `teachers_id` VARCHAR(36) NOT NULL,
      PRIMARY KEY (`id`, `teachers_id`),
      UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
      INDEX `fk_classes_teachers1_idx` (`teachers_id` ASC) VISIBLE,
      CONSTRAINT `fk_classes_teachers1`
        FOREIGN KEY (`teachers_id`)
        REFERENCES `mydb`.`teachers` (`id`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
    
    
    -- -----------------------------------------------------
    -- Table `mydb`.`students_classes`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`students_classes` (
      `classes_id` VARCHAR(36) NOT NULL,
      `students_id` VARCHAR(36) NOT NULL,
      PRIMARY KEY (`classes_id`, `students_id`),
      INDEX `fk_table1_students1_idx` (`students_id` ASC) VISIBLE,
      CONSTRAINT `fk_table1_classes`
        FOREIGN KEY (`classes_id`)
        REFERENCES `mydb`.`classes` (`id`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_table1_students1`
        FOREIGN KEY (`students_id`)
        REFERENCES `mydb`.`students` (`id`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
    
    
    SET SQL_MODE=@OLD_SQL_MODE;
    SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
    SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
    
    


    그리고 또 [continue]를 누르면 이제 데이터베이스가 자동 생성되었습니다.

    이 데이터베이스가 생성되는 인스턴스를 살펴 보겠습니다.


    있었어. 오른쪽 목록의 mydb라는 사람입니다. 제대로 테이블도 생성되었습니다.

    요약



    이상 MySQL Workbench의 편리한 기능 Forward Engineering을 소개했습니다.
    데이터베이스 구축의 장면에서는 ER도의 작성은 자신의 머리를 정리하기 위해서도, 사람에게 설명하기 위해서도 유익한 것입니다, 이 작업만으로 데이터베이스가 완성해 버리는 것은 효율이 폭상이군요.
    프로덕션용 데이터베이스 설계를 이것으로 끝내는 것은 역시 그렇습니다만, 두드리는 대를 만든다는 의미에서는 역시 효율을 UP시켜 줄 것입니다!

    좋은 웹페이지 즐겨찾기