공부/데이터베이스
[데이터베이스] DB 데이터베이스 설계 및 인덱싱 완벽 정리
강갱갱
2025. 6. 15. 05:40
8장: 데이터베이스 설계 및 인덱싱 완벽 정리
이번 장에서는 데이터베이스를 설계하는 전 과정을 단계적으로 정리하고, 성능 향상을 위한 인덱싱 개념까지 함께 학습합니다.
📌 데이터베이스 설계란?
데이터베이스 설계(Database Design)는 사용자의 요구사항을 고려하여 논리적이고 물리적인 구조로 데이터베이스를 정의하고 생성하는 과정입니다.
1단계: 요구사항 분석
사용자의 요구사항을 수집하여 데이터로 표현 가능한 형태로 분석합니다.
이 단계에서는 문서화된 요구사항 명세서를 바탕으로 다음과 같은 정보를 파악합니다:
- 어떤 정보를 저장해야 하는가?
- 정보들 간의 관계는 어떻게 되는가?
- 제약조건은 무엇인가?
2단계: 개념적 설계
이 단계에서는 E-R(Entity-Relationship) 모델을 기반으로 전체 구조를 시각화합니다.
💡 설계 절차
- STEP 1: 개체 추출 및 주요 속성과 키 속성 식별
→ 명사를 중심으로 개체(Entity)와 속성(Attribute) 추출 - STEP 2: 개체 간의 관계 추출
→ 동사를 찾아 관계(Relationship)를 추출 - STEP 3: E-R 다이어그램으로 시각화
예: "학생은 강의를 수강한다"
- 개체: 학생, 강의
- 관계: 수강 (학생과 강의 사이의 관계)
- 개체: 학생, 강의
- 관계: 수강 (학생과 강의 사이의 관계)
3단계: 논리적 설계
개념적 설계를 릴레이션 스키마로 변환합니다.
📌 변환 규칙
- 모든 개체는 릴레이션으로 변환한다.
- 개체 이름 → 릴레이션 이름
- 개체 속성 → 릴레이션 속성
- 개체 키 → 기본키
- 다대다(n:m) 관계는 별도 릴레이션으로 만들어 양쪽 기본키를 포함한다.
- 일대다(1:n) 관계는 n 쪽 릴레이션에 1쪽의 기본키를 외래키로 포함시킨다.
- 일대일(1:1) 관계는 필수 참여하는 쪽 또는 아무 쪽에 외래키 포함 또는 릴레이션 통합.
- 다중 값 속성은 릴레이션으로 따로 만들고 원래 릴레이션의 기본키를 외래키로 사용.
🔐 무결성, 일관성, 보안성 고려
설계 시 다음 요소들을 반드시 고려해야 합니다.
- 무결성: 데이터의 정확성과 일관성 보장
- 일관성: 트랜잭션 후에도 DB 상태가 유효하도록 유지
- 보안성: 접근 제어 및 권한 관리
8장 부록: 인덱싱(Indexing)
📌 인덱스란?
인덱스(Index)는 테이블 내 데이터를 빠르고 효율적으로 검색하기 위해 사용하는 자료구조입니다.
🎯 특징
- 한 개 이상의 속성을 기준으로 설정
- 일반적으로 B-Tree 구조
- 변경(삽입, 삭제, 수정) 시 인덱스 재구성이 필요하므로 관리 비용이 있음
- 데이터 접근 속도 향상
- 테이블 전체를 저장하지 않음 (부분 집합 형태)
⚠️ 인덱스 고려사항
- WHERE 절에 자주 사용되는 칼럼을 기준으로 생성
- JOIN 조건에 사용되는 컬럼
- 너무 많은 인덱스는 오히려 성능 저하
📂 B-TREE 인덱스
B-Tree는 균형 이진트리 형태로, 중간 값을 루트로 설정하여 검색 시 평균적인 성능을 보장합니다.
예: [1, 3, 5, 7, 9] 이라는 데이터가 있을 때,
중간 값 5를 루트 노드로 설정하고 좌우로 분기시켜 검색 속도 향상
정렬 + 균형 = 빠른 검색!
📌 다음 글에서는 정규화와 역정규화를 예시와 함께 정리해 보겠습니다.
반응형