관계형이라고 부르는 이유는 구조화된 데이터가 하나의 테이블로 표현이 되는데 사전에 정의된 테이블을 relation 이라고도 한다.
테이블을 사용하는 DB = 관계형 DB
Keyword | 설명 |
---|---|
Data | 각 항목에 저장되는 값 |
Table (or relation) | 사전에 정의된, 행과 열로 구성되어 있는 structured data |
Field (or column) | 테이블의 column |
Record | Table 의 row |
Key | Table 의 record 를 구분할 수 있는 값. 각 record 마다 고유값을이여야 하며 primary key(기본 키) 와 foreign key(외래 키) 가 있다. |
Table 간 관계
테이블 자체 관계
테이블의 레코드 하나 당 다른 테이블의 하나의 레코드와 연결되어 있는 경우
유저 테이블은 유저 이름과 phone_id 라는 외래키를 가지고 있다.
Phonebook 테이블은 전화번호를 보관하고 있다
한명의 유저가 하나의 전화번호를 가지고 있고 vice versa 도 동일하다면 1:1 관계이다.
하지만 어차피 1:1 이라면 합치는게 나을 수도 있기 때문에 흔치 않다.
테이블의 레코드 하나 당 여러 개의 레코드와 연결되어 있는 경우
한 사람이 여러개의 전화번호를 가질 수 있는데 전화번호는 한 사람만이 가질 수 있는 경우
1:N 관계는 데이터베이스에서 제일 흔한 관계다.
여러 개의 레코드가 여러 개의 레코드를 가지는 관계
고객 테이블과 여행 상품 테이블이 있으면, 한 고객은 여러 상품을 신청할 수 있고, 또 각 여행 상품은 여러명의 신청한 고객을 가지고 있다.
N:N 관계는 두 개의 테이블과 1:N 관계를 형성하는 새로운 테이블을 만들어서 관리한다. Join table 이라고 부른다.
customer_package
테이블은 customer id
와 package id
를 1:1 로 묶는다.
Customer : customer_package
= 1:N
Package : customer_package
= 1:N
자기참조 관계
유저 한명은 한 명의 추천인만 가질 수 있지만 한 유저는 여러명을 추천할 수 있다.