M:N 관계

Hojun Jeong·2025년 4월 23일
post-thumbnail
오늘은 개발자로 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 관계와 같이 나는 수업을 한개만 듣는게 아니다 따라서 이쯤에서 그만하고 내일 시험을 준비하자

profile
Student , Junior Developer

0개의 댓글