전산직 컴퓨터일반 - Part 05 db 요약

⭐⭐⭐ 반드시 / ⭐⭐ 중요 / ⭐ 참고 ⚠️ = 기출 함정 포인트



Chapter 01. 개요


데이터베이스 정의 ⭐⭐

  • 여러 응용 시스템이 공용으로 쓰기 위해 통합·저장된 운영 데이터의 집합
  • 정의 4가지 : 통합 데이터 (중복 최소화) / 저장 데이터 (저장 매체에 저장) / 운영 데이터 (업무에 꼭 필요) / 공용 데이터 (여럿이 같이 씀)

데이터베이스 특성 ⭐⭐⭐

특성 의미
실시간 접근성 질의에 즉시 응답
계속적인 변화 삽입·삭제·갱신으로 계속 바뀌면서도 정확한 상태 유지
동시 공용 여러 사용자가 동시에 같은 데이터 사용
내용에 의한 참조 레코드의 주소·위치가 아니라 값(내용) 으로 찾음

⚠️ “주소나 위치로 참조한다”는 틀린 보기

발전 과정 ⭐

1
파일 시스템 → 계층형 → 망형(네트워크형) → 관계형 → 객체지향형 → 객체관계형
모델 구조
계층형 트리 (1 : N). N : M 표현 어려움
망형 그래프 (N : M 가능). 구조 복잡
관계형 테이블 (행·열). SQL 사용, 현재 가장 많이 씀



Chapter 02. DBMS


파일 시스템의 문제 → DBMS 등장 ⭐⭐

  • 파일 시스템은 프로그램마다 파일을 따로 가져서 데이터 종속성과 데이터 중복성이 심함
  • 그래서 무결성·일관성·보안성·경제성이 떨어짐 → 데이터를 한곳에서 관리하는 DBMS 도입

DBMS 필수 기능 3가지 ⭐⭐⭐

기능 내용 언어
정의 기능 데이터의 형태·구조·저장 방법 정의 DDL
조작 기능 검색·삽입·삭제·갱신 DML
제어 기능 무결성 유지, 보안·권한 검사, 병행(동시성) 제어 DCL
  • 트랜잭션 제어(COMMIT, ROLLBACK)는 TCL로 따로 분류하기도 하지만, 시험에서는 보통 DCL(제어) 에 포함

DBMS 장단점 ⭐

  • 장점 : 중복 최소화, 데이터 공유, 무결성·일관성·보안 유지, 데이터 독립성, 표준화
  • 단점 : 비용 큼(전문 인력, 장비), 백업·회복 복잡, 시스템 복잡, 처리 속도 느릴 수 있음

데이터 독립성 ⭐⭐⭐

  • DBMS의 궁극적 목적
구분 의미 매핑
논리적 데이터 독립성 개념 스키마를 바꿔도 외부 스키마(응용 프로그램) 에 영향 X 외부 ↔ 개념
물리적 데이터 독립성 내부 스키마(저장 구조) 를 바꿔도 개념 스키마에 영향 X 개념 ↔ 내부
  • 예 : 디스크 저장 방식이나 인덱스를 바꿔도 테이블 구조와 앱은 그대로 → 물리적 독립성



Chapter 03. 스키마와 데이터 언어


스키마 ⭐⭐⭐

  • 데이터베이스의 구조(개체, 속성, 관계)와 제약 조건에 대한 정의
  • 컴파일되어 데이터 사전에 저장됨

3단계 스키마 ⭐⭐⭐

스키마 관점 내용
외부 스키마 (서브 스키마) 사용자 관점 사용자 한 명이 보는 일부분. 여러 개 존재 가능. 뷰라고도 함
개념 스키마 조직 전체 (논리적) 관점 DB 전체의 논리 구조. 개체·관계·제약 조건·접근 권한·무결성·보안 정책. 하나만 존재. 그냥 “스키마”라고 하면 이것
내부 스키마 물리적 저장 장치 관점 실제 저장 방법 (레코드 형식, 인덱스, 저장 순서). 하나만 존재

⚠️ 외부 스키마는 여러 개, 개념·내부 스키마는 하나 ⚠️ 무결성 규칙·보안 정책은 개념 스키마에 정의

데이터 언어 ⭐⭐⭐

언어 용도 명령어 주 사용자
DDL (정의어) 구조 정의·변경·삭제 CREATE, ALTER, DROP DBA
DML (조작어) 데이터 검색·삽입·삭제·갱신 SELECT, INSERT, DELETE, UPDATE 사용자, 프로그래머
DCL (제어어) 보안·권한·회복·병행 제어 GRANT, REVOKE, COMMIT, ROLLBACK DBA

⚠️ DROP(테이블 자체 삭제, DDL) vs DELETE(행 삭제, DML) 구분

데이터베이스 사용자 ⭐⭐

사용자 사용 언어
일반 사용자 질의어 (비절차적 DML)
응용 프로그래머 프로그래밍 언어에 DML을 삽입 (절차적 DML)
DBA (데이터베이스 관리자) DDL, DCL로 DB를 정의하고 제어
  • DBA의 역할 : 스키마 정의, 저장 구조·접근 방법 결정, 보안·권한 관리, 백업·회복, 무결성 유지, 성능 관리

DBMS 구성 요소 ⭐⭐

SQL을 받아서 컴파일하고 실행하는 공장이라고 생각하면 쉬움

구성 요소 역할
DDL 컴파일러 DDL로 정의한 스키마를 내부 형태로 바꿔 시스템 카탈로그에 저장
질의어 처리기 질의문을 파싱·분석·최적화·컴파일
DML 예비 컴파일러 응용 프로그램에 삽입된 DML을 추출 (프로그래밍 언어 컴파일 전에 실행)
DML 컴파일러 DML 명령어를 목적 코드로 변환
런타임 DB 처리기 컴파일된 코드를 실행
트랜잭션 관리자 무결성·권한 제어, 병행 제어, 회복
저장 데이터 관리자 디스크에 저장된 데이터 접근 제어

데이터 사전 vs 데이터 디렉터리 ⭐⭐⭐

구분 데이터 사전 (시스템 카탈로그) 데이터 디렉터리
내용 메타데이터 (테이블, 뷰, 인덱스, 권한 등 데이터에 대한 데이터) 데이터 사전의 데이터에 실제로 접근하는 데 필요한 정보
접근 사용자 + 시스템 모두 시스템만

⚠️ 데이터 사전은 사용자가 조회(SELECT)는 가능하지만 직접 수정 불가. DDL 실행 시 DBMS가 자동 갱신



Chapter 04. 관계 데이터 모델


릴레이션 용어 ⭐⭐⭐

학번 이름 학과 학년
2401 김철수 컴퓨터 2
2402 이영희 경영 1
2403 김철수 컴퓨터 3
용어 의미 위 표에서
릴레이션 2차원 테이블 표 전체
튜플 행 하나 학생 한 명
속성 열 하나 학번, 이름 …
도메인 속성이 가질 수 있는 값의 범위 학년 = {1, 2, 3, 4}
차수 (Degree) 속성(열) 수 4
기수 (Cardinality) 튜플(행) 수 3
  • 학생이 추가되면 기수만 바뀌고 차수는 그대로

릴레이션의 특징 ⭐⭐⭐

  • 튜플은 모두 다름 (똑같은 행 없음)
  • 튜플 순서 없음, 속성 순서 없음
  • 속성 값은 더 쪼갤 수 없는 원자값

키 ⭐⭐⭐

  • 유일성 : 이것만 알면 딱 한 줄로 특정되나? (지금 이 조합 그대로)
  • 최소성 : 하나라도 빼면 유일성이 깨지나? (군더더기 없음. 복합키에서만 의미 있음)
키 조건 예시
슈퍼키 유일성만 {학번}, {학번, 이름}, {주민번호, 학과} …
후보키 유일성 + 최소성 {학번}, {주민번호}
기본키 후보키 중 설계자가 고른 하나. NULL·중복 불가 {학번}
대체키 후보키 중 기본키로 안 뽑힌 것 {주민번호}
외래키 다른 릴레이션의 기본키를 참조하는 속성 수강 테이블의 학번
1
슈퍼키 ⊇ 후보키 = 기본키 + 대체키

⚠️ 외래키는 NULL 가능, 중복 가능 (한 학생이 여러 과목 수강하면 학번이 여러 번 나옴)

무결성 제약 조건 ⭐⭐⭐

무결성 규칙
개체 무결성 기본키는 NULL이면 안 되고 중복도 안 됨
참조 무결성 외래키 값은 NULL이거나, 참조하는 테이블의 기본키에 있는 값이어야 함
도메인 무결성 속성 값은 정의된 도메인 안의 값이어야 함
  • 예 : 학생 테이블에 없는 학번 9999를 수강 테이블에 넣으면 → 참조 무결성 위반



Chapter 05. 관계 대수와 관계 해석


관계 대수 vs 관계 해석 ⭐⭐⭐

관계 대수 관계 해석
절차적 언어 (어떻게 구할지 순서를 기술) 비절차적 언어 (무엇을 원하는지만 기술)
연산자 사용 수학의 술어 해석 기반
  • 둘의 표현 능력은 동등
  • ⚠️ “관계 대수는 비절차적”은 틀린 보기

일반 집합 연산자 ⭐⭐

연산 기호
합집합 ∪
교집합 ∩
차집합 −
카티션 프로덕트 ×
  • 합·교·차 집합은 두 릴레이션이 합병 가능해야 함 (차수가 같고 대응 속성의 도메인이 같음)

카티션 프로덕트 ⭐⭐⭐

1
2
결과 차수 = 두 릴레이션 차수의 합
결과 기수 = 두 릴레이션 기수의 곱
  • 예 : R(차수 3, 기수 4) × S(차수 2, 기수 5) → 차수 5, 기수 20

⚠️ 차수는 더하고 기수는 곱함. 계산 문제 단골

순수 관계 연산자 ⭐⭐⭐

연산 기호 의미
셀렉트 (Select) σ (시그마) 조건에 맞는 튜플(행) 추출 → 수평적 부분집합
프로젝트 (Project) π (파이) 원하는 속성(열) 추출 → 수직적 부분집합. 중복 튜플 제거
조인 (Join) ⋈ 공통 속성을 기준으로 두 릴레이션을 합침
디비전 (Division) ÷ R ÷ S : S의 모든 값과 관련 있는 R의 튜플 추출
  • 예 : σ학년=2(학생) → 2학년인 행만 / π이름(학생) → 이름 열만

⚠️ 셀렉트 = 행(수평), 프로젝트 = 열(수직). SQL의 SELECT는 오히려 π에 가까워서 헷갈리게 냄



Chapter 06. SQL


SQL 특징 ⭐

  • 관계 대수와 관계 해석 기반의 비절차적 언어
  • 집합(여러 레코드) 단위로 처리
  • 정의(DDL)·조작(DML)·제어(DCL) 기능 모두 제공

DDL ⭐⭐⭐

명령 용도
CREATE 스키마·도메인·테이블·뷰·인덱스 생성
ALTER 테이블 구조 변경 (열 추가·변경·삭제)
DROP 스키마·도메인·테이블·뷰·인덱스 삭제
1
2
3
4
5
6
7
8
9
10
CREATE TABLE 학생 (
    학번 INT PRIMARY KEY,
    이름 VARCHAR(20) NOT NULL,
    학과코드 INT,
    FOREIGN KEY (학과코드) REFERENCES 학과(학과코드)
);

ALTER TABLE 학생 ADD 전화번호 VARCHAR(20);

DROP TABLE 학생 CASCADE;
DROP 옵션 의미
RESTRICT 다른 곳에서 참조 중이면 삭제 거부
CASCADE 참조하는 것까지 연쇄적으로 같이 삭제

DML ⭐⭐⭐

명령 형식
SELECT SELECT 열 FROM 테이블 WHERE 조건
INSERT INSERT INTO 테이블(열) VALUES(값)
UPDATE UPDATE 테이블 SET 열 = 값 WHERE 조건
DELETE DELETE FROM 테이블 WHERE 조건

SELECT 전체 구조 ⭐⭐⭐

1
2
3
4
5
6
SELECT   학과, AVG(점수)        -- 5. 출력할 열
FROM     성적                   -- 1. 테이블
WHERE    학년 = 2               -- 2. 행 조건
GROUP BY 학과                   -- 3. 그룹 묶기
HAVING   AVG(점수) >= 80        -- 4. 그룹 조건
ORDER BY AVG(점수) DESC;        -- 6. 정렬
  • 작성 순서 : SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY
  • 실행 순서 : FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

⚠️ WHERE = 행(개별 튜플) 조건 / HAVING = 그룹 조건. 집계 함수(COUNT, SUM, AVG, MAX, MIN) 조건은 HAVING에 ⚠️ ORDER BY는 항상 맨 마지막. 기본은 오름차순(ASC), 내림차순은 DESC ⚠️ DISTINCT : 중복 행 제거

DROP vs DELETE ⭐⭐

DROP DELETE
DDL DML
테이블 자체(구조까지) 삭제 테이블 안의 행만 삭제 (구조는 남음)

DCL ⭐⭐

명령 용도
GRANT 권한 부여
REVOKE 권한 회수
COMMIT 트랜잭션 확정
ROLLBACK 트랜잭션 취소
1
2
GRANT SELECT, UPDATE ON 학생 TO user1;
REVOKE UPDATE ON 학생 FROM user1;

뷰 (View) ⭐⭐⭐

  • 하나 이상의 기본 테이블로부터 만든 가상 테이블 (실제로 저장되지 않음)
  • 목적 : 복잡한 질의를 단순화, 사용자에게 필요한 데이터만 보여줘서 보안 강화
1
2
3
4
5
CREATE VIEW 컴퓨터학생 AS
SELECT 학번, 이름 FROM 학생 WHERE 학과 = '컴퓨터'
WITH CHECK OPTION;

DROP VIEW 컴퓨터학생;
특징 내용
생성 / 삭제 CREATE VIEW / DROP VIEW
변경 ALTER로 변경 불가 → 지우고 다시 만들어야 함
기본 테이블 삭제 시 뷰도 자동 삭제
검색 기본 테이블과 거의 동일
삽입·삭제·갱신 제한 있음 (집계 함수, GROUP BY, 여러 테이블 조인으로 만든 뷰 등)
뷰 위의 뷰 생성 가능
인덱스 뷰에 독자적인 인덱스 불가
  • WITH CHECK OPTION : 뷰를 통해 삽입·갱신할 때 뷰의 조건(WHERE)을 벗어나는 변경을 막음

⚠️ “뷰는 ALTER로 변경할 수 있다” → 틀림



Chapter 07. 데이터베이스 설계


설계 순서 ⭐⭐⭐

1
요구 조건 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현
단계 하는 일 결과물
개념적 설계 요구사항을 이해하기 쉬운 형태로 표현. DBMS와 무관 E-R 다이어그램
논리적 설계 특정 DBMS 모델(관계형 등)에 맞게 변환. 정규화 수행 논리 스키마 (테이블 구조)
물리적 설계 저장 구조, 인덱스, 접근 경로 설계. 응답 시간·저장 공간·처리량 고려 물리 구조 (기본 단위 = 레코드)

⚠️ ERD = 개념적 설계 / 정규화·스키마 = 논리적 설계 / 인덱스·저장 구조 = 물리적 설계. 단계 매칭 단골

  • 설계 고려사항 : 무결성, 일관성, 회복, 보안, 효율성, 확장성



Chapter 08. 정규화


정규화 ⭐⭐⭐

  • 이상현상을 없애기 위해 속성 간 종속 관계를 분석해서 릴레이션을 분해하는 과정
  • 한 줄 요약 : “모든 정보를 그 정보의 주인(후보키)이 있는 테이블에 딱 한 번만 저장”
  • 논리적 설계 단계에서 수행

이상현상 ⭐⭐⭐

  • 원인 : 한 테이블에 여러 이야기가 섞여서 같은 사실이 여러 줄에 중복 저장됨
이상 의미 예 (학번, 과목, 지도교수 테이블)
삽입 이상 원하지 않는 값까지 같이 넣어야 함 수강 신청 안 한 신입생의 지도교수를 못 넣음 (기본키 NULL)
삭제 이상 지우면 안 될 정보까지 같이 삭제됨 수강 취소로 줄을 지우면 지도교수 정보도 사라짐
갱신 이상 일부만 바뀌어서 데이터가 모순됨 지도교수 변경 시 한 줄이라도 빠뜨리면 모순

함수 종속 ⭐⭐⭐

  • X → Y : X를 알면 Y가 하나로 정해짐. X = 결정자, Y = 종속자
  • 확인법 : X 값이 같은 줄끼리 모았을 때 Y도 전부 같은가?
  • Swift로 치면 [X: Y] 딕셔너리가 성립하는가
종류 의미
완전 함수 종속 기본키 전체에 종속 (정상)
부분 함수 종속 기본키의 일부에만 종속 (복합키일 때만 생김)
이행 함수 종속 A → B, B → C 이므로 A → C (건너서 결정)

암스트롱 공리 ⭐

  • 기본 : 반사 (X ⊇ Y면 X → Y), 증가 (X → Y면 XZ → YZ), 이행 (X → Y, Y → Z면 X → Z)
  • 부가 : 결합 (X → Y, X → Z면 X → YZ), 분해 (X → YZ면 X → Y, X → Z), 의사이행 (X → Y, WY → Z면 WX → Z)

정규형 단계 ⭐⭐⭐

단계 제거하는 것 던지는 질문
1NF 도메인이 원자값이 아닌 것 한 칸에 값이 여러 개인가?
2NF 부분 함수 종속 키의 일부만으로 정해지는 컬럼이 있나?
3NF 이행 함수 종속 키 아닌 컬럼이 다른 일반 컬럼을 정하나?
BCNF 결정자이면서 후보키가 아닌 것 결정자 중에 후보키가 아닌 놈이 있나?
4NF 다치 종속 (MVD, A →→ B) 서로 독립적인 여러 값 묶음이 한 테이블에 있나?
5NF 조인 종속 (JD) –

암기 : 도 → 부 → 이 → 결 → 다 → 조

단계별 예시 ⭐⭐⭐

2NF : 수강(학번, 과목번호, 성적, 지도교수)

  • 지도교수는 학번(키의 반쪽)만으로 정해짐 → 부분 종속
  • 분해 → (학번, 과목번호, 성적) / (학번, 지도교수)

3NF : 지도(학번, 지도교수, 학과)

  • 학번 → 지도교수 → 학과 → 이행 종속
  • 분해 → (학번, 지도교수) / (지도교수, 학과)

BCNF : 수강과목(학번, 과목, 교수), 교수 한 명은 한 과목만

  • 교수 → 과목인데 교수는 후보키가 아님 → BCNF 위반
  • 분해 → (학번, 교수) / (교수, 과목)

3NF vs BCNF 구분법 ⭐⭐⭐

  • 결정당하는 쪽이 일반 컬럼이면 → 3NF 문제
  • 결정당하는 쪽이 키의 일부면 → 3NF는 통과, BCNF 문제

⚠️ 문제에서 몇 정규형 위반이냐 물으면 처음으로 걸리는 단계를 답함 ⚠️ 기본키가 속성 하나면 2NF는 자동 만족 ⚠️ BCNF면 무조건 3NF, 3NF라고 BCNF는 아님 (BCNF = “강한 3NF”)

정규화 주의사항 ⭐⭐

  • 정규화는 중복을 줄이는 것이지 종속성을 없애는 것이 아님 (종속은 쪼갠 테이블에 그대로 남음)
  • 분해해도 정보가 사라지면 안 됨 → 무손실 분해
  • 테이블이 쪼개지면 조인이 늘어나 검색이 느려질 수 있음 → 성능을 위해 일부러 다시 합치는 것 = 반정규화



Chapter 09. 데이터 모델링 (E-R 모델)


구성 요소 ⭐⭐

용어 의미
개체 (Entity) 독립적으로 존재하며 구분 가능한 대상 (학생, 과목). 속성들의 집합
속성 (Attribute) 개체의 특성 (학번, 이름)
관계 (Relationship) 개체 사이의 연관 (학생이 과목을 수강)

E-R 다이어그램 표기법 ⭐⭐⭐

기호 의미
사각형 개체
마름모 관계
타원 속성
밑줄 친 타원 기본키 속성
이중 타원 다중값 속성
점선 타원 유도 속성
이중 사각형 약한 개체
선 개체·관계·속성 연결

⚠️ 사각형 = 개체, 마름모 = 관계, 타원 = 속성. 기호 매칭 단골

  • 관계 유형 : 1 : 1, 1 : N, N : M
  • 하나의 관계에 셋 이상의 개체가 참여하는 다원 관계도 가능

속성 유형 ⭐⭐

유형 예
단순 속성 / 복합 속성 나이 / 주소(시, 구, 동으로 쪼갤 수 있음)
단일값 속성 / 다중값 속성 생년월일 / 취미(여러 개)
저장 속성 / 유도 속성 생년월일 / 나이(생년월일로 계산 가능)
널 속성 값이 없을 수 있는 속성



Chapter 10. 질의어 처리


처리 순서 ⭐

1
2
고급 질의어(SQL) → 검사기·파서 → 내부 형태 질의문 → 질의 최적기 → 실행 계획
→ 코드 생성기 → 실행 코드 → 런타임 DB 처리기 → 결과
  • 질의 최적화 : 같은 결과를 내는 여러 방법 중 가장 효율적인 실행 계획을 선택
  • 최적화 규칙 예 : 셀렉트(σ)와 프로젝트(π)를 최대한 먼저 수행해서 처리할 데이터 양을 줄이고, 조인은 나중에



Chapter 11. 트랜잭션, 회복, 동시성 제어


트랜잭션 ⭐⭐⭐

  • 한꺼번에 모두 수행되어야 하는 일련의 연산. 병행 제어와 회복의 논리적 단위
  • 예 : 계좌 이체 = A 출금 + B 입금. 하나만 되면 안 됨

ACID 특성 ⭐⭐⭐

특성 의미 관련
원자성 (Atomicity) 전부 실행되거나 전혀 실행되지 않거나 (All or Nothing) COMMIT, ROLLBACK, 회복
일관성 (Consistency) 실행 후에도 DB가 일관된 상태 유지 무결성
격리성 (Isolation) 실행 중인 트랜잭션의 중간 결과에 다른 트랜잭션이 접근 불가 병행 제어
영속성 (Durability) 성공한 트랜잭션의 결과는 영구적으로 보장 회복

⚠️ 원자성 = 회복·COMMIT·ROLLBACK / 격리성 = 병행 제어. 특성과 관련 기능 매칭 단골

트랜잭션 상태 ⭐⭐

1
2
3
활동 → 부분 완료 → 완료 (COMMIT)
  ↓        ↓
  └→ 실패 → 철회 (ROLLBACK)
상태 의미
활동 (Active) 실행 중
부분 완료 (Partially Committed) 마지막 연산까지 실행했지만 아직 COMMIT 전
완료 (Committed) COMMIT 완료
실패 (Failed) 오류로 중단
철회 (Aborted) ROLLBACK되어 실행 전 상태로 복구

⚠️ 부분 완료 ≠ 완료. 부분 완료에서도 실패로 갈 수 있음

회복 ⭐⭐⭐

연산 의미
REDO (재실행) COMMIT된 트랜잭션의 변경을 로그 보고 다시 실행
UNDO (취소) COMMIT 안 된 트랜잭션의 변경을 원래대로 되돌림

회복 기법 ⭐⭐⭐

기법 방법 필요 연산
지연 갱신 COMMIT될 때까지 DB 반영을 미뤘다가 한꺼번에 반영 REDO만 (UNDO 불필요)
즉시 갱신 변경을 즉시 DB에 반영 REDO + UNDO
검사점 (Checkpoint) 일정 시점마다 기록해두고, 장애 시 검사점 이후만 회복 회복 시간 단축
그림자 페이징 변경 전 페이지(그림자)를 보관해두고 장애 시 그걸로 교체 로그 불필요, UNDO 불필요

⚠️ 지연 갱신 = REDO만. “지연 갱신은 UNDO가 필요하다”는 틀린 보기

동시성(병행) 제어 ⭐⭐⭐

  • 여러 트랜잭션을 동시에 실행해도 순서대로 하나씩 실행한 것과 같은 결과가 나오게 함 (직렬성 보장)

병행 제어를 안 하면 생기는 문제 ⭐⭐

문제 의미
갱신 분실 (Lost Update) 한 트랜잭션의 변경을 다른 트랜잭션이 덮어써서 사라짐
모순성 (Inconsistency) 동시에 읽고 쓰면서 일관성 없는 결과가 나옴
연쇄 복귀 (Cascading Rollback) 한 트랜잭션이 ROLLBACK되면 그 값을 읽은 다른 트랜잭션도 줄줄이 ROLLBACK
비완료 의존성 (Uncommitted Dependency) COMMIT 안 된 값을 다른 트랜잭션이 읽음

로킹 (Locking) ⭐⭐⭐

  • 데이터에 잠금을 걸어서 한 트랜잭션이 쓰는 동안 다른 트랜잭션이 못 건드리게 함
락 의미
공유 락 (S, Shared) 읽기용. 다른 트랜잭션도 읽기는 가능, 쓰기는 불가
배타 락 (X, Exclusive) 쓰기용. 다른 트랜잭션은 읽기·쓰기 모두 불가

로킹 단위 ⭐⭐⭐

로킹 단위가 크면 (DB 전체, 테이블) 로킹 단위가 작으면 (레코드, 필드)
락 개수 적음 → 관리 간단, 오버헤드 ↓ 락 개수 많음 → 관리 복잡, 오버헤드 ↑
병행성 ↓ (여럿이 동시에 못 씀) 병행성 ↑

⚠️ 단위 크기와 병행성은 반비례. 거꾸로 내는 문제 단골

2단계 로킹 (2PL) ⭐⭐

  • 확장 단계 : 락을 얻기만 함 / 축소 단계 : 락을 풀기만 함
  • 직렬성 보장, 하지만 교착상태는 발생 가능

기타 병행 제어 기법 ⭐

  • 타임스탬프 순서 : 트랜잭션 시작 시간 순으로 실행 순서 결정. 교착상태 없음
  • 낙관적 기법 (검증 기법) : 일단 실행하고 끝날 때 검증. 충돌이 적은 환경에 유리
  • 다중 버전 기법 : 데이터의 여러 버전을 유지



Chapter 12. 분산 데이터베이스


분산 데이터베이스 ⭐⭐

  • 물리적으로 여러 사이트에 분산된 데이터를 네트워크로 연결해서 논리적으로 하나처럼 쓰는 DB
  • 구성 : 분산 처리기, 분산 데이터베이스, 통신 네트워크

투명성 ⭐⭐⭐

  • 사용자가 분산되어 있다는 사실을 몰라도 쓸 수 있게 하는 것
투명성 사용자가 몰라도 되는 것
위치 투명성 데이터가 어느 사이트에 있는지
중복 투명성 데이터가 여러 곳에 복제되어 있는지
병행 투명성 다른 사용자가 동시에 쓰고 있는지
장애 투명성 일부 사이트에 장애가 났는지
분할 투명성 데이터가 쪼개져 저장되어 있는지

장단점 ⭐

  • 장점 : 지역 자치성, 신뢰성·가용성 ↑, 확장 쉬움, 효율성
  • 단점 : 개발 비용 ↑, 오류 가능성 ↑, 처리 오버헤드 ↑, 보안 어려움



Chapter 13. 데이터 웨어하우스와 데이터 마이닝


데이터 웨어하우스 ⭐⭐

  • 의사 결정 지원을 위해 여러 시스템의 데이터를 모아둔 대규모 저장소
  • 특징 4가지 : 주제 지향, 통합, 시계열 (시간에 따라 변함), 비휘발성 (한번 들어가면 수정·삭제 거의 없음)

OLTP vs OLAP ⭐⭐

OLTP OLAP
실시간 거래 처리 (주문, 결제) 분석·의사결정
일반 운영 DB 데이터 웨어하우스
삽입·갱신 많음 조회·분석 위주

OLAP 연산 ⭐

연산 의미
롤업 (Roll-up) 상세 → 요약 (일별 → 월별)
드릴다운 (Drill-down) 요약 → 상세 (월별 → 일별)
슬라이싱 / 다이싱 특정 차원을 잘라서 봄
피보팅 (Pivoting) 보는 축을 회전

데이터 마이닝 ⭐⭐

  • 대량의 데이터에서 숨겨진 규칙·패턴을 찾아내는 과정
기법 의미 예
연관 규칙 함께 일어나는 항목 관계 기저귀를 사면 맥주도 산다
분류 정해진 그룹으로 나누는 규칙 발견 대출 승인 / 거절
군집 (Clustering) 비슷한 것끼리 묶음 (그룹이 미리 정해져 있지 않음) 고객 세분화
순차 패턴 시간 순서상의 관계 A 구매 후 한 달 뒤 B 구매
예측 과거 데이터로 미래 예측 매출 예측

⚠️ 분류 = 그룹이 미리 정해짐 / 군집 = 그룹을 새로 찾음