1. 관계형 데이터베이스
- 데이터베이스의 유형은 계층형, 망형, 관계형, 객체지향형, 객체관계형 등으로 분류됩니다.
- 현재 사용되는 DBMS(Data Base Management System)의 대부분은 관계형 데이터베이스(RDBMS)입니다.
- RDBMS는 테이블이라는 단위로 구성되며, 이 테이블은 하나 이상의 열과 행으로 이루어져 있습니다.
- RDBMS는 이 테이블의 관계로 데이터를 구성하고, 표현하는 DBMS입니다. 테이블 간의 관계는 1:1, 1:N, N:N 관계로 표현됩니다.
- 데이터 : 각 항목에 저장되는 값입니다.
- 테이블 (혹은 relation) : 사전에 정의된 행과 열로 구성되어 있는 체계화된 데이터입니다.
- 필드 (혹은 column) : 테이블의 열을 가리킵니다.
- 레코드 (혹은 tuple) : 테이블의 한 행의 저장된 정보입니다.
- 키 : 테이블의 각 레코드를 구분할 수 있는 값. 각 레코드마다 고유값이어야 하며 기본키 (primary key) 와 외래키 (foreign key) 등이 있을 수 있습니다.
2. RDBMS 관계 종류
1) 1:1 관계

- 테이블의 레코드 하나 당 다른 테이블의 한 레코드와 연결되어 있는 경우입니다.
- User 테이블에는 user_id라는 기본키와 name, Phone_id라는 외래키를 가지고 있습니다.
- Phonebook 테이블에는 phone_id라는 기본키와 phone_number라는 필드를 가지고 있습니다. phone_id는 이 테이블에서는 기본키이지만 User 테이블에서는 외래키입니다. User 테이블 입장에서는 외부에서 온 key이기 때문입니다.
- 두 테이블은 phone_id라는 키로 1:1 관계를 맺고 있습니다.
- 한 개의 전화번호 당 한 개의 phone_id를 가지고 있고, 한 명의 사용자가 한 개의 phone_id(즉, 한 개의 phone_number)를 가지고 있는 경우입니다.
2) 1:N 관계

- 테이블의 레코드 하나 당 여러 개의 레코드와 연결되어 있는 경우입니다.
- 한 명의 user가 여러 개의 phone_id(즉, 여러 개의 phone_number)를 가지는 경우입니다.
- 그 반대는 성립할 수 없습니다. 즉, 전화번호 하나는 한 명의 유저에게만 할당됩니다.
- 관계형 데이터베이스에서 제일 많이 사용되는 유형입니다.
3) N:N 관계
- 여러 개의 레코드가 여러 개의 레코드를 가지는 관계입니다.
- 1:N 관계와 비슷하지만 양방향에서 다수를 가질 수 있는 경우입니다.

- 위 이미지를 살펴보면, 한 고객은 여러 개의 상품 패키지를 이용할 수 있고, 한 패키지도 여러 명의 고객을 가질 수 있습니다.
- 위와 같은 관계를 RDBMS에서 표현하기 위해서는 조인 테이블이 필요합니다.

- 조인 테이블은 양 테이블에서 1:N 관계를 형성할 수 있도록 관계를 중계하는 테이블입니다. N:N 관계를 두 개의 1:N 관계로 분리시켜주는 테이블이라고 볼 수도 있습니다.
- Customer와 customer_package의 관계는 1:N 관계입니다.
- Package와 customer_package의 관계도 1:N 관계입니다.
4) 자기참조관계

- row에는 한 명의 유저와 있고, 한 명의 추천인이 있습니다. 한 명의 유저는 한 명의 추천인을 갖습니다.
- 하지만 반대로, 한 명의 추천인은 여러 유저를 가질 수 있습니다. 1:N 관계가 하나의 테이블 안에서 성립하는 경우입니다.
- 조직 내에 상하 관계를 표현할 때도 많이 사용되는 방법입니다. recommend_id 대신에 상사 필드가 들어오면 됩니다.
2. 스키마 디자인
- 1:1, 1:N 등 테이블 간의 관계를 지어주는 작업을 스키마 디자인이라고 합니다.

- 각 테이블이 기본키를 중심으로 연결되어 있는 것을 보실 수 있습니다.
- 스키마 디자인을 할 때는 기본키와 외래키가 연결됩니다. 외래키는 원래 있던 테이블에서는 기본키여야 합니다. 그렇지 않으면 N:N 관계가 성립될 수도 있습니다.
다음 포스팅에서는 SQL에 대해 정리하도록 하겠습니다.