데이터베이스 스키마 3단계 구조 (외부, 개념, 내부)
데이터베이스의 스키마란?
스키마는 데이터베이스의 구조와 제약조건에 대한 전반적인 명세.
외부 스키마
DB에서 사용자 혹은 개발자에게 필요한 값만 보여주는 논리적 구조(DTO와 유사)
개념 스키마
DB의 전체적인 논리적 구조
내부 스키마
물리장치 관점의 DB 구조
데이터 독립성
3단계의 스키마 구조의 핵심은 데이터 독립성 확보.
| 구분 | 의미 | 사상(Mapping) |
|---|---|---|
| 논리적 독립성 | 개념 스키마가 변경되어도 외부 스키마에 영향 없음 | 외부/개념 사상 |
| 물리적 독립성 | 내부 스키마가 변경되어도 개념 스키마에 영향 없음 | 개념/내부 사상 |
데이터 모델 3요소와 DB 설계 4단계
데이터 모델이란?
데이터 모델은 현실의 정보를 컴퓨터에서 표현하기 위한 개념적 도구. DB에서 데이터가 어떻게 구조화되고, 어떤 연산이 가능하며, 어떤 제약조건을 따라야 하는지 정의.
데이터 모델의 3요소
| 구분 | 개념 | 설명 |
|---|---|---|
| 구조 | 데이터의 논리적 구조 | DB에 표현될 데이터 타입, 객체 타입, 객체 간의 관계를 정의 |
| 연산 | 데이터 처리 방법 | 데이터를 조작하고 검색하는 방법에 대한 명세 |
| 제약조건 | 데이터의 유효성 | DB가 유지해야 할 유효하고 일관성있는 데이터에 대한 논리적 제약사항 |
DB 설계 4단계 요약
| 단계 | 핵심 활동 | 주요 산출물 |
|---|---|---|
| 요구사항 분석 | 사용자 요구사항 수집 및 분석 | 요구사항 명세서 |
| 개념적 설계 | 현실 정보의 추상적 모델링 | 개념적 스키마(내부 스키마), ERD |
| 논리적 설계 | DBMS에 맞는 논리적 모델로 전환 | 논리적 스키마(개념 스키마), 테이블 명세서 |
| 물리적 설계 | 저장장치에 맞는 물리적 구조 설계 | 물리적 스키마(외부 스키마), 테이블 정의서 |
ERD 표기법
| 도형 | 의미 | 도형 | 의미 |
|---|---|---|---|
| 사각형 (▭) | 개체 | 밑줄 친 타원 (으) | 기본키 속성 |
| 마름모 (◇) | 관계 | 실선 ( ─) | 개체,관계,속성 연결 |
| 타원 (◯) | 속성 | 점선(- - -) | 관계 집합, 관계 속성 연결 |
| 이중 타원 (◎) | 다중키 속성 |
데이터베이스 키
| 이름 | 특징 |
|---|---|
| 기본키 | Null 불가, 중복 불가, 테이블 당 하나, 자주 변경되지 않음, 후보키 중 선택된 단 하나의 속성 |
| 후보키 | 유일성, 최소성을 만족하는 모든 속성 |
| 대체키 | 유일성, 최소성을 만족하는 후보키 중 기본키가 아닌 속성 |
| 슈퍼키 | 유일성은 만족하지만 최소성을 만족하지 않는 속성 |
| 외래키 | 테이블의 속성이며, 다른 테이블의 기본키인 속성 |
RAID: 저장 장치의 성능과 안정성
RAID란?
여러개의 물리적인 디스크를 하나의 논리적인 디스크로 사용하는 기술. 성능향상과 데이터 안정성 확보가 목표.
RAID 핵심 개념
| 개념 | 설명 |
|---|---|
| 스트라이핑 | 분산 저장하여 성능 향상 |
| 미러링 | 복제 저장하여 안정성 확보 |
| 패리티 | 오류 검출 및 복구 |
RAID 레벨
| 레벨 | 기술 | 패리티 | 최소 디스크 | 장애 허용 | 저장 효율 | 요약 |
|---|---|---|---|---|---|---|
| 0 | 스트라이핑 | 없음 | 2개 | 불가 | 100% | 패리티 X, 중복 X → 디스크 1개만 고장나도 전체 데이터 손실 |
| 1 | 미러링 | 없음 | 2개 | 1개 | 50% | 하나 고장나도 다른 하나에서 백업, 저장공간 50% 사용 가능 |
| 5 | 스트라이핑 + 분산 패리티 | 단일 | 3개 | 1개 | (N-1)/N | 1개 디스크 장애 시 복구 가능, 쓰기 성능이 낮음 |
| 6 | 스트라이핑 + 이중 패리티 | 이중 | 4개 | 2개 | (N-2)/N | 2개 디스크 장애 시 복구 가능, 쓰기 성능이 5보다 낮음 |
| 10 | 미러링 + 스트라이핑 | 없음 | 4개 | 쌍당 1개 | 50% | 높은 성능 & 높은 안정성, 저장공간 50% 사용 가능 |
데이터베이스 함수 종속성
함수 종속성이란?
속성 A의 값이 속성 B의 값을 유일하게 결정할 때 속성 B는 속성 A에 함수적으로 종속된다 = A → B 표기. 이때 A(결정자), B(종속자)라고 표현.
함수 종속성의 유형
B,C 가 어떤 후보키에도 포함되지 않는 속성일 때 A→B, B→C, A→C가 성립하는 관계.함수 종속성과 정규화
데이터베이스 이상 현상 (Anomaly)
이상 현상이란?
데이터 중복으로 인해 발생하는 현상
| 유형 | 정의 |
|---|---|
| 삽입 현상 (Insertion) | 불필요한 데이터 없인 원하는 데이터를 삽입할 수 없는 현상 |
| 삭제 현상 (Deletion) | 특정 정보를 삭제하면 원치 않는 다른 정보가 함께 삭제되는 현상 |
| 갱신 현상 (Update) | 중복된 데이터 중 일부만 수정되어 불일치가 일어나는 현상 |
정규화와 반정규화 : 이상 현상 해결 방법
정규화란?
함수 종속성 기반으로 테이블을 무손실 분해하는 과정으로 DB에서 데이터의 중복을 최소화하고 데이터 무결성을 보장.
| 유형 | 원인 | 해결법 |
|---|---|---|
| 제1정규형 (1NF) | 한 셀에 여러 개의 데이터가 다중 값인 경우 | 도메인 원자값 확보 |
| 제2정규형 (2NF) | 기본키가 복합키일 때 부분 함수 종속 발생 | 부분 함수 종속 제거 |
| 제3정규형 (3NF) | 일반 속성 간의 종속, 이행 함수 종속 발생 | 이행 함수 종속 제거 |
| 보이스-코드 정규형 (BCNF) | 일반 속성이 기본키의 일부 속성을 결정 | 결정자 & 비후보키 속성 제거 |
| 제4정규형(4NF) | 속성 간 1:N 관계, 다치 종속 발생 | 다치 종속 제거 |
| 제5정규형(5NF) | 후보키가 아닌 속성 간 조인 종속 발생 | 조인 종속 제거 |
반정규화란?
정규화된 테이블 구조를 의도적으로 통합하거나 중복을 허용하여 DB의 성능을 향상하는 과정
트랜잭션
트랜잭션이란?
데이터베이스의 상태를 변화시키기 위한 작업의 최소 단위.
트랜잭션의 특성
| 특성 | 설명 |
|---|---|
| 원자성 (Atomicity) | 트랜잭션의 연산은 모두 정상 실행 & 미실행이어야 한다. |
| 일관성 (Consistency) | 트랜잭션 실행 후에도 DB는 일관된 상태를 유지해야 한다. |
| 고립성 (Isolation) | 하나의 트랜잭션이 실행 중일 때 다른 트랜잭션이 끼어들 수 없다. |
| 지속성 (Durability) | 성공한 트랜잭션 실행 결과가 영구적으로 DB에 저장되어야 한다. |
데이터베이스 회복 기법
회복 기법의 핵심 요소
UNDO와 Rollback은 다른 개념입니다. '장애 시 로그를 분석하여' ⇒ 회복 기법인 UNDO
회복 기법의 종류
트랜잭션 동시성 제어
Locking (로킹)
트랜잭션이 접근하는 데이터 항목을 잠그는 기법으로 동시 접근을 제어하여 일관성을 보장.
| 개념 | 설명 |
|---|---|
| 공유 락 | 데이터 읽을 때 사용, 여러 트랜잭션이 동시에 읽지만 쓰기는 불가능 |
| 배타 락 | 데이터 쓸 때 사용, 쓰기 연산을 수행하는 트랜잭션만 읽기/쓰기 가능 |
| 2단계 락킹 | 트랜잭션의 락 획득 / 해제 직렬화 보장 프로토콜. 락 확장과 수축 구성 |
트랜잭션 제어 명령어(TCL)
트랜잭션의 시작, 종료, 취소를 사용자가 명시적으로 제어하는 SQL 명령어.
| 명령어 | 역할 |
|---|---|
| COMMIT | 트랜잭션의 변경 내용을 DB에 영구 저장 |
| ROLLBACK | 트랜잭션의 변경 내용 취소, 이전 상태로 DB 복구 |
| SAVEPOINT | 트랜잭션 내 특정 지점 저장, 부분적 ROLLBACK 수행 |