Study/DataBase

[DB/공부일지] 관계형 데이터베이스

gyuun365 2026. 5. 4. 22:17

데이터베이스의 종류는 관계형 데이터베이스와 비관계형 데이터베이스로 나뉜다.

 

관계형 데이터베이스

테이블의 구조와 데이터 타입 등을 사전에 정의하고, 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입할 수 있다. 

그렇다면 이러한 데이터베이스는 언제 사용할까?

데이터의 무결성과 일관성이 가장 중요한 경우 (ACID 필수)

  • 트랜잭션의 Atomicity와 Consistency가 필수적인 시스템의 경우(금융 및 결제 시스템)
  • 한정된 자원을 여러 사용자가 동시에 접근해서 처리해야할 경우(재고 관리 및 예약 시스템)

데이터가 명확한 구조적 관계를 가지고 있는 경우

 

  • 관계형 데이터 모델링의 경우로 데이터 간의 관계(1:1, 1:N 등)가 복잡하게 얽혀 있고, 조인(JOIN) 연산을 통해 데이터를 조합하여 조회해야 하는 경우일 때
  • 정형화된 데이터의 경우로 데이터의 스키마가 명확하고 변경이 자주 발생하지 않는 경우일 때

 

시스템의 규모가 단일 서버나 소규모/중규모 클러스터 수준인 경우

NoSQL의 장점인 수평적 확장이 필수적이지 않은 환경일 때를 말한다.


 

구조

이러한 테이블은 Row과 Column(열)로 구성되어 있으며 각 Column(열)은 하나의 속성에 대한 정보를 저장하고 Row에는 속성에 맞는 데이터가 저장될 수 있다. 그리고 하나의 열이 가질 수 있는 원자값들의 집합들을 Domain이라고 한다.

관계형 데이터베이스는 특정한 형식을 지킨다는 특징이 있어 데이터를 정확히 입력하지 않는다면 쉽게 접근할 수 없다.

 

이러한 DB를 다루는 언어 또한 존재한다. 바로 SQL 인데 표준 SQL을 배우면 대부분의 DBMS에 공통적으로 적용이 가능하다.


Key

 

  • 슈퍼키 (Super Key): 릴레이션 내의 튜플들을 고유하게 식별할 수 있는 속성들의 집합 (유일성 만족).
  • 후보키 (Candidate Key): 튜플을 유일하게 식별할 수 있는 최소한의 속성 집합 (유일성 + 최소성 만족).
  • 기본키 (Primary Key, PK): 후보키 중에서 선택된, 테이블을 대표하는 주 키. NULL 값을 가질 수 없으며, 중복될 수 없음.
  • 대체키 (Alternate Key): 후보키 중에서 기본키를 제외한 나머지 키.
  • 외래키 (Foreign Key, FK): 테이블 간의 참조 관계를 정의하는 키. 다른 테이블의 기본키를 참조하여 데이터의 무결성을 유지

 

등이 있다. 예시와 함께 보도록 하자.

학번 (Student_ID) 주민등록번호 (SSN) 이름 (Name) 학과 (Department) 전화번호 (Phone)
20260001 980101-1234567 김코딩 컴퓨터공학 010-1234-5678
20260002 990505-2345678 이데이터 데이터사이언스 010-9876-5432
20260003 001212-1122334 박시스템 컴퓨터공학 010-1111-2222

 

슈퍼키는 위에서 말했듯이 고유하게 식별만 하면 된다. 학번, 주민등록번호 , (학번, 이름), (학번, 주민등록번호) 등이 있다.

 

후보키는 위 슈퍼키에서 제일 최소한의 속성으로 식별할 수 있는 키를 말한다. 위에서는 학번과 주민등록번호가 있겠다.

 

기본키는 테이블을 대표하기 위해 후보키 중 선택된 주 키이다. 중복될 수 없고 NULL값을 가질 수도 없다. 여기서는 학번을 기본키로 해보자.

 

대체키는 후보키 중에 기본키로 선택되지 않은 나머지 키들을 말한다. 그렇다면 주민등록번호가 대체키가 된다.

 

외래키는 저 기본키를 다른 테이블에서 가져다 쓸 때의 기본키를 말한다.

수강번호 학번 (FK) 과목명
101 20260001 운영체제
102 20260001 데이터베이스
103 20260002 알고리즘

 


대응 cardinality

1 : 1 관계

A 테이블의 데이터 1개가 B 테이블의 데이터 1개와 정확히 대응하는 관계를 말한다. 

예를 들어 한 사람당 1개의 주민등록번호를 가질 수 있고 1개의 주민등록번호는 1명의 사람에게만 속하는 것을 의미

1 : N 관계

가장 흔하게 사용되는 관계로, A 테이블의 데이터 1개가 B 테이블의 데이터 여러 개와 대응할 수 있는 관계를 말한다.

예를 들어 한 사람의 수강 바구니에 여러 수강 과목이 들어갈 수 있는 것처럼

M : N 관계

A 테이블의 데이터 여러 개가 B 테이블의 데이터 여러 개와 대응할 수 있는 관계이다.

예를 들어 1명의 학생은 여러 과목을 수강할 수 있고 반대로 1개의 과목에는 여러 명의 학생이 수강할 수 있는 것처럼

 

문제는 관계형 데이터베이스는 구조상 M : N 관계를 가지기 힘들다는 것이다. 그래서 Mapping Table을 두어 1:N관계로 풀어내는 방식을 사용한다.


정규화

한마디로 데이터 중복을 최소화하고 데이터 무결성을 보장하기 위해 데이터 베이스를 설계하는 현상을 말함!

  • 물론 과도한 정규화는 조인의 횟수가 많아져 성능이 감소할 지도 모른다.

⇒ 그래서 과도한 정규화를 했을 때 역정규화(반정규화)가 필요하다.

  • 데이터 중복을 일부 허용하여 조인을 줄여 성능을 높일 수 있다.
  • 그래서 정규화와 역정규화를 적절히 사용하여 성능과 무결성 사이의 거리를 잘 잡아야함

예시를 보도록 하자.

| 학생ID | 학생이름 | 학과       | 수강과목_정보                                     |
|--------|----------|------------|---------------------------------------------------|
| 1001   | 홍길동   | 컴퓨터공학 | 'C101:자료구조(이교수)', 'C102:알고리즘(박교수)' |
| 1002   | 김철수   | 소프트웨어 | 'C101:자료구조(이교수)'                         |

제 1정규화

“한 칸엔 하나의 데이터만”

| 학생ID | 학생이름 | 학과       | 과목ID | 과목명   | 담당교수 |
|--------|----------|------------|--------|----------|----------|
| 1001   | 홍길동   | 컴퓨터공학 | C101   | 자료구조 | 이교수   |
| 1001   | 홍길동   | 컴퓨터공학 | C102   | 알고리즘 | 박교수   |
| 1002   | 김철수   | 소프트웨어 | C101   | 자료구조 | 이교수   |

제 2정규화

“partial dependency를 제거”

→ partial dependency : composite pk에 종속된 col을 말함

  • 위 1NF 테이블의 기본 키(PK)는 학생과 과목을 유일하게 식별하는 (학생ID, 과목ID) 조합이라고 하자 (Composite PK)
  • partial dependency 발생:
    • 학생이름, 학과는 PK의 일부인 학생ID에만 종속됩니다.
    • 과목명, 담당교수는 PK의 일부인 과목ID에만 종속됩니다.
| 학생ID (PK) | 학생이름 | 학과       |
|-------------|----------|------------|
| 1001        | 홍길동   | 컴퓨터공학 |
| 1002        | 김철수   | 소프트웨어 |
| 과목ID (PK) | 과목명   | 담당교수 |
|-------------|----------|----------|
| C101        | 자료구조 | 이교수   |
| C102        | 알고리즘 | 박교수   |

제 3정규화

“일반 컬럼에만 종속된 컬럼은 다른 테이블로 빼기” 라고 하는데 더 설명하자면 기본키가 아닌 일반 컬럼이 다른 일반 컬럼에 종속되는 현상을 제거하여 테이블을 분리하는 것이다. 위의 예시에서 과목 테이블에 교수연구실 정보가 추가된다고 가정해 보자. 

| 과목ID (PK) | 과목명   | 담당교수 | 교수연구실   |
|-------------|----------|----------|--------------|
| C101        | 자료구조 | 이교수   | 공학관 301호 |
| C102        | 알고리즘 | 박교수   | 공학관 405호 |
| C103        | 운영체제 | 이교수   | 공학관 301호 |

이때 교수연구실은 과목ID가 아닌 담당교수에 종속된다. 이를 분리하는 것이 바로 제 3정규화이다.

| 과목ID (PK) | 과목명   | 담당교수(FK)
|-------------|----------|----------
| C101        | 자료구조 | 이교수   
| C102        | 알고리즘 | 박교수
| C103        | 운영체제 | 이교수
| 담당교수 (PK) | 교수연구실   |
|---------------|--------------|
| 이교수        | 공학관 301호 |
| 박교수        | 공학관 405호 |

 

 

 

'Study > DataBase' 카테고리의 다른 글

[DB/공부일지] NoSQL  (0) 2026.05.04
[DB/공부일지] DB와 DBMS의 차이  (0) 2026.05.04
[DB/공부일지] File Processing System  (0) 2026.05.04