DB 이론 — 키 · 무결성 · 정규화 · 관계대수 · 트랜잭션 E10

11회 전부에 나온 묶음이다. 용어의 정의를 정확한 낱말로 적고, 표를 보고 정규형과 연산 결과를 판정한다

왜 이 장을 하나
DB 이론은 정의를 묻는 문제와 판정을 묻는 문제로 나뉜다. 정의는 낱말을 정답표 그대로 적어야 하고, 판정(정규형 · 관계대수 · 무결성 위반)은 절차가 있다. 이 장은 용어 40개를 한 벌로 묶고 판정 절차 셋을 세운다.
다루는 것키 · 무결성 · 정규화 · 관계대수 · 트랜잭션 · 회복
문항기출 20 · 예상 4 · 훈련 5
끝나면표를 보고 정규형을 판정한다

01왜 이 장인가

왜 이걸 하나 — 11회 중 11회 전부에 나왔다. 빠진 적이 없는 묶음은 이것뿐이다.

11회분 220문항 중 이 장의 기출은 20문항이다. 회차마다 1~3문항, 2025년 2회에는 3문항이 나왔다. SQL 조회 13 · 정의 6 과 합치면 SQL·DB 묶음 39문항이 된다.

몇 문항무엇을 적나보기
용어 정의 · 매칭13튜플 · 카디널리티 · 외부 스키마 · 참조 무결성 · 후보키 같은 낱말2023-1회 12번 · 2024-3회 10번 · 2025-1회 8번
순서 나열2설계 4단계2023-2회 3번 · 2026-1회 4번
관계대수3기호 · π 결과 · ÷ 결과2023-3회 19번 · 2025-2회 20번 · 2025-3회 16번
정규형 판정2표를 보고 3NF 인지2024-1회 6번 · 2026-2회 20번

→ 20문항 중 13문항이 낱말 문제다. 같은 것을 다른 말로 묻는다 — 「행에 해당하는 것」은 튜플, 「튜플의 개수」는 카디널리티, 「속성의 개수」는 디그리(차수). 2023년 1회 12번과 2025년 3회 18번은 같은 문제다.

판정 문제는 3종뿐이고 전부 절차가 있다. 정규형은 검문 3개를 차례로 통과시키고, 관계대수는 연산 기호가 행을 고르는지 열을 고르는지를 보고, 무결성 위반은 기본키 · 외래키 · 값의 범위 셋을 따로 검사한다. 03절이 그 절차다.

문항 수는 이 노트의 문제 데이터에서 ch=E10 인 것을 센 값이다(2026-09-14). 2024-1회 6번 · 2025-2회 20번 · 2025-3회 16번의 표는 grandlife.co.kr 복원에서 옮겼다.

02한눈에

왜 이걸 하나 — 낱말 문제 13개는 이 절의 카드에서 나온다. 답안 표기 그대로 적었다.

릴레이션 용어튜플 = 행. 속성(attribute) = 열. 도메인 = 속성이 가질 수 있는 값의 범위. 디그리(차수) = 속성의 개수. 카디널리티 = 튜플의 개수. 릴레이션 스키마 = 구조, 릴레이션 인스턴스 = 실제 값들의 집합.
키 5종슈퍼키 = 유일성만. 후보키 = 유일성 + 최소성. 기본키 = 후보키 중 고른 하나(NULL 불가). 대체키 = 후보키 중 기본키가 아닌 것. 외래키 = 다른 릴레이션의 기본키를 참조.
무결성 3종개체 무결성 = 기본키는 NULL · 중복 불가. 참조 무결성 = 외래키는 부모의 기본키 값이거나 NULL. 도메인 무결성 = 속성 값은 정의된 범위 안. (키 무결성 · NULL 무결성도 있다.)
스키마 3계층외부 스키마 = 사용자 · 응용 프로그램 관점(뷰). 개념 스키마 = 조직 전체의 논리 구조(하나). 내부 스키마 = 물리적 저장 구조.
설계 순서요구사항 분석 → 개념적 설계(E-R) → 논리적 설계(테이블 · 정규화) → 물리적 설계(저장 구조 · 인덱스) → 구현.
관계대수 8연산σ 셀렉트(행) · π 프로젝트(열) · ⋈ 조인 · ÷ 디비전 — 순수 관계 연산. ∪ 합집합 · ∩ 교집합 · − 차집합 · × 카티션 곱 — 일반 집합 연산. 결과는 집합이라 중복이 없다.
조인 종류세타 조인 = 비교 연산자(= > <) 아무거나. 동등 조인 = = 만. 자연 조인 = 동등 조인에서 중복 속성 제거. 외부 조인 = 짝 없는 튜플도 NULL 로 남김. 세미 조인 · 내추럴 조인이 짝으로 나온다.
정규화 검문1NF 원자값 → 2NF 부분 함수 종속 제거 → 3NF 이행 함수 종속 제거 → BCNF 모든 결정자가 후보키 → 4NF 다치 종속 제거 → 5NF 조인 종속 제거. 「도 · 부 · 이 · 결 · 다 · 조」.
이상 3종 · 반정규화삽입 이상 · 삭제 이상 · 갱신 이상 — 중복이 만드는 병. 반정규화 = 성능을 위해 일부러 중복 · 통합 · 분리(비정규화 · 역정규화).
트랜잭션 ACID원자성(전부 아니면 전무) · 일관성(규칙 유지) · 고립성(서로 간섭 없음) · 지속성(확정된 것은 남는다). 상태는 활동 → 부분 완료 → 완료 / 실패 → 철회.
회복 · 병행REDO = 커밋된 것 다시 실행, UNDO = 커밋 못 한 것 되돌림. 즉시 갱신은 REDO · UNDO 둘 다, 지연 갱신은 REDO 만. 검사점 = 로그를 어디부터 볼지. 로킹 단위가 크면 로크 수 ↓ 병행성 ↓ 오버헤드 ↓. 2단계 로킹(2PL) = 확장 단계 뒤 축소 단계.
인덱스 · 뷰 · 시스템 카탈로그인덱스 = 검색을 빠르게 하는 별도 구조(색인). 뷰 = 저장되지 않는 가상 테이블. 시스템 카탈로그 = 스키마 정보를 담은 시스템 테이블(데이터 사전).

03밑바닥

왜 이걸 하나 — 낱말은 02절로 되지만 판정 3종은 절차가 있어야 표가 바뀌어도 푼다.

3-1. 정규형은 검문소를 차례로 통과시킨다

정규화는 한 표에 섞인 사실을 떼어 내는 일이고, 정규형 판정은 그 표가 어느 검문소까지 통과했나를 보는 일이다. 검문소는 순서가 있어 앞을 통과하지 못하면 뒤는 볼 필요가 없다.

검문무엇을 보나통과 못 하는 표
1NF모든 값이 원자값인가(한 칸에 값 하나)한 칸에 「영어, 수학」처럼 둘
2NF기본키가 복합키일 때, 키의 일부에만 매달린 속성이 없나(부분 함수 종속)(학번, 과목코드) 가 키인데 학생이름이 학번에만 종속
3NF키 아닌 속성끼리 A → B → C 로 이어진 것이 없나(이행 함수 종속)학번 → 학과 → 학과장
BCNF모든 결정자가 후보키인가강사번호 → 강좌명 인데 강사번호가 후보키가 아님

2026년 2회 20번(2024년 1회 6번과 같은 표)을 이 순서로 통과시켜 보자. 값은 전부 원자값이라 1NF 통과, 기본키 (고객아이디, 강좌명) 의 일부에만 매달린 속성이 없어 2NF 통과, 키 아닌 속성이 강사번호 하나뿐이라 이행 종속이 없어 3NF 통과. 그런데 표에서 강사번호 → 강좌명 이 성립하고(P001 은 늘 영어회화) 강사번호는 후보키가 아니므로 BCNF 에서 막힌다. 그래서 답은 제3정규형이다.

→ 판정의 핵심은 표에서 함수 종속을 읽어 내는 것이다. X 의 값이 같은 행끼리 Y 도 늘 같으면 X → Y 다. 강사번호 P001 인 두 행의 강좌명이 둘 다 영어회화라 강사번호 → 강좌명, 반대로 영어회화인 세 행의 강사번호가 P001 · P001 · P003 이라 강좌명 → 강사번호 는 아니다.

훈련 1번은 2NF 에서 막히는 표다. (학번, 과목코드) 가 키인데 학생이름은 학번에만, 과목명은 과목코드에만 매달린다. 이것이 부분 함수 종속이고, 답은 「1NF, 부분 함수 종속을 제거」다.

3-2. 관계대수는 행을 고르나 열을 고르나

여덟 연산 중 시험에 나오는 것은 넷이다. σ(셀렉트)는 조건에 맞는 을, π(프로젝트)는 지정한 을 고른다. ⋈(조인)은 두 릴레이션을 공통 속성으로 잇고, ÷(디비전)은 「S 의 값을 전부 가진 것」만 남긴다.

결과는 언제나 집합이다. 그래서 π 직급 (employee) 에서 대리가 두 번 있어도 한 번만 남고(2025년 2회 20번), SQL 로 옮기면 SELECT DISTINCT 가 된다. 이 「중복 제거」를 빠뜨리면 행이 하나 많아져 틀린다.

÷ 은 말로 풀면 「모든 …을 가진」이다. R(A, B) ÷ S(B) 는 S 의 B 값 전부와 짝지어진 A 만 남기고, 결과 열은 R 의 열에서 S 의 열을 뺀 A 다. 2025년 3회 16번에서 a1 은 b1 · b2 를 다 갖고 a2 는 b1 만 가져 a1 만 남는다. SQL 로는 NOT EXISTS 두 겹으로 쓴다.

기호 문제(2023년 3회 19번)는 넷을 그림으로 외운다. σ 는 시그마 s 로 select, π 는 파이 p 로 project, ⋈ 는 나비넥타이 모양의 join, ÷ 은 나눗셈 division. 집합 연산 ∪ ∩ − × 는 수학 기호 그대로다.

3-3. 무결성 위반은 셋을 따로 검사한다

무결성은 「표가 지켜야 할 약속」이고, 위반 판정은 약속 셋을 각각 대조한다. 기본키 열에 NULL 이나 중복이 있으면 개체 무결성 위반, 외래키 값이 부모 표에 없으면 참조 무결성 위반, 값이 정의된 범위 밖이면 도메인 무결성 위반이다. 한 표에 셋이 동시에 있을 수 있어(훈련 3번) 하나 찾았다고 멈추지 않는다.

정의 문제는 낱말의 짝을 잡는다. 「NULL · 중복 불가」가 보이면 개체, 「참조 · 일치 · 부모」가 보이면 참조, 「범위 · 형식 · 도메인」이 보이면 도메인이다. 2024년 3회 13번과 2025년 1회 2번이 이 낱말 그대로 나왔다.

3-4. 회복은 커밋 기록 하나로 갈린다

장애가 나면 로그를 보고 트랜잭션마다 둘 중 하나를 한다. 커밋 기록이 있으면 디스크에 못 썼을 수 있으니 로그대로 다시 실행(REDO), 커밋 기록이 없으면 반쯤 쓴 것을 되돌린다(UNDO). 즉시 갱신 기법은 커밋 전에도 디스크에 쓰므로 둘 다 필요하고, 지연 갱신은 커밋 뒤에만 쓰므로 REDO 만 필요하다.

병행 제어의 로킹 단위는 크기와 비용의 저울이다. 단위가 크면(테이블 단위) 로크 수가 적고 관리가 쉽지만 여러 트랜잭션이 동시에 못 들어와 병행성이 떨어진다. 단위가 작으면(행 단위) 반대다. 예상 2회 13번이 이 저울을 빈칸으로 물었다.

통과 기준은 넷이다. 첫째, 표를 주면 함수 종속을 읽어 정규형을 검문 순서대로 판정한다. 둘째, σ · π · ⋈ · ÷ 의 결과를 표로 그리고 중복을 지운다. 셋째, 무결성 3종을 표에서 각각 찾는다. 넷째, 02절 카드의 낱말 40개를 정답표 표기 그대로 적는다.
3NF 를 만족하면 BCNF 도 만족한다.BCNF 가 더 엄격하다. 3NF 는 키 아닌 속성 사이의 이행 종속만 막지만, BCNF 는 「모든 결정자가 후보키」를 요구한다. 강사번호 → 강좌명처럼 키 아닌 속성이 키의 일부를 결정하면 3NF 이면서 BCNF 가 아니다. 2026년 2회 20번이 정확히 이 경계를 물었다.
카디널리티는 열의 개수다.카디널리티는 튜플(행)의 개수, 디그리(차수)는 속성(열)의 개수다. 2024년 2회 4번은 「튜플 5개, 속성 4개」를 주고 카디널리티 5 · 디그리 4 를 물었다. 둘을 바꿔 적으면 5점이 통째로 나간다.

04기출

왜 이걸 하나 — 낱말 문제는 정답표 표기로 적는 연습이고, 판정 문제는 03절 절차를 대 보는 연습이다.

낱말 문제는 답을 한글 정식 명칭으로 적는다(영문을 요구하면 영문). 「튜플」을 「행」이라 적거나 「카디널리티」를 「튜플 수」라 적으면 틀렸다를 누른다.

2023-1회 · 12번DB

관계형 DB 용어: ① 릴레이션의 행(Row)에 해당하는 것 ② 실제 저장된 값(튜플)들의 집합 ③ 튜플의 개수

정답① 튜플 ② 릴레이션 인스턴스 ③ 카디널리티

— ① 튜플 ② 릴레이션 인스턴스 ③ 카디널리티. 표의 행 · 행들의 집합 · 행의 개수를 부르는 관계형 모델의 이름이다.

원리 — 관계형 데이터베이스는 표를 다른 이름으로 부른다. 표 = 릴레이션, 세로 한 줄(열) = 속성(attribute), 가로 한 줄(행) = 튜플이다. 표의 머리(열 이름들의 틀)는 릴레이션 스키마, 그 틀에 실제로 들어 있는 행들의 집합은 릴레이션 인스턴스다. 개수에도 이름이 있다 — 행의 개수는 카디널리티, 열의 개수는 차수(degree)다. "틀"과 "내용물"을 나누는 것이 이 용어 묶음의 뼈대다.

따라가기

  1. 행(Row)에 해당 → 튜플
  2. 실제 저장된 값(튜플)들의 집합 → 릴레이션 인스턴스
  3. 튜플의 개수 → 카디널리티

헷갈리는 자리 — 카디널리티(행 수)와 차수(열 수)를 바꿔 적는 것. "카드 한 장 = 한 행"으로 외우면 카디널리티가 행 수다. ② 에 스키마를 적는 것 — 스키마는 값이 아니라 틀이다. 2025년 3회 18번에 같은 문제가 그대로 다시 나왔다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2023-1회 · 18번DB

스키마 3계층: ① 사용자 관점의 뷰 ② 조직 전체의 논리적 구조 ③ 물리적 저장 구조

정답① 외부 스키마 ② 개념 스키마 ③ 내부 스키마

— ① 외부 스키마 ② 개념 스키마 ③ 내부 스키마. 데이터베이스를 보는 세 눈높이의 이름이다.

원리 — 같은 데이터베이스를 누가 보느냐에 따라 세 층으로 나눈다. 외부 스키마는 사용자 · 프로그램마다 보이는 부분(뷰) — 여러 개일 수 있다. 개념 스키마는 조직 전체의 논리적 구조 하나 — 어떤 표가 있고 어떻게 이어지는지. 내부 스키마는 실제 저장 방식 — 파일 · 인덱스 · 저장 순서. 위에서 아래로 "보이는 것 → 전체 설계 → 저장"이라고 읽는다. 층을 나눈 이유는 한 층을 바꿔도 다른 층이 안 흔들리게(데이터 독립성) 하려는 것이다.

따라가기

  1. 사용자 관점의 뷰 → 외부
  2. 조직 전체의 논리적 구조 → 개념
  3. 물리적 저장 구조 → 내부

헷갈리는 자리 — 개념과 내부를 바꾸는 것. "개념"은 사람이 그리는 설계도, "내부"는 디스크다. 외부 스키마는 서브 스키마라고도 부른다. 개념 스키마가 여럿이라고 적으면 틀린다 — 하나다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2023-2회 · 3번DB

데이터베이스 설계 4단계를 순서대로 나열하시오: (개념적 설계 / 물리적 설계 / 논리적 설계 / 요구사항 분석)

정답요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 (→ 구현)

— 요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 (→ 구현). 추상적인 것에서 구체적인 것으로 내려가는 순서다.

원리 — 데이터베이스는 집을 짓듯 설계한다. 먼저 무엇이 필요한지 듣고(요구사항 분석), 그것을 개체와 관계의 그림으로 그리고(개념적 설계 — E-R 다이어그램), 그 그림을 쓸 DBMS 종류에 맞는 표 구조로 바꾸고(논리적 설계 — 테이블 · 정규화), 마지막으로 저장 장치에 어떻게 놓을지(물리적 설계 — 인덱스 · 파일 구조) 정한 뒤 실제로 만든다(구현). 단계마다 "누가 봐도 같은 그림 → DBMS 에 맞춤 → 디스크에 맞춤"으로 구체성이 올라간다.

따라가기

  1. 요구사항 분석 — 무엇을 담을지
  2. 개념적 설계 — E-R 그림
  3. 논리적 설계 — 표 · 정규화
  4. 물리적 설계 — 인덱스 · 저장 구조 → 구현

헷갈리는 자리 — 논리와 물리를 바꾸는 것. 논리적 설계에 정규화 · 트랜잭션 인터페이스 설계가, 물리적 설계에 접근 경로 · 인덱스가 들어간다는 것으로 구분한다. 2026년 1회 4번은 구현까지 다섯 단계로 물었다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2023-3회 · 19번DB

관계대수 연산 기호 매칭: ① Join ② Project ③ Select ④ Division

정답① ⋈ ② π ③ σ ④ ÷

— ① ⋈ ② π ③ σ ④ ÷. 관계대수 네 연산의 기호다.

원리 — 관계대수는 표에 가하는 연산을 기호로 적는 언어다. σ(시그마, Select)는 조건에 맞는 행을 고른다 — SQL 의 WHERE. π(파이, Project)는 원하는 열만 뽑는다 — SQL 의 SELECT 열 목록(중복 제거). ⋈(나비넥타이, Join)는 두 표를 공통 속성으로 잇는다. ÷(Division)는 "S 의 모든 값과 짝지어진 R 의 값"을 고른다. 이 네 개 외에 합집합 ∪ · 교집합 ∩ · 차집합 − · 카티션 곱 × 이 있다.

따라가기

  1. Join →
  2. Project(열 고르기) → π
  3. Select(행 고르기) → σ
  4. Division → ÷

헷갈리는 자리 — Select 를 열 고르기로 착각해 π 와 바꾸는 것. 관계대수의 Select 는 SQL 의 SELECT 가 아니라 WHERE 다 — "행은 σ, 열은 π"로 외운다. 기호를 묻는데 이름을 적으면 0 점이다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2023-3회 · 20번DB

외래키의 값은 참조하는 릴레이션의 기본키 값과 일치하거나 NULL이어야 한다는 무결성 제약조건은?

정답참조 무결성

— 참조 무결성. 외래키는 상대 표의 기본키에 실제로 있는 값이거나 NULL 이어야 한다는 규칙이다.

원리 — 무결성은 "표에 말이 안 되는 값이 들어오지 못하게 하는 규칙"이다. 세 가지가 시험에 나온다. 개체 무결성 — 기본키는 NULL 도 중복도 안 된다. 참조 무결성 — 외래키 값은 참조하는 표의 기본키에 있어야 한다(없는 부서 코드를 직원에 적을 수 없다), 단 NULL 은 된다. 도메인 무결성 — 값은 그 속성의 허용 범위 안이어야 한다(학년 1~4). 문제 문장의 "외래키 · 참조하는 기본키" 낱말이 참조 무결성의 표지다.

따라가기

  1. "외래키의 값" → 참조 쪽 규칙
  2. "참조하는 릴레이션의 기본키와 일치하거나 NULL" → 참조 무결성

헷갈리는 자리 — 개체 무결성과 바꾸는 것. 기본키 이야기면 개체, 외래키 이야기면 참조다. "NULL 이어야 한다"가 아니라 "NULL 이어도 된다"는 것도 정확히 — 외래키는 비어 있을 수 있다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2024-1회 · 6번DB

다음 릴레이션이 만족하는 제1~제3정규형 중 가장 높은 정규형을 쓰시오. 기본키는 (고객아이디, 강좌명)이며, 강사번호는 기본키 전체에만 함수 종속된다고 가정한다.

강좌신청

고객아이디강좌명강사번호
apple영어회화P001
banana기초토익P002
carrot영어회화P001
carrot기초토익P004
orange영어회화P003
orange기초토익P004
정답제3정규형

— 제3정규형. 복합키 전체에만 종속된 속성 하나뿐이라 부분 종속도 이행 종속도 없다.

원리 — 정규형은 사다리다. 제1정규형: 모든 값이 더 쪼갤 수 없는 하나의 값. 제2정규형: 1NF 이면서, 기본키가 여러 속성(복합키)일 때 그 일부에만 매달린 속성(부분 함수 종속)이 없다. 제3정규형: 2NF 이면서, 키가 아닌 속성이 다른 키 아닌 속성을 거쳐 매달리는 일(이행 함수 종속, A → B → C)이 없다. 이 표는 키가 (고객아이디, 강좌명)이고 키 아닌 속성은 강사번호 하나뿐이며 "기본키 전체에만 종속"이라고 했으니 부분 종속이 없고, 키 아닌 속성이 하나라 이행 종속도 생길 수 없다.

따라가기

  1. 값이 전부 원자값 → 1NF
  2. 강사번호가 키 전체에만 종속 → 부분 종속 없음 → 2NF
  3. 키 아닌 속성이 하나뿐 → 이행 종속 없음 → 3NF

헷갈리는 자리 — 강좌명 → 강사번호(같은 강좌면 같은 강사)로 보고 부분 종속이라 판단해 1NF 라 적는 것. 표를 보면 영어회화의 강사가 P001 · P003 으로 다르니 강좌명만으로는 강사가 정해지지 않고, 문제도 "기본키 전체에만 종속"이라고 못 박았다. BCNF 냐고 물으면 결정자가 키 전체뿐이라 BCNF 도 만족하지만, 보기가 1~3 이면 3NF 다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2024-1회 · 8번DB

조인 유형 매칭: ① 비교 연산자(=, >, < 등)를 사용하는 일반 조인 ② =만 사용하는 조인 ③ 동등 조인에서 중복 속성을 제거한 조인

정답① 세타 조인 ② 동등 조인 ③ 자연 조인

— ① 세타 조인 ② 동등 조인 ③ 자연 조인. 조인 조건의 연산자와 중복 열 처리로 나뉘는 세 이름이다.

원리 — 조인은 두 표의 행을 조건으로 짝짓는 것이다. 조건에 어떤 비교 연산자(=, >, < …)든 쓸 수 있는 가장 넓은 꼴이 세타 조인(θ 는 "임의의 비교"라는 뜻)이다. 그중 = 만 쓴 것이 동등 조인이고, 동등 조인 결과에는 같은 값의 열이 두 번 나온다(양쪽 표의 부서코드). 그 중복 열을 하나로 줄인 것이 자연 조인이다. 세타 ⊃ 동등 ⊃ 자연 순으로 좁아진다.

따라가기

  1. 비교 연산자 아무거나 → 세타 조인
  2. = 만 → 동등 조인
  3. 동등 조인 + 중복 속성 제거 → 자연 조인

헷갈리는 자리 — 동등과 자연을 바꾸는 것. "중복 제거"가 붙으면 자연이다. 외부 조인(LEFT · RIGHT · FULL)은 짝이 없는 행도 남기는 별개의 묶음이라 여기 세 개와 섞지 않는다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2024-2회 · 2번DB

정규화된 데이터 모델을 성능 향상을 위해 의도적으로 통합·중복·분리하는 데이터 모델링 기법은?

정답반정규화 (비정규화, 역정규화)

— 반정규화(비정규화 · 역정규화). 정규화로 쪼갠 표를 성능 때문에 일부러 다시 합치거나 중복을 두는 일이다.

원리 — 정규화는 중복을 없애 이상 현상을 막지만, 표가 잘게 쪼개져 조회할 때마다 조인이 많아진다. 조회가 잦은 곳에서는 그 조인 비용이 더 아프다. 그래서 설계자가 알고서 표를 합치거나(테이블 통합), 자주 쓰는 값을 복사해 두거나(중복 컬럼), 합계 같은 계산 결과를 미리 저장(파생 컬럼)한다. 이것이 반정규화이고, 대가로 중복 관리(갱신 시 여러 곳을 고쳐야 함)를 떠안는다. "성능 향상을 위해 의도적으로"가 표지 문구다.

따라가기

  1. 정규화된 모델 → 조인 많음 → 느림
  2. 의도적으로 통합 · 중복 · 분리 → 반정규화

헷갈리는 자리 — 정규화라고 적는 것(반대말이다). 반정규화의 "반"은 反(거스른다)이라 절반이 아니다. 무결성이 깨질 위험을 감수하는 선택이라는 점도 함께 묻는다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2024-2회 · 4번DB

튜플 5개, 속성 4개인 릴레이션의 카디널리티와 디그리는?

정답카디널리티 5, 디그리 4

— 카디널리티 5, 디그리 4. 카디널리티는 행(튜플)의 수, 디그리는 열(속성)의 수다.

원리 — 관계형 모델은 표의 크기를 두 방향으로 부른다. 세로 방향으로 몇 줄이 쌓였나(튜플 수)가 카디널리티(cardinality), 가로 방향으로 칸이 몇 개인가(속성 수)가 차수 · 디그리(degree)다. 카디널리티는 행이 들어오고 나갈 때마다 바뀌지만 디그리는 표의 틀이라 잘 안 바뀐다.

따라가기

  1. 튜플 5개 → 카디널리티 5
  2. 속성 4개 → 디그리 4

헷갈리는 자리 — 둘을 바꿔 적는 것 하나뿐이다. "카드 한 장이 한 행"으로 카디널리티 = 행 수를 고정하면 디그리는 자연히 열 수다. 답에 두 수를 짝과 함께 적는다. 영문으로 물으면 cardinality · degree 이고, 2025년 1회 8번이 그 꼴이다. 행을 하나 지우면 카디널리티만 4 가 되고 디그리는 그대로 4 라는 것으로 둘의 성격 차이를 확인한다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2024-3회 · 10번DB

키 매칭: ① 다른 릴레이션의 기본키를 참조 ② 유일성+최소성을 만족 ③ 후보키 중 기본키를 제외한 나머지 ④ 유일성만 만족하는 속성 집합

정답① 외래키 ② 후보키 ③ 대체키 ④ 슈퍼키

— ① 외래키 ② 후보키 ③ 대체키 ④ 슈퍼키. 키의 정의를 "유일성 · 최소성"으로 가르는 문제다.

원리 — 키는 행을 구별해 주는 속성(들)이다. 유일성(같은 값의 행이 없음)만 있으면 슈퍼키 — 필요 없는 속성을 더 끼워도 여전히 슈퍼키다. 유일성에 최소성(하나라도 빼면 유일하지 않음)까지 갖추면 후보키. 후보키 중 하나를 골라 대표로 삼은 것이 기본키, 뽑히지 않은 나머지 후보키가 대체키. 다른 표의 기본키를 가리키는 속성이 외래키다. "유일 + 최소 = 후보, 후보 중 대표 = 기본, 나머지 = 대체, 유일만 = 슈퍼"로 줄인다.

따라가기

  1. 다른 릴레이션의 기본키를 참조 → 외래키
  2. 유일성 + 최소성 → 후보키
  3. 후보키 중 기본키를 뺀 나머지 → 대체키
  4. 유일성만 → 슈퍼키

헷갈리는 자리 — 슈퍼키와 후보키를 바꾸는 것. 최소성이 있으면 후보, 없으면 슈퍼다. 대체키를 "대신 쓰는 키"로 읽어 외래키와 섞는 것 — 대체키는 기본키 후보 중 탈락한 것이다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2024-3회 · 13번DB

"기본키는 NULL 값을 가질 수 없고 중복될 수 없다"는 무결성 제약조건은?

정답개체 무결성

— 개체 무결성. 기본키에 NULL 과 중복을 금하는 규칙이다.

원리 — 기본키는 행을 찾는 이름표다. 이름표가 비어 있으면(NULL) 그 행을 가리킬 수 없고, 두 행이 같은 이름표를 달면 어느 것인지 알 수 없다. 그래서 기본키는 NULL 도 중복도 안 된다는 규칙에 "개체(행) 하나하나를 온전히 구별한다"는 뜻으로 개체 무결성이라는 이름이 붙었다. 외래키 쪽 규칙은 참조 무결성, 값 범위 규칙은 도메인 무결성이다.

따라가기

  1. "기본키는" → 개체 쪽 규칙
  2. "NULL 불가 · 중복 불가" → 개체 무결성

헷갈리는 자리 — 참조 무결성이라 적는 것 — 그것은 외래키 이야기다. "기본키"가 나오면 개체, "외래키"가 나오면 참조라는 두 낱말만 잡으면 된다. 세 무결성을 한 문제에 다 묻는 꼴(2025년 1회 2번)도 있다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2025-1회 · 2번DB

무결성 3종 빈칸: ① 속성 값은 정의된 범위의 값이어야 한다 ② 기본키는 NULL·중복 불가 ③ 외래키는 참조하는 기본키와 일치하거나 NULL

정답① 도메인 무결성 ② 개체 무결성 ③ 참조 무결성

— ① 도메인 무결성 ② 개체 무결성 ③ 참조 무결성. 값의 범위 · 기본키 · 외래키에 걸리는 세 규칙이다.

원리 — 무결성 규칙은 "무엇에 거는가"로 이름이 갈린다. 속성 값이 정해진 범위(도메인) 안이어야 한다 → 도메인 무결성. 기본키는 NULL · 중복 불가 → 개체 무결성. 외래키는 상대 기본키에 있는 값이거나 NULL → 참조 무결성. 문제 문장에서 "속성 값 · 범위"는 도메인, "기본키"는 개체, "외래키"는 참조로 낱말이 곧 답이다.

따라가기

  1. 속성 값은 정의된 범위의 값 → 도메인
  2. 기본키는 NULL · 중복 불가 → 개체
  3. 외래키는 참조하는 기본키와 일치하거나 NULL → 참조

헷갈리는 자리 — 도메인 무결성을 "속성 무결성"이라 적는 것 — 정식 이름은 도메인이다. 순서를 바꿔 적으면 그 칸만 틀린다. 세 규칙을 한 줄씩 외워 두면 어느 하나만 물어도 즉답이다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2025-1회 · 8번DB

관계형 DB 용어 매칭: ① 속성의 개수 ② 튜플의 개수 ③ 다른 릴레이션의 기본키를 참조하는 키 ④ 속성이 가질 수 있는 값들의 범위 (영문으로)

정답① degree ② cardinality ③ foreign key ④ domain

— ① degree ② cardinality ③ foreign key ④ domain. 관계형 모델 용어를 영문으로 묻는다.

원리 — 우리말 용어와 영문을 짝으로 두어야 한다. 속성(열)의 개수는 차수 = degree, 튜플(행)의 개수는 카디널리티 = cardinality, 다른 표의 기본키를 참조하는 키는 외래키 = foreign key, 한 속성이 가질 수 있는 값의 범위는 도메인 = domain 이다. 2023년 1회 12번 · 2024년 2회 4번과 같은 내용인데 영문으로 적으라는 것만 다르다.

따라가기

  1. 속성의 개수 → degree
  2. 튜플의 개수 → cardinality
  3. 다른 릴레이션의 기본키를 참조 → foreign key
  4. 값의 범위 → domain

헷갈리는 자리 — degree 와 cardinality 를 바꾸는 것(열은 degree). 철자 — cardinality 에 l 이 하나, foreign 의 g 뒤에 n. 영문으로 쓰라는데 우리말을 적으면 0 점이다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2025-2회 · 1번DB

테이블의 레코드를 빠르게 검색·접근하기 위해 별도로 구성하는 데이터 구조(색인)는?

정답인덱스 (Index)

— 인덱스(Index). 책의 색인처럼 값 → 위치를 따로 적어 두어 찾기를 빠르게 하는 구조다.

원리 — 표에서 어떤 값을 찾으려면 처음부터 끝까지 다 봐야 한다(전체 탐색). 인덱스는 특정 열의 값들을 정렬해 두고 각 값이 어느 행에 있는지 주소를 붙여 둔 별도의 구조(보통 B-트리)다. 찾을 때는 인덱스에서 값을 빠르게 찾아 그 행으로 바로 간다. 대가는 저장 공간과, 행이 바뀔 때마다 인덱스도 고쳐야 하는 쓰기 비용이다. SQL 로는 CREATE INDEX 이름 ON 표(열) 로 만든다.

따라가기

  1. "빠르게 검색 · 접근" + "별도로 구성" + "색인" → 인덱스

헷갈리는 자리 — 뷰(가상 표)나 키와 섞는 것. 뷰는 보이는 창이고 인덱스는 찾기 장치다. 기본키에는 보통 인덱스가 자동으로 생기지만 인덱스 = 키는 아니다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2025-2회 · 2번DB

데이터베이스에서 개체(Entity)의 특성이나 상태를 나타내는 구성 요소는? (영문)

정답attribute (속성)

— attribute(속성). 개체가 가진 특성 하나하나, 표에서는 열이다.

원리 — 개체(entity)는 학생 · 강좌처럼 데이터로 다루는 대상이고, 그 개체를 설명하는 항목(이름 · 학년 · 학과)이 속성(attribute)이다. 표로 옮기면 개체는 표, 속성은 열, 개체 하나의 값들은 행(튜플)이 된다. E-R 다이어그램에서는 개체가 사각형, 속성이 타원, 관계가 마름모다.

따라가기

  1. "개체의 특성 · 상태를 나타내는 구성 요소" → attribute

헷갈리는 자리 — tuple(행)이나 relation(표)을 적는 것. "특성"이면 속성이다. 영문을 물었으니 attribute 철자(t 두 번, 끝은 -ute)를 정확히 적는다. 속성이 가질 수 있는 값의 범위는 domain 이고, 속성이 여러 값을 가지면(다중값 속성) 1NF 를 어기므로 정규화 문제와도 이어진다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2025-2회 · 20번DB

다음 employee 릴레이션에 관계대수의 프로젝트 연산 π를 적용해 직급 열을 추출한 결과 릴레이션을 테이블 형태로 쓰시오.

employee

사번이름직급
101김하늘부장
102이바다대리
103박노을과장
104최새벽차장
105정구름대리
π 직급 (employee)
정답직급
부장
대리
과장
차장

— 열 직급 하나에 부장 · 대리 · 과장 · 차장 네 행. π 는 열을 뽑고 중복 행을 지운다.

원리 — 관계대수의 π(프로젝트)는 지정한 열만 남기는 연산이다. 결과도 릴레이션이라 같은 행은 하나만 남는다 — 관계형 모델에서 릴레이션은 집합이라 중복 튜플이 없기 때문이다. 대리가 두 행(102 · 105)이지만 결과에는 한 번이다. SQL 의 SELECT 직급 FROM employee 는 중복을 남기지만 SELECT DISTINCT 직급 이 π 와 같다.

따라가기

  1. 직급 열만 → 부장, 대리, 과장, 차장, 대리
  2. 중복 제거 → 부장, 대리, 과장, 차장 (4행)

헷갈리는 자리 — 대리를 두 번 적어 5 행으로 만드는 것. 관계대수 결과는 집합이다. 열 이름 직급을 표 머리에 적는 것도 "테이블 형태" 요구의 일부다.

표를 놓고 연산 규칙대로 손으로 계산했고 sqlite 3.49 로 같은 결과를 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 표 · 값이 실제와 다를 수 있다.

2025-3회 · 16번DB

다음 관계대수 연산의 결과 릴레이션을 테이블 형태로 쓰시오. 관계 R과 S가 다음과 같을 때 R ÷ S의 결과를 구하시오.

R

AB
a1b1
a1b2
a2b1

S

B
b1
b2
R ÷ S
정답A
a1

— 열 A 하나에 a1 한 행. S 의 모든 값(b1 · b2)과 짝지어진 A 값은 a1 뿐이다.

원리 — 나눗셈 R ÷ S 는 "S 에 있는 모든 값을 전부 가진 것"을 R 에서 찾는 연산이다. R 의 A 값마다 짝지어진 B 값의 집합을 만들고, 그 집합이 S 의 B 값 전체 {b1, b2} 를 포함하면 남긴다. 결과 열은 R 의 열에서 S 의 열을 뺀 것(A)이다. "모든 과목을 수강한 학생" 같은 질문이 나눗셈이다.

따라가기

  1. a1 → {b1, b2} ⊇ {b1, b2} → 남김
  2. a2 → {b1} — b2 가 없음 → 탈락
  3. 결과 A: a1

헷갈리는 자리 — b1 이 있다고 a2 도 넣는 것. "하나라도"가 아니라 "전부"다. 결과 열에 B 를 남기는 것 — 나누는 쪽의 열은 사라진다. 표 꼴로 답하라고 했으니 열 이름 A 를 머리에 적고 그 아래 a1 한 행을 적는다.

표를 놓고 연산 규칙대로 손으로 계산했고 sqlite 3.49 로 같은 결과를 확인했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 표 · 값이 실제와 다를 수 있다.

2025-3회 · 18번DB

관계형 DB 용어: ① 행에 해당 ② 실제 값들의 집합 ③ 튜플의 개수

정답① 튜플 ② 릴레이션 인스턴스 ③ 카디널리티

— ① 튜플 ② 릴레이션 인스턴스 ③ 카디널리티. 2023년 1회 12번과 같은 용어 문제다.

원리 — 관계형 모델은 표 = 릴레이션, 열 = 속성, 행 = 튜플로 부른다. 표의 틀(열 이름 · 자료형)은 릴레이션 스키마, 그 틀에 지금 들어 있는 행들의 집합은 릴레이션 인스턴스다. 행의 수는 카디널리티, 열의 수는 차수다. 같은 문제가 두 회차에 나온 것은 이 용어 묶음이 얼마나 자주 나오는지 말해 준다.

따라가기

  1. 행에 해당 → 튜플
  2. 실제 값들의 집합 → 릴레이션 인스턴스
  3. 튜플의 개수 → 카디널리티

헷갈리는 자리 — ② 에 스키마 · 릴레이션만 적는 것. "실제 값"이면 인스턴스까지 적어야 한다. ③ 을 차수(degree)로 적는 것 — 차수는 열 수다. 같은 문제가 2년 뒤에 그대로 나온 만큼, 튜플 · 속성 · 릴레이션 스키마 · 인스턴스 · 카디널리티 · 차수 여섯 낱말은 정의를 한 줄씩 통째로 외운다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2026-1회 · 4번DB

데이터베이스 설계 순서를 나열하시오 (요구사항 분석 / 구현 / 논리적 설계 / 개념적 설계 / 물리적 설계)

정답요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현

— 요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현. 2023년 2회 3번에 구현이 더해진 다섯 단계다.

원리 — 무엇을 담을지 듣고(요구사항), 개체 · 관계 그림을 그리고(개념 — E-R), DBMS 에 맞는 표로 옮기고(논리 — 정규화), 저장 구조를 정하고(물리 — 인덱스 · 파일), 마지막에 실제 DDL 로 만든다(구현). 뒤로 갈수록 특정 DBMS · 하드웨어에 매인다. 앞 단계의 결과물이 뒤 단계의 입력이라 순서를 바꿀 수 없다.

따라가기

  1. 요구사항 분석
  2. 개념적 설계(E-R)
  3. 논리적 설계(표 · 정규화)
  4. 물리적 설계(인덱스 · 저장)
  5. 구현(CREATE TABLE …)

헷갈리는 자리 — 논리와 물리를 바꾸는 것. "정규화"는 논리, "인덱스 · 접근 경로"는 물리다. 보기의 낱말을 그대로 순서만 바꿔 적는다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

2026-2회 · 20번DB

관계형 데이터 모델에서는 데이터 중복으로 인한 이상 현상을 방지하고 데이터의 일관성과 정확성을 유지하기 위해 정규화를 수행한다. 속성명 아래에 밑줄이 그어진 고객아이디와 강좌명은 함께 기본키를 구성한다. 다음 [강좌신청] 릴레이션이 만족하는 가장 높은 정규형을 [보기]에서 고르시오.

[강좌신청]

고객아이디강좌명강사번호
apple영어회화P001
banana기초토익P002
carrot영어회화P001
carrot기초토익P004
orange영어회화P003
orange기초토익P004

[보기]

제1정규형 · 제2정규형 · 제3정규형 · 제4정규형 · 제5정규형 · BCNF

정답제3정규형

— 제3정규형. 2024년 1회 6번과 같은 표다 — 키 아닌 속성이 강사번호 하나뿐이고 복합키 전체에 종속돼 부분 · 이행 종속이 없다.

원리 — 정규형 판정은 함수 종속을 본다. 기본키 (고객아이디, 강좌명)의 일부만으로 강사번호가 정해지면 부분 함수 종속(2NF 위반), 키 아닌 속성끼리 A → B → C 로 이어지면 이행 함수 종속(3NF 위반)이다. 표에서 영어회화의 강사가 P001 과 P003 으로 갈리니 강좌명 → 강사번호 가 성립하지 않고, 고객아이디 → 강사번호 도 carrot 이 P001 · P004 라 성립하지 않는다. 즉 강사번호는 두 속성을 합친 키에만 매달려 2NF 이고, 키 아닌 속성이 하나라 이행 종속은 있을 수 없어 3NF 다.

따라가기

  1. 원자값 → 1NF
  2. 강좌명 → 강사번호? 영어회화 P001 · P003 → 아니다. 고객아이디 → 강사번호? carrot P001 · P004 → 아니다 → 부분 종속 없음 → 2NF
  3. 키 아닌 속성 하나 → 이행 종속 없음 → 3NF

헷갈리는 자리 — 보기에 BCNF 가 있어 고민하는 것. 결정자가 키 전체뿐이라 BCNF 조건도 만족하지만, 이 표에는 "후보키가 여럿이고 그중 하나가 결정자" 같은 BCNF 특유의 상황이 없으므로 출제자가 고른 답은 3NF 다(복원 가답안). 표의 값을 보고 함수 종속을 검사하는 습관이 답을 정한다.

교재 정의(관계형 모델 · 정규화 · 트랜잭션 표준 용어)와 대조했다. 복원 출처 grandlife.co.kr(2026-09-14) — 공식 원문이 아니라 문장이 실제와 다를 수 있다.

예상 1회 · 12번DB빈출 원리: 정규화 판별

릴레이션 R(학번, 과목코드, 성적, 학생이름)에서 기본키는 (학번, 과목코드)이고 함수 종속이 다음과 같다: (학번, 과목코드) → 성적, 학번 → 학생이름. 이 릴레이션에 존재하는 함수 종속의 문제점과, 이를 제거하면 도달하는 정규형은?

정답부분 함수 종속 (학생이름이 복합키의 일부인 학번에만 종속) / 제거하면 제2정규형(2NF)

— 부분 함수 종속(학번 → 학생이름이 복합키의 일부에만 매달림), 제거하면 제2정규형.

원리 — 기본키가 (학번, 과목코드) 두 속성인데 학생이름은 학번만으로 정해진다. 키의 일부에만 매달린 이런 종속을 부분 함수 종속이라 하고, 이것이 있으면 같은 학생이 여러 과목을 들을 때 이름이 여러 행에 중복돼 갱신 이상이 난다. 부분 종속을 떼어 학생(학번, 학생이름) 표를 따로 만들면 제2정규형이 된다. 1NF → 2NF 의 조건이 바로 "부분 함수 종속 제거"다.

따라가기

  1. (학번, 과목코드) → 성적: 키 전체 종속, 정상
  2. 학번 → 학생이름: 키의 일부 → 부분 함수 종속
  3. 분리하면 → 2NF

헷갈리는 자리 — 이행 함수 종속이라 적는 것. 이행은 키 아닌 속성끼리(A → B → C)이고, 여기는 키의 일부가 결정자다. 정규형 사다리: 부분 종속 제거 = 2NF, 이행 종속 제거 = 3NF, 결정자가 후보키 = BCNF.

이전 자료의 예상 문제다. 교재 정의와 대조했다.

예상 1회 · 13번DB빈출 원리: 트랜잭션 ACID

트랜잭션의 특성: ① 연산이 전부 반영되거나 전혀 반영되지 않아야 한다 ② 성공적으로 완료된 트랜잭션의 결과는 시스템 장애가 발생해도 영구적으로 반영되어야 한다. 각각의 명칭은?

정답① 원자성 (Atomicity) ② 영속성/지속성 (Durability)

— ① 원자성(Atomicity) ② 영속성 · 지속성(Durability). 트랜잭션 네 특성(ACID) 중 둘이다.

원리 — 트랜잭션은 "전부 되거나 전부 안 되거나"여야 하는 일 묶음이다. 원자성 — 더 쪼갤 수 없는 하나처럼 전부 반영되거나 하나도 반영되지 않는다(송금에서 출금만 되고 입금이 안 되면 안 된다). 일관성 — 끝난 뒤 데이터베이스가 모순 없는 상태. 고립성 — 동시에 돌아도 서로 끼어들지 않은 것처럼. 영속성 — 완료(COMMIT)된 결과는 장애가 나도 남는다. 앞 글자 A · C · I · D 로 외운다.

따라가기

  1. 전부 반영 또는 전혀 반영 안 됨 → 원자성
  2. 완료 결과는 장애가 나도 영구 반영 → 영속성

헷갈리는 자리 — 영속성을 "일관성"으로 적는 것. "장애 · 영구"는 영속성, "모순 없음"은 일관성이다. 원자성의 표지는 "전부 아니면 전무(all or nothing)"다.

이전 자료의 예상 문제다. 교재 정의와 대조했다.

예상 2회 · 12번DB빈출 원리: 이상 현상

정규화하지 않은 테이블에서 데이터 중복 때문에 발생하는 이상(Anomaly) 현상 3가지를 쓰시오.

정답삽입 이상, 삭제 이상, 갱신 이상

— 삽입 이상 · 삭제 이상 · 갱신 이상. 중복이 있는 표에서 넣고 · 지우고 · 고칠 때 각각 생기는 세 가지 사고다.

원리 — 학생과 강좌를 한 표에 넣어 두면 세 가지가 꼬인다. 삽입 이상 — 아직 강좌를 안 듣는 학생은 강좌 칸을 채울 수 없어 넣지 못하거나 NULL 을 넣어야 한다. 삭제 이상 — 어떤 학생의 유일한 강좌 행을 지우면 학생 정보까지 함께 사라진다. 갱신 이상 — 같은 학생 이름이 여러 행에 있어 하나만 고치면 서로 달라진다. 정규화는 이 셋을 없애려고 표를 쪼개는 일이다.

따라가기

  1. 넣을 때 → 삽입 이상
  2. 지울 때 → 삭제 이상
  3. 고칠 때 → 갱신 이상(수정 이상)

헷갈리는 자리 — "조회 이상" 같은 없는 이름을 만드는 것. 셋은 삽입 · 삭제 · 갱신이고, 갱신을 수정으로 써도 같은 말이다. 원인이 "중복"이라는 것까지 함께 적어야 다음 문제(정규화 이유)로 이어진다.

이전 자료의 예상 문제다. 교재 정의와 대조했다.

예상 2회 · 13번DB빈출 원리: 병행 제어 로킹

로킹(Locking) 단위가 커질수록: 로크의 수는 ( ① ), 병행성(동시성) 수준은 ( ② ), 관리 오버헤드는 ( ③ ). 괄호에 증가/감소(높아짐/낮아짐)를 쓰시오.

정답① 감소 ② 낮아짐 ③ 감소

— ① 감소 ② 낮아짐 ③ 감소. 로킹 단위가 커지면 잠글 덩어리 수가 줄고, 동시에 일할 여지도 줄고, 관리할 것도 준다.

원리 — 로킹 단위는 "한 번에 잠그는 덩어리 크기"다 — 필드 · 레코드 · 테이블 · 데이터베이스 순으로 커진다. 덩어리가 크면 몇 개만 잠가도 전체를 덮으니 로크 수가 줄고 관리도 쉽지만, 한 사람이 잠근 동안 다른 사람은 그 큰 덩어리 전체를 못 써 동시에 일할 수 있는 정도(병행성)가 떨어진다. 반대로 단위가 작으면 병행성은 오르지만 로크가 많아져 오버헤드가 늘어난다. 세 값이 "크면 줄고 작으면 는다"는 한 방향으로 움직인다.

따라가기

  1. 단위 ↑ → 로크 수 감소
  2. 단위 ↑ → 병행성 낮아짐
  3. 단위 ↑ → 오버헤드 감소

헷갈리는 자리 — 병행성을 "높아짐"으로 적는 것. 크게 잠글수록 남이 기다린다. 오버헤드와 병행성이 반대 방향이라고 생각하기 쉽지만 여기서는 둘 다 "줄어든다"로 같은 편이다 — 오버헤드는 로크 수를 따라간다.

이전 자료의 예상 문제다. 교재 정의와 대조했다.

05틀리는 자리

왜 이걸 하나 — 이 장은 아는데 낱말이 어긋나서 깎이는 자리가 가장 많다.

자리새는 꼴적는 법기출
비슷한 낱말튜플 대신 행, 속성 대신 열, 카디널리티 대신 튜플 수문제의 낱말 체계를 따른다. 「릴레이션」이라 부르면 튜플 · 속성 · 카디널리티로2023-1회 12번 · 2024-2회 4번
영문 요구영문을 요구하는데 한글로「영문으로」가 있으면 degree · cardinality · attribute 처럼 소문자 원어2025-1회 8번 · 2025-2회 2번
순서설계 단계에서 개념과 논리를 바꾼다요구 → 개념 → 논리 → 물리 → 구현. 보기에 구현이 있으면 끝에 붙인다2023-2회 3번 · 2026-1회 4번
정규형 이름「3NF」만 적거나 「제3정규화」라 적는다제3정규형(3NF). 정규화는 과정, 정규형은 상태2024-1회 6번 · 2026-2회 20번
관계대수 결과중복을 남기거나 열 이름을 뺀다결과는 집합 — 중복 제거, 열 이름 줄부터2025-2회 20번 · 2025-3회 16번
키 이름대체키와 후보키를 바꾼다후보키 = 유일성 + 최소성, 대체키 = 후보키 − 기본키, 슈퍼키 = 유일성만2024-3회 10번
무결성 이름개체와 참조를 바꾼다기본키 이야기면 개체, 외래키 이야기면 참조, 값의 범위면 도메인2024-3회 13번 · 2025-1회 2번

매칭 문제는 소문항마다 부분 점수가 있다. 넷 중 셋만 알아도 셋을 적고, 모르는 하나는 남은 보기 중 가장 그럴듯한 것을 적는다. 빈칸은 0점이고 틀린 답도 0점이라 적는 쪽이 손해가 없다.

06훈련

왜 이걸 하나 — 판정 3종을 기출에 없던 표로 한 번 더 돌린다.

5문항은 2NF 에서 막히는 표, 자연 조인과 σ 의 행 수, 무결성 3종이 한꺼번에 깨진 표, ACID 의 나머지 둘, REDO · UNDO 다. 조인과 σ 는 sqlite 로 행 수를 확인했다.

훈련 DB · 1번DB

릴레이션 수강(학번, 과목코드, 성적, 학생이름, 과목명)의 기본키는 (학번, 과목코드)이고 함수 종속은 다음과 같다. 이 릴레이션이 만족하는 가장 높은 정규형과, 다음 정규형으로 가기 위해 제거해야 할 함수 종속의 종류를 쓰시오.

(학번, 과목코드) → 성적
학번 → 학생이름
과목코드 → 과목명

정답제1정규형, 부분 함수 종속

— 제1정규형, 부분 함수 종속. 학번 → 학생이름 과 과목코드 → 과목명 이 복합키의 일부에 매달려 있어 2NF 가 아니다.

원리 — 원자값이면 1NF 다. 2NF 가 되려면 키의 일부에만 종속된 속성이 없어야 하는데, 이 표는 학생이름이 학번에만, 과목명이 과목코드에만 매달린다 — 둘 다 부분 함수 종속이다. 그래서 만족하는 가장 높은 정규형은 1NF 이고, 다음 단계로 가려면 부분 함수 종속을 떼어 학생(학번, 학생이름) · 과목(과목코드, 과목명) 표로 분리한다.

따라가기

  1. (학번, 과목코드) → 성적: 키 전체 종속
  2. 학번 → 학생이름, 과목코드 → 과목명: 키 일부 종속 → 부분 함수 종속 → 2NF 위반
  3. 가장 높은 정규형 1NF, 제거 대상 부분 함수 종속

이 노트에서 만든 변형 문제다. 정의와 대조했고 표 계산은 손으로 검산했다.

훈련 DB · 2번DB

다음 두 릴레이션에 대해 R ⋈ S(자연 조인)의 결과 튜플 수와, σ 학년=3 (R)의 결과 튜플 수를 각각 쓰시오.

R

학번이름학년학과코드
13C
22E
33C
41M

S

학과코드학과명
C컴퓨터
E전자
정답3, 2

— 3, 2. 자연 조인은 학과코드가 양쪽에 있는 행만 이어 붙이고(C · C · E), 선택 σ 는 3학년 행을 고른다.

원리 — 자연 조인 R ⋈ S 는 공통 속성(학과코드)의 값이 같은 행끼리 짝짓고 중복 열은 하나로 합친다. S 에 M 이 없으므로 최의 행은 짝이 없어 빠진다. σ 학년=3 (R) 은 R 에서 학년이 3 인 행만 남기는 연산이라 김 · 박 두 행이다. 조인은 "짝이 있는 행 수", 선택은 "조건에 맞는 행 수"를 센다.

따라가기

  1. R ⋈ S: 김(C) · 이(E) · 박(C) 짝 있음, 최(M) 없음 → 3
  2. σ 학년=3: 김 · 박 → 2

이 노트에서 만든 변형 문제다. 정의와 대조했고 표 계산은 손으로 검산했다.

훈련 DB · 3번DB

다음 학생 테이블에서 위반된 무결성 제약조건을 모두 쓰시오. 학번은 기본키, 학과코드는 학과 테이블의 학과코드(C, E, M 만 있음)를 참조하는 외래키이며, 학년은 1~4 사이여야 한다.

학생

학번이름학년학과코드
13C
25E
22C
41Z
정답개체 무결성, 참조 무결성, 도메인 무결성

— 개체 무결성(학번 2 중복), 참조 무결성(학과코드 Z 는 학과 표에 없음), 도메인 무결성(학년 5 는 1~4 밖). 세 규칙이 한 표에서 하나씩 깨졌다.

원리 — 기본키 학번이 두 행에서 2 로 같으니 개체 무결성 위반. 외래키 학과코드 Z 가 참조 표(C · E · M)에 없으니 참조 무결성 위반. 학년은 1~4 여야 하는데 5 가 있으니 도메인 무결성 위반. 각 규칙이 어느 열을 지키는지(기본키 · 외래키 · 값 범위)만 알면 표를 훑어 찾아낼 수 있다.

따라가기

  1. 학번 2, 2 → 개체 무결성
  2. 학과코드 Z → 참조 무결성
  3. 학년 5 → 도메인 무결성

이 노트에서 만든 변형 문제다. 정의와 대조했고 표 계산은 손으로 검산했다.

훈련 DB · 4번DB

트랜잭션의 네 특성 중 다음 설명에 해당하는 것을 각각 쓰시오.

① 여러 트랜잭션이 동시에 실행돼도 각각 혼자 실행되는 것과 같은 결과를 내야 한다.
② 트랜잭션이 끝나면 데이터베이스는 모순 없는 상태를 유지해야 한다.

정답① 고립성(Isolation) ② 일관성(Consistency)

— ① 고립성(Isolation) ② 일관성(Consistency). ACID 의 I 와 C 다.

원리 — 고립성은 "동시에 여러 트랜잭션이 돌아도 각각 혼자 도는 것과 같은 결과"라는 규칙으로, 남이 아직 안 끝낸 중간 상태를 못 보게 한다. 일관성은 "트랜잭션 전후로 데이터베이스가 정해진 규칙(제약 조건)을 어기지 않는 상태"라는 규칙이다. 원자성(전부 아니면 전무) · 영속성(완료 결과 보존)과 함께 네 개다.

따라가기

  1. "동시 · 혼자 실행되는 것과 같은 결과" → 고립성
  2. "모순 없는 상태 유지" → 일관성

고립성은 로킹으로, 원자성과 영속성은 로그(UNDO · REDO)로 지킨다는 짝까지 두면 회복 문제와 이어진다.

이 노트에서 만든 변형 문제다. 정의와 대조했고 표 계산은 손으로 검산했다.

훈련 DB · 5번DB

장애 발생 후 회복할 때, 로그를 보고 다음 두 트랜잭션에 각각 적용할 회복 연산을 쓰시오.

① 장애 전에 COMMIT 기록이 로그에 남아 있는 트랜잭션
② 시작 기록은 있으나 COMMIT 기록이 없는 트랜잭션

정답① REDO ② UNDO

— ① REDO ② UNDO. 끝난(COMMIT 된) 것은 다시 적용하고, 못 끝낸 것은 되돌린다.

원리 — 장애가 나면 로그를 보고 회복한다. COMMIT 기록이 있는 트랜잭션은 "끝났다고 약속했는데 디스크에 다 못 썼을 수 있으니" 로그의 새 값으로 다시 적용한다 — REDO. 시작만 있고 COMMIT 이 없는 트랜잭션은 "끝나지 않았으니 있어서는 안 되는 변경"이라 로그의 옛 값으로 되돌린다 — UNDO. 원자성과 영속성을 장애 뒤에 지키는 장치다.

따라가기

  1. COMMIT 기록 있음 → REDO(재수행)
  2. COMMIT 기록 없음 → UNDO(취소)

이 노트에서 만든 변형 문제다. 정의와 대조했고 표 계산은 손으로 검산했다.

07백지 재현

왜 이걸 하나 — 아래를 안 보고 적을 수 있어야 낱말 문제 13개가 끝난다.