본문 바로가기

공부 자료/DataBase

[데이터베이스] 테이블 관계 종류

1. 1:1 관계

: 하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우

Ex.

* 모든 예시에서 레코드 이름 외 작성 생략함

CREAT TABLE User {

user_id int,

name varcahr,

phone_id int

}

CREAT TABLE Phonebook {

phone_id int,

phone_number int

}

phone_id는 외래키(foreign key)로써, Phonebook 테이블의 phone_id와 연결되어 있다고 보았을 때 각 전화번호가 단 한명의 유저와 연결되어 있고,  그 반대도 동일하다면 1:1 관계를 가진다.

 

2. 1:N 관계 (관계형 데이터베이스에서 가장 많이 사용)

: 하나의 레코드가 서로 다른 여러개의 레코드와 연결된 경우

Ex. 

CREAT TABLE User {

user_id int,

name varcahr

}

CREAT TABLE Phonebook {

phone_id int,

phone_number int,

user_id int

}

한 유저가 여러 전화번호를 가질 수 있지만, 여러명의 유저가 하나의 전화번호를 가질 수 없기에 1:N 관계를 가진다.

 

3. N:N 관계

: 여러 개의 레코드가 다른 테이블의 여러 개의 레코드와 관계가 있는 경우

: 다대다 관계를 위해 스키마 디자인을 할 경우 Join 테이블을 만들어 관리함 (일대다 관계와 비슷하지만, 양방향에서 다수의 레코드를 가질 수 있음)

Ex. 

CREAT TABLE Customer{

customer_id int,

name varchar

}

CREAT TABLE Package{

package_id int,

package_name

}

여러개의 여행 상품이 있고, 여러명의 고객이 있을 경우 고객 한명은 여러개의 여행 상품을 구매할 수 있고, 여행 상품 하나는 여러명의 고객이 구매할 수 있기에 N:N 관계를 가진다. (이 경우 조인 테이블을 통해 연결이 필요함)

* 조인 테이블 생성

CREAT TABLE Customer_Package{

cp_id int,

customer_id int,

package_id int

}

Customer 테이블의 customer_id와 Customer_Package 테이블의 customer_id가 일대다 관계로, Package 테이블의 package_id와 Customer_Package 테이블의 package_id가 일대다 관계로 연결되어 각 테이블을 다대다 관계로 묶어주는 역할을 함

 

4. self referencing 관계 (자기참조 관계)

: 테이블 내에서의 관계