본문 바로가기

이론/DB

[DB] 데이터베이스의 1:1, 1:N, N:M 관계

인트로

안녕하세요. 오늘은 데이터베이스의 매핑 카디널리티에 대해서 알아 보겠습니다.

사상 원소수(mapping cardinarlity), 즉 매핑 카디널리티에는 3가지가 있습니다.

 

1) 1:1관계

2) 1:N 관계

3) N:M 관계

4) 전체 참여 / 부분 참여 관계

5) 존재 종속 : 'A가 있어야 B도 존재한다'

 

그럼 데이터베이스의 관계에 대해 설명 시작하겠습니다.

 

1) 1:1관계 

왼쪽 개체와 오른쪽 개체가 반드시 '하나'로만 매핑되어야 한다.

f(x)가 함수가 되려면 fx값은 반드시 하나만 나와야한다. 

[예시] 예를 들어, 국가와 대통령은 1:1관계입니다.

개체는 정적인 성질과 관련이 있고, 개체들간의 관계는 오퍼레이션을 해결하기 위해 만들어진다. 

예를 들어, 과외라는 관계를 생각해봅시다.

선생님과 학생은 '과외'라는 관계를 가지고 있습니다.

선생님과 학생의 관계

 

2) 1:N관계 (일대다관계)

현실세계에는 1:N관계가 많이 있습니다. 1:N 관계는 N:M 관계처럼 새로운 테이블을 만들지 않습니다. 

[예시] 예를 들어, 팀과 선수의 '소속' 관계를 생각해봅시다.팀에 소속되있지만 어떤 순간에는 1:N관계로 정의된다. 

또한, 선수에 team_id를 외래키로 넣어주면 1:N 관계로 표현할 수 있습니다. 

 

팀과 선수의 '소속' 관계

 

3) N:M관계 (다대다 관계)

개체들간의 관계성에서 중요한 측면이 매핑 카디널리티입니다.

 영화와 배우사이의 관계는 몇대몇일까요? 1:N 관계라고 생각해버리는 순간 테이블 구조가 제대로 안나옵니다. 

왜냐하면 한 배우는 여러 영화를 촬영하고, 한 영화는 여러 배우들을 쓰기 때문입니다.

N:M 관계는 관계를 가진 양쪽 개체 모두에서 1:M관계가 나타날때, N:M관계로 정의합니다.

추후에,  N:M관계는 1:N으로 나누어야합니다.

 

4) 전체참여 / 부분참여 관계

전체 참여 관계 : 전체 참여는, 전체 개체가 참여하는 릴레이션입니다. 어떤 관계를 보면,  교수와 학과의 '소속'이라는 관계가 있습니다. 교수는 학과에 모두 소속되므로, 전체 참여 조건을 가지는 릴레이션입니다.

부분 참여 관계  : 부분 참여는 일부 개체만 참여하는 릴레이션이다. 학생과 과목 사이의 릴레이션인경우, 어떤 학생이 휴학한 상태일 수 도 있기 때문에 '부분 참여'입니다. 

 

5) 존재 존속

존재 존속 (existence dependence) : 'A가 존재해야 B가 존재한다'

대출과 상환의 관계

 

A가 반드시 있어야만 B가 존재할때,  B는 A의 존재 존속이라고 합니다.

A를 주 개체라고 하고 , B를 종속 개체라고 합니다.

예를 들어, 상환은 대출에 의존적입니다.  (대출을 하지 않으면 상환할 필요가 없겠죠.)

이자율에 따라 '한달에 얼마를 내야하느냐' 의 상환이 결정됩니다. 

상환을 대출의 애트리뷰트로 잡기에는 너무 속성들이 많습니다.

대출의 기본키 상환의 외래키로 사용됩니다.

일단, 의존적이면 A인 대출은 1입니다. 그러나  B 개체인 '상황'은 1일수도 있고 N일 수도 있습니다.

상환이 1일수도 N일수도 있는 이유는, 상환을 한번에 한 경우 1이고, 나눠서 한 경우 N이기 때문입니다. 

 

읽어주셔서 감사합니다 :)