관계 데이터 모델(Relational Data Model)이란?
데이터를 행(Row)과 열(Column)으로 구성된 2차원 표(릴레이션)에 저장·관리하는 모델. 구조가 직관적이고 정형화된 방법(SQL)으로 다루기 쉽다.
핵심 용어
❗️ 릴레이션이 주어지고 카디널리티·차수를 물어보는 문제가 자주 출제됨. 각 용어 정의를 정확히 알아야 한다.
| 용어 | 정의(키워드) |
|---|---|
| 릴레이션(Relation) | 행과 열로 구성된 2차원 테이블 자체 |
| 튜플(Tuple) | 릴레이션의 행(Row), 레코드 |
| 속성(Attribute) | 릴레이션의 열(Column), 데이터 항목·필드 |
| 도메인(Domain) | 속성이 가질 수 있는 값의 범위(값들의 집합) |
| 카디널리티(Cardinality) | 튜플의 개수(행의 수) |
| 차수(Degree) | 속성의 개수(열의 수) |
| 인스턴스(Instance) | 특정 시점의 실제 데이터 집합, 릴레이션 외연 |
예시로 보는 카디널리티 & 차수
| 학번 | 이름 | 전공 |
|---|---|---|
| 1001 | 김철수 | 컴퓨터공학 |
| 1002 | 이영희 | 경영학 |
| 1003 | 박민수 | 수학 |
절차적 언어 vs 비절차적 언어
| 구분 | 관계대수(Relational Algebra) | 관계해석(Relational Calculus) |
|---|---|---|
| 성격 | 절차적(Procedural) 언어 | 비절차적(선언적) 언어 |
| 기술 방식 | "어떻게(How)" — 결과를 얻는 처리 절차·순서를 단계별로 기술 | "무엇(What)" — 원하는 결과만 선언, 방법은 DBMS에 위임 |
일반 집합 연산자
| 연산자 | 기호 | 설명 |
|---|---|---|
| 합집합(Union) | ∪ | 두 릴레이션의 튜플을 모두 포함(중복 제외) |
| 교집합(Intersection) | ∩ | 두 릴레이션에 공통으로 존재하는 튜플만 |
| 차집합(Difference) | − | 첫 릴레이션에는 있고 두 번째엔 없는 튜플 |
| 카티션 프로덕트(Cartesian Product) | × | 두 릴레이션 튜플의 모든 순서쌍(결과 튜플 수 = R수 × S수) |
순수 관계 연산자
| 연산자 | 기호 | 설명 |
|---|---|---|
| SELECT | σ | 조건을 만족하는 튜플(행)만 — 수평적 부분집합 |
| PROJECT | π | 주어진 속성(열)만 — 수직적 부분집합(중복 제외) |
| JOIN | ⋈ | 공통 속성 기준으로 두 릴레이션 결합(자연·세타·동등 조인) |
| DIVISION | ÷ | "B의 모든 값과 짝을 이루는 A의 값"만 추출 |
데이터베이스 스키마 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의 성능을 향상하는 과정
세 가지 접근 방식 비교
| 구분 | 순차 접근 | 인덱스 접근 | 해싱 접근 |
|---|---|---|---|
| 주요 접근 방식 | 순차 | 순차 + 임의 | 임의 |
| 검색 속도 | 느림 | 보통 ~ 빠름 | 매우 빠름 |
| 데이터 변경 | 비효율적 | 오버헤드 발생 | 효율적(충돌 시 저하) |
| 저장 공간 | 효율적 | 추가 공간 필요 | 낭비 가능성 |
| 적합한 업무 | 배치 처리 | 순차/임의 혼합 | 실시간 조회 |
순차 접근 (Sequential)
인덱스 접근 (Index, 색인)
해싱 접근 (Hashing)
무결성이란?
데이터의 정확성·일관성·유효성을 유지하는 것. 다양한 제약조건으로 DB 신뢰도를 높인다.
실기에서는 설명을 보고 어떤 무결성인지 판단하는 유형이 중요하다.
| 구분 | SQL 구현 | 설명 |
|---|---|---|
| 개체 무결성 | PRIMARY KEY | 기본키 속성은 NULL이거나 중복 값을 가질 수 없다 |
| 참조 무결성 | FOREIGN KEY | 외래키 값은 참조 릴레이션의 기본키 값이거나 NULL이어야 한다 |
| 도메인(속성) 무결성 | CHECK, DEFAULT | 속성 값은 정의된 도메인(타입·범위)에 속해야 한다 |
| 사용자 무결성 | TRIGGER | 사용자가 업무 규칙에 맞게 직접 정의하는 조건 |
| 키 무결성 | UNIQUE | 릴레이션 내에서 유일한 값을 가져야 한다 |
트랜잭션
트랜잭션이란?
데이터베이스의 상태를 변화시키기 위한 작업의 최소 단위.
트랜잭션의 특성
| 특성 | 설명 |
|---|---|
| 원자성 (Atomicity) | 트랜잭션의 연산은 모두 정상 실행 & 미실행이어야 한다. |
| 일관성 (Consistency) | 트랜잭션 실행 후에도 DB는 일관된 상태를 유지해야 한다. |
| 고립성 (Isolation) | 하나의 트랜잭션이 실행 중일 때 다른 트랜잭션이 끼어들 수 없다. |
| 지속성 (Durability) | 성공한 트랜잭션 실행 결과가 영구적으로 DB에 저장되어야 한다. |
데이터베이스 회복 기법
회복 기법의 핵심 요소
UNDO와 Rollback은 다른 개념입니다. '장애 시 로그를 분석하여' ⇒ 회복 기법인 UNDO
회복 기법의 종류
트랜잭션 동시성 제어
Locking (로킹)
트랜잭션이 접근하는 데이터 항목을 잠그는 기법으로 동시 접근을 제어하여 일관성을 보장.
| 개념 | 설명 |
|---|---|
| 공유 락 | 데이터 읽을 때 사용, 여러 트랜잭션이 동시에 읽지만 쓰기는 불가능 |
| 배타 락 | 데이터 쓸 때 사용, 쓰기 연산을 수행하는 트랜잭션만 읽기/쓰기 가능 |
| 2단계 락킹 | 트랜잭션의 락 획득 / 해제 직렬화 보장 프로토콜. 락 확장과 수축 구성 |
트랜잭션 제어 명령어(TCL)
트랜잭션의 시작, 종료, 취소를 사용자가 명시적으로 제어하는 SQL 명령어.
| 명령어 | 역할 |
|---|---|
| COMMIT | 트랜잭션의 변경 내용을 DB에 영구 저장 |
| ROLLBACK | 트랜잭션의 변경 내용 취소, 이전 상태로 DB 복구 |
| SAVEPOINT | 트랜잭션 내 특정 지점 저장, 부분적 ROLLBACK 수행 |