데이터베이스 관계(Database Relationships)

데이터베이스 관계란?

관계는 테이블 간에 둘 다 존재한다. 이 관계들은 일대일, 일대다, 다대다, 이렇게 세 가지 형태로 이루어진다. 대부분의 관계형 데이터베이스들은 각 로우의 각 컬럼이 하나의 값만을 보유할 수 있도록 설계되어 있다. (값은 원자적이다)
- 위키백과(관계형 데이터베이스 - 키 (Key) - 관계 (Relationships)

데이터베이스 관계란 데이터베이스 내 어떤 테이블들이 서로 어떻게 연결되어 있는지 나타낸 것이다.

데이터베이스 관계에는 일대일(1:1), 일대다(1:N), 다대다(N:N) 관계가 있다.

1. 일대일 관계 (One-to-one)

두 개의 테이블 A와 B가 있으면 A의 레코드 하나가 B의 레코드 하나와 연결된 관계이다.
예를 들면 한 사람의 주민등록번호와 여권 번호 같은 경우가 있다.

일대일 관계는 애초부터 하나의 테이블로 표현하는 경우가 많다.

2. 일대다 관계 (One-to-many)

테이블 A의 레코드 하나가 B의 레코드 여러 개와 연결된 관계이다.
예를 들면 한 사람이 여러 채의 아파트를 가진 경우가 있다.

3. 다대다 관계 (Many-to-many)

테이블 A의 레코드 하나가 B의 레코드 여러 개와,
테이블 B의 레코드 하나가 A의 레코드 여러 개와 연결된 관계이다.
예를 들면 대형마트의 고객과 판매 물품 간의 관계를 들 수 있다.

다대다 관계를 위처럼 표현할 수는 있으나, 실제로는 구현할 수가 없다.
만약 구현하려고 하면 한 고객의 구매 물품 번호에 여러 개의 값을 넣어야 할 수도 있는데, 이는 데이터베이스 제1 정규화를 깨뜨린다.

이런 이유로 실제로는 두 테이블 사이를 연결해주는 별도의 테이블$^*$$^1$을 만들어서 다대다 관계를 두 개의 일대다 관계로 풀어준다.

*1 이 별도의 테이블을 교차 엔티티라고 한다.


<참고 자료>

+ Recent posts