개발을 하다 보면 가장 먼저 접하게 되는 데이터베이스가 바로 **관계형 데이터베이스(Relational Database, RDB)**다.
그런데 이름에 들어간 **‘관계형’**이라는 말은 정확히 무엇을 의미할까?
이번 글에서는
- 관계형 데이터베이스의 정의
- 왜 ‘관계형’이라고 부르는지
- 그 관계가 무엇이고 왜 중요한지
- 어디에 쓰면 좋은지를 정리해본다.
1. 관계형 데이터베이스란?
관계형 데이터베이스란
데이터를 테이블(표) 형태로 저장하고,
테이블들 사이의 관계(Relation) 를 명확하게 정의하여 관리하는 데이터베이스다.
각 테이블은 행(Row)과 열(Column)로 구성되며,
엑셀 시트 여러 장을 규칙 있게 연결해서 관리하는 구조라고 생각하면 이해하기 쉽다.
2. 왜 이름이 ‘관계형’일까?
많이들 이렇게 생각한다.
“테이블이 서로 연결돼 있어서 관계형 아닌가?”
반은 맞지만, 핵심은 조금 다르다.
✔ 진짜 이유
관계형 데이터베이스는 수학의 ‘관계(Relation)’ 이론을 기반으로 만들어졌다.
- 테이블 = 수학적 의미의 Relation
- 행(Row) = 튜플(Tuple)
- 열(Column) = 속성(Attribute)
즉,
👉 단순히 연결돼 있어서가 아니라
👉 테이블 자체가 수학적 ‘관계’ 모델이기 때문에
‘관계형 데이터베이스’라고 부른다.
3. 관계란 정확히 무엇인가?
실무에서 말하는 관계는 보통
👉 테이블 간의 연결 관계를 의미한다.
예시
사용자 테이블 (Users)
user_idname
| 1 | 철수 |
| 2 | 영희 |
주문 테이블 (Orders)
order_iduser_idproduct
| 101 | 1 | 노트북 |
| 102 | 1 | 마우스 |
| 103 | 2 | 키보드 |
- Users.user_id ↔ Orders.user_id
- 주문은 어떤 사용자의 주문인지를 user_id로 연결한다
이처럼
- 한 테이블의 기본키(PK)를
- 다른 테이블에서 참조하는 구조를
외래키(Foreign Key) 관계라고 한다.
4. 왜 굳이 테이블을 나누고 관계를 맺을까?
❌ 관계 없이 한 테이블에 다 넣으면?
- 데이터 중복 발생
- 수정할 때 여러 행을 동시에 수정해야 함
- 실수로 데이터 불일치 발생
✅ 관계형 DB의 장점
1️⃣ 데이터 중복 제거
- 사용자 정보는 Users 테이블에 한 번만 저장
2️⃣ 데이터 무결성 보장
- 존재하지 않는 사용자로 주문 생성 불가
3️⃣ 유지보수 용이
- 사용자 이름 변경 → Users 테이블만 수정
4️⃣ 강력한 조회(SQL)
- 특정 사용자의 모든 주문 조회
- 기간별 매출, 사용자 통계 분석 가능
5. 관계형 데이터베이스는 무엇이 좋은가?
한 문장으로 요약하면:
데이터가 많고, 정확해야 하고, 구조가 중요한 경우에 매우 강력하다
특히 아래와 같은 특징이 있다.
- 데이터 구조가 명확하다
- 실수와 오류를 줄일 수 있다
- 복잡한 조건의 조회가 쉽다
- 신뢰성이 높다
6. 어디에 쓰면 좋은가?
👍 관계형 DB가 적합한 경우
- 은행 / 금융 시스템
- 쇼핑몰 주문 · 결제
- 회원 / 권한 관리
- 회사 ERP, CRM
- 학교 성적 관리 시스템
👉 “데이터가 틀리면 안 되는 곳”
👎 상대적으로 덜 적합한 경우
- 대규모 로그 데이터
- 실시간 채팅
- SNS 피드
- 이미지, 영상 위주 데이터
이런 경우에는 NoSQL이 더 적합한 선택이 될 수 있다.
7. 정리
- 관계형 데이터베이스란?
→ 테이블 기반 + 명확한 관계 + 수학적 모델 - 관계란?
→ 테이블 간의 연결(외래키) - 왜 쓰는가?
→ 정확성, 중복 제거, 유지보수, 신뢰성 - 어디에 적합한가?
→ 금융, 주문, 회원 관리 등 핵심 데이터
반응형
'나의 개발 > 데이터베이스' 카테고리의 다른 글
| 트랜잭션 읽기와 격리 수준 (Isolation Level) 정리 (3) | 2025.12.29 |
|---|---|
| 인덱스 클러스터링 팩터란? (0) | 2025.12.26 |
| 클러스터드 인덱스란? (3) | 2025.12.26 |
| DB 스키마와 ERD를 설계·확장·운영하려면 어떻게 해야 할까? (요약) (0) | 2025.12.20 |
| DB 스키마와 ERD를 설계·확장·운영하려면 어떻게 해야 할까? (NestJS + TypeORM) (0) | 2025.12.20 |
댓글