[DB] 연관관계(1:1, 1:N, N:M) 이해하기!

WOOK JONG KIM·2022년 11월 11일
0

연관관계

목록 보기
1/1
post-thumbnail

관계형 데이터베이스(Oracle, MySQL, etc)는 엔티티끼리 관계를 맺을 수 있어서 관계형 DB라는 이름이 붙음

Entity란 DataBase에서 표현하려고 하는 유형, 무형의 객체로서 서로 구별되는 것

관계는 두 엔티티가 서로 관련이 있을 때 말하는데 1:1, 1:N, N:M 관계를 맺을 수 있다

1:1 관계

특정 엔티티에서 상대 엔티티와 반드시 단 하나의 관계를 가지는 경우 맺는 관계

ex) 우리나라에서는 일부일처제로, 한 남자는 한 여자와, 현 여자는 한남자와만 결혼을 유지할 수 있음
-> 남편 또는 부인을 2명 이상 둘수 없다

1:N 관계

한쪽 엔티티가 관계를 맺은 엔티티쪽의 여러 객체를 가질 수 있는 것 의미

DB 설계시 자주 사용 하는 방식으로, 중간 테이블을 만들지 않음

부모와 자식관계를 생각하면, 부모는 자식을 1명이상 가질 수 있다
-> 이를 부모가 자식을 소유(has a 관계)한다고 표현

반대로 자식입장에서는 부모(아버지+어머니)를 하나만 가질 수 있다

여러 명의 자식(N)의 입장에서 한쌍의 부모(1)중 어떤 부모에 속해 있을지 표현해야 하므로, 부모 테이블이 PK를 자식 테이블에 FK로 집어 넣어 관계를 표현 함

즉 부모 테이블에서는 자식들이 누구인지 정보를 넣을 필요가 없지만, 자식 테이블에서는 각각 자식들의 자신의 부모 정보를 넣음으로써 관계를 표현할 수 있다

N:M 관계

양쪽 엔티티 모두에서 1:N 관계를 가지는 것을 말함
-> 서로를 1:N 관계로 보고 있음

학원과 학생의 관계를 예로 들면, 한 학원에서는 여러명의 학생이 등록할 수 있으므로 1:N

반대로 학생도 여러개의 학원을 수강할 수 있으므로 1:N

-> 학원과 학생은 N:M 관계를 가진다

서로가 서로를 1:N, 1:M 관계를 가지기에, 서로의 기본키를 자신의 외래키 칼럼으로 가지고 있음

보통 중간테이블을 두어서 관리한다

출처: https://velog.io/@gillog/DB-11-1N-NM-관계

profile
Journey for Backend Developer

0개의 댓글