관계형 데이터베이스의 관계

관계형 데이터베이스 라는 이름에서도 알 수 있듯이, RDBS 에서는 데이터의 종속성을 관계로 표현한다.

각 테이블 사이에는 관계라는 데이터 종속성을 가지고 있다.
관계는 1:1, 1:N, N:M 등으로 대표된다.

1:1 관계

한 테이블의 레코드가 다른 테이블의 레코드와 정확히 하나만 연결되는 관계

다음과 같은 예시를 들 수 있다.
Attachments/Picture/Pasted image 20240103154529.png

1:N 관계

한 테이블의 레코드가 다른 테이블의 여러 레코드와 연결되는 관계입니다. 가장 일반적인 관계 유형

다음과 같은 예시가 있을 수 있다.
Attachments/Picture/Pasted image 20240103154817.png

N:M 관계

한 테이블의 여러 레코드가 다른 테이블의 여러 레코드와 연결되는 관계입니다.

다음과 같은 두 테이블이 있다고 가정해보자.
여러 명의 고객(Customer) 과 여러 개의 여행 상품(Package) 가 있다.
Attachments/Picture/Pasted image 20240103155259.png
한 명의 고객은 여러 개의 여행 패키지를 구매할 수 있고, 여행 패키지 하나는 여러 명의 고객에 의해 구매되어질 수 있다.
이러한 관계가 N:M 관계이다.

이러한 관계는 DB에 직접적으로 표현되는 것이 아닌, 두 테이블을 연결하는 별도의 중간 테이블 을 사용하여 1:N 의 관계들로 쪼갠다.
Attachments/Picture/Pasted image 20240103155638.png
customer_package 라는 중간 테이블을 만들어서 고객과 여행 상품을 묶어 주는 역할을 한다.

이 때, 조인 테이블(중간 테이블) 에는 별도의 기본키가 존재해야한다.

중간 테이블 대신에 Package에서 customer_id를 리스트로 가지고 있으면 안될까?

물론 그것도 가능할 수 있다. 하지만 그렇게되면 리스트가 길어지는 것을 대비해서 필드의 크기를 크게 설정해야하고, 데이터를 조회하는데 많은 비용이 발생하게 된다.

자기 참조 관계

테이블의 레코드가 동일 테이블의 레코드와 연결되는 관계

Attachments/Picture/Pasted image 20240103160112.png|300

reference