관계형 데이터베이스의 관계
관계형 데이터베이스 라는 이름에서도 알 수 있듯이, RDBS 에서는 데이터의 종속성을 관계로 표현한다.
각 테이블 사이에는 관계라는 데이터 종속성을 가지고 있다.
관계는 1:1, 1:N, N:M 등으로 대표된다.
1:1 관계
한 테이블의 레코드가 다른 테이블의 레코드와 정확히 하나만 연결되는 관계
다음과 같은 예시를 들 수 있다.
- 각 전화번호는 단 한명의 유저와 연결된다. 그 반대도 동일하다.
- 1:1 관계는 자주 사용되지 않는다.
- 1:1로 나타낼 수 있는 관계라면 병합하는 편이 나을 수도 있다. 물론 분리하는 편이 더 나을 수도 있고 말이다.
1:N 관계
한 테이블의 레코드가 다른 테이블의 여러 레코드와 연결되는 관계입니다. 가장 일반적인 관계 유형
다음과 같은 예시가 있을 수 있다.
- 다음과 같은 구조에서는 한명의 유저가 여러 전화번호를 가질 수 있다.
N:M 관계
한 테이블의 여러 레코드가 다른 테이블의 여러 레코드와 연결되는 관계입니다.
다음과 같은 두 테이블이 있다고 가정해보자.
여러 명의 고객(Customer) 과 여러 개의 여행 상품(Package) 가 있다.
한 명의 고객은 여러 개의 여행 패키지를 구매할 수 있고, 여행 패키지 하나는 여러 명의 고객에 의해 구매되어질 수 있다.
이러한 관계가 N:M 관계이다.
이러한 관계는 DB에 직접적으로 표현되는 것이 아닌, 두 테이블을 연결하는 별도의 중간 테이블
을 사용하여 1:N 의 관계들로 쪼갠다.
customer_package 라는 중간 테이블을 만들어서 고객과 여행 상품을 묶어 주는 역할을 한다.
이 때, 조인 테이블(중간 테이블) 에는 별도의 기본키가 존재해야한다.
물론 그것도 가능할 수 있다. 하지만 그렇게되면 리스트가 길어지는 것을 대비해서 필드의 크기를 크게 설정해야하고, 데이터를 조회하는데 많은 비용이 발생하게 된다.
자기 참조 관계
테이블의 레코드가 동일 테이블의 레코드와 연결되는 관계
- 테이블 내에서의 관계를 표현한다.
- 추천인을 예로 들 수 있다.