본문 바로가기

programming

[DB] 테이블간의 관계성 만들기

기존에 수영장 정보 테이블을 만들었었다

링크참조: https://tacit.tistory.com/147

 

[DB] CREATE 로 테이블 만들고 INSERT 해보기

create database playground; use playground; CREATE TABLE swimming_pool ( idx int NOT NULL AUTO_INCREMENT COMMENT '수영장 고유번호', title varchar(20) NOT NULL COMMENT '수영장 이름', type tinyint..

tacit.tistory.com

 

 

이제 수영장 강사, 강습, 직원 등 추가적인 정보들을 위한 테이블을 만들고, 서로 관계성을 연결시켜보자

 

먼저 강사정보 테이블

CREATE TABLE trainer (
  `idx` int NOT NULL AUTO_INCREMENT COMMENT '강사 고유번호',
  `name` varchar(5) NOT NULL COMMENT '강사 이름',
  `gender` char(1) NOT NULL comment '성별 남:M, 여:W',
  `birth_date` date NOT NULL comment '생년월일',
  created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시',
  updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '업데이트일시', 
  PRIMARY KEY (idx)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

 

강습정보 테이블

CREATE TABLE lesson_schedule (
	idx int NOT NULL AUTO_INCREMENT COMMENT '강습 고유번호',
    lesson_code int(5) NOT NULL COMMENT '강습 코드',
    title varchar(20) NOT NULL COMMENT '강습 이름',
    trainer_idx int NOT NULL COMMENT '담당 강사 idx',
    open_time time DEFAULT NULL COMMENT '시작시간',
    close_time time DEFAULT NULL COMMENT '종료시간',
    student_count int DEFAULT NULL COMMENT '등록회원 수',
    created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시',
	updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '업데이트일시', 
	PRIMARY KEY (idx),
    UNIQUE KEY (`lesson_code`),
    KEY idx_lesson1 (title),
    KEY idx_lesson2 (lesson_code),
    KEY idx_lesson3 (open_time, close_time),
    FOREIGN KEY (`trainer_idx`) REFERENCES `trainer` (`idx`)
    ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci