데이터베이스 설계
데이터베이스 설계
관계형 데이터베이스
용어
- 데이터: 각 항목에 저장되는 값
- 테이블(table, relation): 사전에 정의된 열의 데이터 타입대로 작성된 데이터가 행으로 축적
- 칼럼(column, field): 테이블의 한 열
- 레코드(record, tuple): 테이블의 한 행에 저장된 데이터
- 키: 테이블의 각 레코드를 구분할 수 있는 값(기본키, 외래키 등)
관계의 종류
1:1 관계
하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우. phone_id가 외래키로 Phonebook 테이블의 phone_id와 연결되어 있다. 각 전화번호가 한명의 유저와 연결되어 있고, 그 반대도 동일하다면, User 테이블과 Phone 테이블은 1:1 관계. 1:1 관계는 자주 사용하지 않는다. 1:1로 나타낼 수 있으면 User 테이블에 phone_number를 직접 저장하는 게 나을 수 있다.
1:N 관계
하나의 레코드가 서로 다른 여러 개의 레코드와 연결된 경우. 한 명의 유저가 여러 전화번호를 가질 수 있다. 그러나 여러 명의 유저가 하나의 전화번호를 가질 순 없다. 1:N 관계는 관계형 데이터베이스에서 가장 많이 사용한다.
M:N 관계
여러개의 레코드가 다른 테이블의 여러 개의 레코드와 관계가 있는 경우. 이때는 join 테이블을 만들어 관리한다. 고객 한 명이 여러 개의 상품을 가질 수 있고, 여행 상품 하나를 여러 명의 고객이 가질 수 있다. 조인 테이블을 만들 때도 기본키는 반드시 있어야 한다.
자기참조 관계
테이블 내에서 관계가 필요할 수 있다. 추천인이 누구인지 파악하기 위해 사용되었다. 한명의 유저는 한 명의 추천인을 가질 수 있고, 여러명이 한 명의 유저를 추천인으로 등록할 수 있다. 1:N 관계와 유사하지만 일반적으로 1:N 관계는 서로 다른 테이블의 관계를 표현하는 방법.