관계형 데이터베이스
구조화된 데이터는 하나의 테이블로 표현할 수 있다.
테이블을 사용하는 데이터베이스가 관계형 데이터베이스 (Relational database) 라고 한다.
테이블마다 관계라는 개념이 존재하는데
관계는 1:1 (일대일), 1:N(일대다),N:M(다대다) 관계가 있다.
관계 종류
1:1 (일대일)
하나의 레코드가 다른 테이블의 레코드 한개와 연결된 경우
Users 테이블은 ID,name,phon_id를 가지고 있으며 phon_id는 외래기(foreign key)로 Phonebook 테이블의
ID와 연결되어 있다.
이는 각 전화번호가 단 한명의 유저와 연결되어 있고, 그 반대도 동일하다면 Users - Phonebook 테이블의
관계는 1:1 관계이다.
1:N (일대다) 관계
일대다 - 1:N 관계는 하나의 레코드가 서로 다른 여러 개의 레코드와 연결된 경우이다.
위 구조에서는 한명의 사용자는 여러개의 전화번호를 가질 수 있으나,
여러명의 유저가 한개의 전화번호를 가질 수는 없는 구조이다.
N:M(다대다) 관계
위 구조에서는 customer_package라는 테이블을 1:N의 관계를 두개로 표현한다.
이는 한명의 고객이 여러개의 상품을 가질 수 있고, 하나의 상품은 여러명의 고객을 가질 수 있음을 나타낸다.
즉, customer_pakage는 고객과 여행 상품의 중간에서 1:N 관계로 묶어주는 역할이며,
이 테이블을 이용하여 사용자가 몇개의 상품을 구매했는지 혹은 상품이 몇명의 사용자를 가지고 있는지 확인할 수 있다.
추가로 customr_pakage에서는 cp_id같은 기본키가 반드시 존재해야 한다.
자기참조관계
간혹 하나의 테이블 내에서 관계를 표현해야 할때가 있는데 회원가입시 추천인 ID를 입력하거나 하는 기능에 사용된다.
위 구조에서는 한명의 사용자는 한명의 추천인을 가질 수 있지만
한명의 추천인은 여러명의 사용자를 가질 수 있는 형태이다.
1:N관계와 흡사하지만 1:N의 관계는 서로다른 테이블의 관계를 나타내기에 차이가 있는 부분이다.