[ MySQL | TIL ] MySQL 테이블 생성하기 - 외래키(foreign key)로 연결된 테이블 포함

Haksoo JI·2023년 1월 13일

MySQL 테이블 생성하기 - 외래키(foreign key)로 연결된 테이블 포함

  • mysql에서 테이블을 생성하는 방법을 예제와 함께 정리해본다.
  • 최종적으로 CRUD 작업이 가능하도록 한다.
  • MySQL 워크벤치와 프롬프트를 기본적으로 사용한다.

자세한 코드 설명은 유튜브 영상으로 남겨두었다.

기본 테이블 생성 - users

기본 테이블인 users를 생성하는 코드이다.

  • 전체 코드
    CREATE TABLE nodejs.users (
    	id INT NOT NULL AUTO_INCREMENT,
    	name VARCHAR(20) NOT NULL,
    	age INT UNSIGNED NOT NULL,
    	married TINYINT NOT NULL,
    	comment TEXT NULL,
    	created_at DATETIME NOT NULL DEFAULT now(),
    	PRIMARY KEY(id),
    	UNIQUE INDEX name_UNIQUE (name ASC))
    	COMMENT = '사용자 정보'
    	DEFAULT CHARACTER SET = utf8
    	ENGINE = InnoDB;

관련 테이블 생성 - comments

  • 전체 코드

    CREATE TABLE nodejs.comments (
    	  id INT NOT NULL AUTO_INCREMENT,
        commenter INT NOT NULL,
        comment VARCHAR(100) NOT NULL,
        created_at DATETIME NOT NULL DEFAULT now(),
        PRIMARY KEY(id),
        INDEX commenter_idx (commenter ASC),
        CONSTRAINT commenter
        FOREIGN KEY (commenter)
        REFERENCES nodejs.users (id)
        ON DELETE CASCADE
        ON UPDATE CASCADE)
        COMMENT = '댓글'
        DEFAULT CHARSET=utf8mb4
        ENGINE = InnoDB;
  • foreign key 부분 설명

    INDEX commenter_idx (commenter ASC),
        CONSTRAINT commenter
        FOREIGN KEY (commenter)
        REFERENCES nodejs.users (id)

    칼럼 commenter를 인덱스의 이름을 commenter_idx로 해서 오름차순(ASC)으로 정렬하도록 관리한다.

  • commenter 에게 제약조건(constraint)를 걸 것인데, 외래키로 설정하는 것이고, nodejs데이터베이스의 users테이블의 id칼럼을 외래키로 설정하겠다는 뜻이다.

  • ON DELETE, ON UPDATECASCADE로 설정했다. 사용자 정보가 수정되거나 삭제되면 그것과 연결된 댓글 정보도 같이 수정하거나 삭제한다는 뜻이다. 그래야 데이터가 불일치하는 현상이 일어나지 않는다.

profile
아직 씨앗입니다. 무슨 나무가 될까요?

0개의 댓글