CS
Database
2026년 02월 02일 06:31
데이터베이스(Database)
1. 데이터베이스란 무엇인가?
데이터베이스(Database)는 여러 사용자가 공동으로 사용하는 데이터의 집합이다.
단순히 데이터를 저장하는 것이 목적이 아니라,
- 데이터의 중복을 줄이고
- 데이터 간 일관성을 유지하며
- 여러 사용자가 동시에 안전하게 접근할 수 있도록 관리하는 것이 핵심이다.
이러한 관리를 담당하는 소프트웨어를 DBMS(Database Management System) 라고 한다.
2. 데이터베이스 설계가 필요한 이유
현실 세계의 데이터를 그대로 저장하면 다음과 같은 문제가 발생한다.
- 동일한 데이터가 여러 곳에 저장됨 → 중복 발생
- 한 곳만 수정되어 데이터 불일치 발생
- 일부 데이터를 삭제했는데, 다른 데이터까지 사라짐
이러한 문제를 방지하기 위해 체계적인 설계 과정을 통해 데이터 구조를 정의해야 한다.
3. 데이터베이스 설계 단계
데이터베이스 설계는 다음과 같은 순서로 진행된다.
요구사항 분석 → 개념 설계 → 논리 설계 → 물리 설계
3.1 요구사항 분석
사용자가 어떤 데이터를 필요로 하고, 어떤 처리가 이루어져야 하는지를 분석하는 단계이다.
- 어떤 정보가 필요한가?
- 데이터 간 관계는 무엇인가?
3.2 개념 설계 (Conceptual Design)
현실 세계를 개념적으로 모델링하는 단계이다.
- 엔터티(Entity)
- 속성(Attribute)
- 관계(Relationship)
를 정의하며, 주로 ER 다이어그램(ERD) 을 사용한다.
이 단계에서는 DBMS 종류나 구현 방식은 고려하지 않는다.
3.3 논리 설계 (Logical Design)
개념 설계를 바탕으로 DBMS에서 사용할 논리적 구조를 설계하는 단계이다.
- 테이블 정의
- 속성 및 키 정의
- 정규화 수행
즉, 정규화는 논리 설계 단계에서 수행된다.
3.4 물리 설계 (Physical Design)
논리 설계 결과를 실제 저장 장치에 맞게 구현하는 단계이다.
- 저장 구조
- 인덱스
- 접근 경로
- 성능(처리량, 응답 시간)
을 고려한다.
👉 물리 설계의 핵심은 성능 최적화이다.
4. 키(Key)의 개념
데이터베이스에서 키는 튜플을 유일하게 식별하기 위한 속성 또는 속성의 집합이다.
주요 키 종류
- 슈퍼키(Super Key): 유일성은 만족하지만 최소성은 만족하지 않음
- 후보키(Candidate Key): 유일성과 최소성을 모두 만족
- 기본키(Primary Key): 후보키 중 선택된 하나
- 대체키(Alternate Key): 기본키로 선택되지 않은 후보키
- 외래키(Foreign Key): 다른 테이블의 기본키를 참조
5. 정규화(Normalization)
정규화는 데이터의 중복을 제거하고 이상 현상을 방지하기 위한 과정이다.
정규화를 통해 다음과 같은 이상 현상을 방지할 수 있다.
- 삽입 이상
- 삭제 이상
- 갱신 이상
5.1 제1정규형 (1NF)
모든 속성 값은 원자값(Atomic Value) 을 가져야 한다.
즉, 하나의 속성에 여러 값이 들어가면 안 된다.
5.2 제2정규형 (2NF)
제1정규형을 만족하면서 부분 함수 종속을 제거한 상태이다.
복합 기본키의 일부에만 의존하는 속성이 존재하면 이를 분리해야 한다.
5.3 제3정규형 (3NF)
제2정규형을 만족하면서 이행 함수 종속을 제거한 상태이다.
기본키가 아닌 속성이 다른 속성을 결정하면 안 된다.
5.4 BCNF
제3정규형보다 더 엄격한 정규형으로, 모든 결정자가 후보키여야 한다.
6. 함수 종속(Function Dependency)
속성 X의 값이 결정되면 속성 Y의 값이 항상 하나로 결정될 때,
이를 Y는 X에 함수적으로 종속된다고 하며 다음과 같이 표기한다.
X → Y
7. 관계대수와 관계해석
관계대수(Relational Algebra)
- 절차적 질의 언어
- 연산의 순서를 명시
- 관계 연산의 집합
관계해석(Relational Calculus)
- 비절차적 질의 언어
- 원하는 결과만 기술
