오늘은 개발자로 2년을 일하고 학교로 복학한 학생의 어이없는 실수가 발단이 되어 글을 써본다.
물론 나의 이야기이다ㅎ
그렇게 숱하게 많은 테이블을 관리해봤으면서 m:n 관계를 정확히 적지 못했다..
1:1 관계
CREATE TABLE Person(
id INT PRIMARY KEY,
name VARCHAR(10)
);
CREATE TABLE Passport(
id INT PRIMARY KEY,
person_id INT UNIQUE,
passport_num VARCHAR(20),
FOREIGN KEY (person_id) REFERENCES Person(id)
);
하나의 여권에는 한명의 사람만이 입력된다
또한 한명의 사람도 하나의 여권을 갖는다
1:N 관계
CREATE TABLE Users(
id INT PRIMARY KEY,
name VARCHAR(10),
);
CREATE TABLE Orders(
id INT PRIMARY KEY,
user_id INT,
order_date DATE,
FOREIGN KEY (user_id) REFERENCES Users(id)
);
한명의 사람이 여러 주문을 할 수 있다.
N:M 관계
CREATE TABLE Students(
id INT PRIMARY KEY,
name VARCHAR(10)
);
CREATE TABLE Courses(
id INT PRIMARY KEY,
name VARCHAR(10),
);
CREATE TABLE Human_Car(
student_id INT,
course_id INT,
PRIMARY KEY(student_id,course_id),
FOREIGN KEY (student_id) REFERENCES Students(id),
FOREIGN KEY (course_id) REFERENCES Courses(id)
);
한명의 학생은 여러 수업을 들을 수 있다.
또한, 하나의 수업을 듣는 학생은 여러명이다.
N:M 의 경우 두개의 테이블, 이 둘의 연결관계를 설명해주는 테이블이 존재한다.
이 테이블의 pk는 두 fk를 합쳐서 복합키로 해도되고 id를 또 생성해도 되지만 효율성 측면에서 전자를 추천한다.
마지막 N:M 관계와 같이 나는 수업을 한개만 듣는게 아니다 따라서 이쯤에서 그만하고 내일 시험을 준비하자