Database - RDBMS Relationship
RDBMS Relationship 관계형 데이터베이스 설계
1:1 관계 One-to-one relationship
- 하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우
- 1:1 관계는 자주 사용하지 않는다.
- Member 테이블에 phone_id 는 FK 로써, Phonebook 테이블의 id 와 연결되어 있다.
- 각 전화번호가 단 한 명의 유저와 연결되어 있고, 그 반대도 동일하다면, Member 테이블과 Phonebook 테이블은 1:1 관계
- 1:1 관계면 직접 저장하는 게 나을 수 있다.
1:N 관계 One-to-many relationship ⭐
- 하나의 레코드가 서로 다른 여러 개의 레코드와 연결된 경우
- 관계형 데이터베이스에서 가장 많이 사용
- 한 명의 유저가 여러 전화번호를 가질 수 있으나 여러 명의 유저가 하나의 전화번호를 가질 수는 없다.
N:M 관계 Many-to-many relationship
- 여러 개의 레코드가 다른 테이블의 여러 개의 레코드와 관계가 있는 경우
- N:M (다대다) 관계를 위해 스키마를 디자인할 때는 Join 테이블을 만들어 관리
- 1:N (일대다) 관계와 비슷하지만 양방향에서 다수의 레코드를 가질 수 있다.
- N:M 관계를 위한 테이블을 Join 테이블이라고 한다.
- member_package 테이블에서는 회원 한 명이 여러 개의 상품을 가질 수 있고 하나의 상품이 여러 개의 회원을 가질 수 있다.
- member_package 테이블은 member_id 와 package_id를 묶어주는 역할
- member_package 테이블을 통해 어떤 회원이 몇 개의 상품을 구매했는지 어떤 상품이 몇 명의 고객을 가지고 있는지 확인 가능
- 조인 테이블을 위한 기본 키는 반드시 있어야 한다.