데이터베이스 관계(Database Relationships)
데이터베이스 관계란?
관계는 테이블 간에 둘 다 존재한다. 이 관계들은 일대일, 일대다, 다대다, 이렇게 세 가지 형태로 이루어진다. 대부분의 관계형 데이터베이스들은 각 로우의 각 컬럼이 하나의 값만을 보유할 수 있도록 설계되어 있다. (값은 원자적이다)
- 위키백과(관계형 데이터베이스 - 키 (Key) - 관계 (Relationships)
데이터베이스 관계란 데이터베이스 내 어떤 테이블들이 서로 어떻게 연결되어 있는지 나타낸 것이다.
데이터베이스 관계에는 일대일(1:1), 일대다(1:N), 다대다(N:N) 관계가 있다.
1. 일대일 관계 (One-to-one)
두 개의 테이블 A와 B가 있으면 A의 레코드 하나가 B의 레코드 하나와 연결된 관계이다.
예를 들면 한 사람의 주민등록번호와 여권 번호 같은 경우가 있다.
일대일 관계는 애초부터 하나의 테이블로 표현하는 경우가 많다.
2. 일대다 관계 (One-to-many)
테이블 A의 레코드 하나가 B의 레코드 여러 개와 연결된 관계이다.
예를 들면 한 사람이 여러 채의 아파트를 가진 경우가 있다.
3. 다대다 관계 (Many-to-many)
테이블 A의 레코드 하나가 B의 레코드 여러 개와,
테이블 B의 레코드 하나가 A의 레코드 여러 개와 연결된 관계이다.
예를 들면 대형마트의 고객과 판매 물품 간의 관계를 들 수 있다.
다대다 관계를 위처럼 표현할 수는 있으나, 실제로는 구현할 수가 없다.
만약 구현하려고 하면 한 고객의 구매 물품 번호에 여러 개의 값을 넣어야 할 수도 있는데, 이는 데이터베이스 제1 정규화를 깨뜨린다.
이런 이유로 실제로는 두 테이블 사이를 연결해주는 별도의 테이블$^*$$^1$을 만들어서 다대다 관계를 두 개의 일대다 관계로 풀어준다.
*1 이 별도의 테이블을 교차 엔티티라고 한다.
<참고 자료>
'Database > Knowledge' 카테고리의 다른 글
[DB] 데이터베이스 언어 (Database Language) (0) | 2021.11.25 |
---|---|
[DB] 데이터베이스 스키마(Database Schema) (feat. 데이터베이스 사상(Database Mapping)) (0) | 2021.11.24 |
[DB] 데이터베이스 정규화(Database Normalization) (0) | 2021.11.21 |
[DB] 데이터베이스 트랜잭션(Database Transaction) (0) | 2021.11.21 |