정보처리기사 개념정리 목차

3과목 데이터베이스구축

기출 160문항(과목3)의 빈출 순서는 이렇다 — SQL(38) · 무결성(32) · 관계(30) · 로킹(30) · 릴레이션(20) · 이상·정규화(21) · 투명성(15).

다른 과목과 결이 다른 점 하나 — 손으로 계산하거나 문법을 직접 읽는 문항이 많다. SQL 38회, WHERE 24회, SELECT 23회가 실제로 지문에 등장했다. 그래서 이 편은 개념 정의보다 문법과 계산 절차에 무게를 뒀다.


0. 이 과목의 지형

논리 데이터베이스 설계   관계 모델 · 키 · 무결성 · 정규화 · 관계대수
물리 데이터베이스 설계   인덱스 · 파티션 · 뷰 · 반정규화
SQL 응용                 DDL · DML · DCL · TCL · 조인 · 서브쿼리 · 트리거
데이터 전환·품질          트랜잭션 · 로킹 · 회복 · 분산 DB · 데이터 활용

1. 데이터베이스 기본

정의와 특성

정의   통합(Integrated) · 저장(Stored) · 운영(Operational) · 공용(Shared) 데이터
특성   실시간 접근성 · 계속적 변화 · 동시 공용 · 내용에 의한 참조

함정 — 데이터베이스는 주소가 아니라 내용으로 참조한다(내용에 의한 참조). 그리고 "정적으로 고정된 데이터의 집합"은 틀린 설명이다 — 계속 변화한다.

DBMS 의 필수 기능 셋

기능담당 언어
정의(Definition)DDL — 구조를 만든다
조작(Manipulation)DML — 데이터를 넣고 꺼낸다
제어(Control)DCL — 권한·무결성·동시성
언어명령
DDLCREATE · ALTER · DROP · TRUNCATE
DMLSELECT · INSERT · UPDATE · DELETE
DCLGRANT · REVOKE
TCLCOMMIT · ROLLBACK · SAVEPOINT

함정COMMIT·ROLLBACK 을 DCL 로 묶은 교재도 있으나, 기출은 대체로 DCL(권한) / TCL(트랜잭션) 을 구분해 낸다. SELECT 는 DML 이다.

스키마 3계층 — 누구의 관점인가로 외운다

스키마관점내용
외부(External)사용자·응용 프로그램개인이 보는 뷰. 여러 개 존재
개념(Conceptual)조직 전체전체 논리 구조. 하나만 존재
내부(Internal)저장 장치물리적 저장 구조·인덱스·레코드 배치

데이터 독립성

논리적 독립성   개념 스키마가 바뀌어도 외부 스키마(응용)는 영향 없음
물리적 독립성   내부 스키마가 바뀌어도 개념 스키마는 영향 없음

DBA(데이터베이스 관리자) — 스키마 정의, 저장 구조·접근 방법 결정, 보안·권한 부여, 백업·회복 정책 수립, 성능 감시(3회 출제).


2. 관계 데이터 모델

관계형 데이터베이스(Relational Database) 는 데이터를 2차원 표(릴레이션) 로 표현하는 모델이다. 계층형·네트워크형 모델과 달리 포인터가 아니라 값으로 관계를 표현하기 때문에 구조가 단순하고 SQL 로 다룰 수 있다.

용어 — 차수와 카디널리티가 계산으로 나온다

용어
릴레이션(Relation)표(테이블)
튜플(Tuple)행(row), 레코드
속성(Attribute)열(column), 필드
도메인(Domain)속성이 가질 수 있는 값의 집합
차수(Degree)속성의 개수
카디널리티(Cardinality)튜플의 개수
릴레이션 스키마릴레이션의 구조(속성 이름·타입) — 내연
릴레이션 인스턴스특정 시점의 튜플 집합 — 외연

함정 — 차수는 열, 카디널리티는 행이다. 이 둘을 바꿔 낸 문항이 반복 출제된다.

릴레이션의 특징

튜플은 중복되지 않는다        · 튜플의 순서는 무의미
속성의 순서도 무의미          · 속성 값은 원자값(더 쪼갤 수 없다)
속성 이름은 릴레이션 안에서 유일

키 5종 — 유일성과 최소성으로 갈린다

유일성최소성설명
슈퍼키(Super Key)유일하게 식별하지만 불필요한 속성이 붙어도 됨
후보키(Candidate Key)유일성 + 최소성을 모두 만족
기본키(Primary Key)후보키 중 선정한 것. NULL 불가·중복 불가
대체키(Alternate Key)후보키 중 기본키가 되지 못한 것
외래키(Foreign Key)다른 릴레이션의 기본키를 참조. NULL 허용 가능

함정 둘 — ① 슈퍼키는 최소성을 만족하지 않는다. ② 외래키는 NULL 이 될 수 있다 (참조 대상이 없는 상태). 기본키는 NULL 이 될 수 없다.


3. 무결성 (무결성 32회 — 이 과목 2위)

무결성규칙
개체 무결성(Entity)기본키는 NULL 이 될 수 없고 중복될 수 없다
참조 무결성(Referential)외래키는 참조하는 릴레이션의 기본키에 존재하거나 NULL
도메인 무결성(Domain)속성 값은 정의된 도메인에 속해야 한다
사용자 정의 무결성업무 규칙에 따른 제약 (CHECK)
키 무결성릴레이션에 최소 하나의 키가 존재

참조 동작 — 부모 행을 지우거나 바꿀 때

CASCADE     참조하는 자식 행까지 함께 삭제·변경
RESTRICT    자식이 있으면 삭제·변경을 취소  (= NO ACTION)
SET NULL    자식의 외래키를 NULL 로
SET DEFAULT 자식의 외래키를 기본값으로

함정DROP TABLE 학생 CASCADE;이 테이블을 참조하는 것까지 함께 삭제, RESTRICT참조가 있으면 삭제하지 않는다. 이 두 옵션의 동작을 바꿔 낸 문항이 단골이다.


4. 관계대수와 관계해석 (관계대수 6회 · 관계해석 2회)

관계대수는 절차적(어떻게 구하는지), 관계해석은 비절차적(무엇을 원하는지)이다. 관계해석은 수학의 술어 해석(predicate calculus) 에 기반하며 튜플·도메인 관계해석으로 나뉜다.

관계해석의 논리 기호 — 기호 자체를 묻는다

기호이름
전체(보편) 한정자"모든 것에 대하여" (for all)
존재 한정자"존재한다" (there exists)
¬AND · OR · NOT논리 연산
원소 · 부분집합집합 기호 (한정자가 아니다)

함정 — "모든 것에 대하여"는 이고 ∃ 는 "존재한다"다. 그리고 · 는 집합 기호라서 한정자 보기로 섞여 나온다.

순수 관계 연산자 4개

연산자기호
SELECTσ (시그마)조건을 만족하는 튜플(행) 을 고른다
PROJECTπ (파이)지정한 속성(열) 만 뽑는다
JOIN⋈ (보타이)공통 속성으로 두 릴레이션을 연결
DIVISION÷R 의 튜플 중 S 의 모든 값과 짝을 이루는

함정 — σ 는 , π 는 이다. SQL 의 SELECT 절이 열을 고르는 것과 관계대수의 SELECT 가 행을 고르는 것이 반대로 헷갈린다. 기출이 노리는 지점이다. DIVISION(5회 출제)은 "모든 ~을 수강한 학생" 유형의 질의에 대응한다.

일반 집합 연산자 4개 — 차수·카디널리티 계산

연산기호결과 차수결과 카디널리티
합집합그대로최대 n + m (중복 제거)
교집합그대로최대 min(n, m)
차집합그대로최대 n
카티션 프로덕트×두 차수의 합두 카디널리티의 곱

계산 예 — 차수 3·카디널리티 4 인 R 과 차수 2·카디널리티 5 인 S 의 카티션 프로덕트는 차수 5, 카디널리티 20. 합집합·교집합·차집합은 합집합 호환(차수와 도메인이 같아야) 조건이 필요하다.


5. 함수 종속과 정규화 (이상 21회 · 정규화)

이상(Anomaly) 세 가지

이상언제
삽입 이상원하지 않는 값까지 함께 넣어야 삽입이 되는 경우
삭제 이상하나를 지우면 관련 없는 정보까지 사라지는 경우(연쇄 삭제)
갱신 이상중복된 값 중 일부만 고쳐져 불일치가 생기는 경우

함수 종속

X → Y     X 가 결정되면 Y 가 유일하게 결정된다. X 는 결정자(Determinant)

완전 함수 종속   Y 가 X 전체에 종속 (X 의 일부만으로는 결정 불가)
부분 함수 종속   Y 가 X 의 일부에만 종속
이행 함수 종속   X → Y, Y → Z 이면 X → Z

정규화 단계 — "무엇을 제거하는가"로 외운다

단계조건제거 대상
1NF모든 속성이 원자값반복 그룹·다중값
2NF1NF + 부분 함수 종속 제거부분 종속
3NF2NF + 이행 함수 종속 제거이행 종속
BCNF3NF + 모든 결정자가 후보키후보키가 아닌 결정자
4NFBCNF + 다치 종속 제거다치(다중값) 종속
5NF4NF + 조인 종속 제거조인 종속

암기 도우미도부이결다조 (도메인 원자값 → 부분 → 이행 → 결정자 → 다치 → 조인).

함정 — BCNF 는 3NF 보다 강한 조건이며 "모든 결정자가 후보키" 가 정의다. 그리고 정규화의 목적은 중복 제거와 이상 현상 방지이며, 정규화를 진행하면 조인이 늘어 조회 성능은 떨어질 수 있다는 점도 그대로 나온다.

반정규화(De-normalization)

성능을 위해 의도적으로 중복을 허용하는 설계. 테이블 병합·분할, 중복 칼럼 추가, 파생 칼럼 추가, 이력 테이블 반정규화 등. 정규화를 하지 않은 것과는 다르다 — 대가(정합성 관리 책임)를 알고 선택한 것이다.


6. SQL — 이 과목 최다 출제(38회)

DDL

CREATE TABLE 학생 (
  학번    CHAR(8)     PRIMARY KEY,
  이름    VARCHAR(20) NOT NULL,
  학과    VARCHAR(20),
  학년    INT         CHECK (학년 BETWEEN 1 AND 4),
  등록일  DATE        DEFAULT SYSDATE,
  FOREIGN KEY (학과) REFERENCES 학과(학과명) ON DELETE SET NULL
);

ALTER TABLE 학생 ADD    전화 VARCHAR(20);     -- 속성 추가
ALTER TABLE 학생 MODIFY 이름 VARCHAR(30);     -- 속성 변경
ALTER TABLE 학생 DROP   COLUMN 전화;          -- 속성 삭제

DROP TABLE 학생 CASCADE;    -- 참조까지 함께 삭제
DROP TABLE 학생 RESTRICT;   -- 참조가 있으면 삭제 취소

TRUNCATE TABLE 학생;        -- 구조는 남기고 데이터 전체 삭제(롤백 불가)

함정ALTER 의 키워드는 ADD / MODIFY(또는 ALTER COLUMN) / DROP 이다. UPDATE 는 데이터를 바꾸는 DML 이고, 구조를 바꾸는 건 ALTER 다.

DML — SELECT 의 문법 순서와 실행 순서

SELECT   DISTINCT 학과, COUNT(*) AS 인원
  FROM   학생
 WHERE   학년 >= 2
 GROUP BY 학과
HAVING   COUNT(*) >= 3
 ORDER BY 인원 DESC;
문법 순서  SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY
실행 순서  FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

핵심 함정WHERE그룹 이전, HAVING그룹 이후에 걸린다. 그래서 WHERE COUNT(*) >= 3 은 오류이고 HAVING 에 써야 한다.

WHERE 절 연산자

WHERE 학년 BETWEEN 2 AND 3          -- 2, 3 포함(양 끝 포함)
WHERE 학과 IN ('컴공', '전자')
WHERE 이름 LIKE '김%'               -- 김으로 시작   ( % = 0자 이상, _ = 정확히 1자 )
WHERE 전화 IS NULL                  -- NULL 비교는 = 가 아니라 IS
WHERE NOT (학년 = 1)
WHERE EXISTS (SELECT 1 FROM 수강 WHERE 수강.학번 = 학생.학번)

함정NULL= NULL 로 비교할 수 없다. 반드시 IS NULL / IS NOT NULL. 그리고 LIKE '_김%' 은 두 번째 글자가 김. %_ 를 바꿔 낸다.

집계 함수와 NULL

함수NULL 처리
COUNT(*)NULL 인 행도 센다
COUNT(칼럼)그 칼럼이 NULL 인 행은 제외
SUM · AVG · MAX · MINNULL 은 무시하고 계산

함정AVG(점수) 는 NULL 을 0으로 보지 않고 분모에서도 제외한다. COUNT(*)COUNT(칼럼) 의 결과가 다를 수 있다는 것이 그대로 문항이 된다(NULL 19회 출제).

INSERT · UPDATE · DELETE

INSERT INTO 학생 (학번, 이름, 학년) VALUES ('20260001', '홍길동', 1);
INSERT INTO 졸업생 SELECT * FROM 학생 WHERE 학년 = 4;   -- 조회 결과를 그대로 삽입

UPDATE 학생 SET 학년 = 학년 + 1 WHERE 학년 < 4;

DELETE FROM 학생 WHERE 학번 = '20260001';
DELETE FROM 학생;          -- 전체 행 삭제(구조는 남는다)

함정DELETE FROM 학생테이블을 지우는 것이 아니라 행을 지운다. 테이블 자체를 없애는 것은 DROP TABLE. 이 셋(DELETE / DROP / TRUNCATE)의 차이가 단골이다.

조인

-- 내부 조인 (매칭되는 행만)
SELECT s.이름, c.과목명
  FROM 학생 s JOIN 수강 c ON s.학번 = c.학번;

-- 왼쪽 외부 조인 (왼쪽은 전부, 짝 없으면 NULL)
SELECT s.이름, c.과목명
  FROM 학생 s LEFT OUTER JOIN 수강 c ON s.학번 = c.학번;

-- 자연 조인 (같은 이름 칼럼으로 자동 결합, 중복 칼럼 하나만)
SELECT * FROM 학생 NATURAL JOIN 수강;

-- 교차 조인 (카티션 프로덕트)
SELECT * FROM 학생 CROSS JOIN 학과;

함정 — 외부 조인에서 오른쪽 테이블 조건을 WHERE 에 쓰면 내부 조인이 되어 버린다. 그 조건은 ON 절에 넣어야 한다. 그리고 자연 조인은 공통 칼럼이 하나로 합쳐진다.

집합 연산과 서브쿼리

SELECT 학번 FROM 재학생 UNION     SELECT 학번 FROM 졸업생;  -- 중복 제거
SELECT 학번 FROM 재학생 UNION ALL SELECT 학번 FROM 졸업생;  -- 중복 유지
SELECT 학번 FROM 재학생 INTERSECT SELECT 학번 FROM 장학생;
SELECT 학번 FROM 재학생 EXCEPT    SELECT 학번 FROM 휴학생;  -- MINUS

-- 서브쿼리
SELECT 이름 FROM 학생
 WHERE 학번 IN (SELECT 학번 FROM 수강 WHERE 과목 = 'DB');

뷰(View)

CREATE VIEW 우수학생 AS
  SELECT 학번, 이름 FROM 학생 WHERE 학년 >= 3;

DROP VIEW 우수학생 CASCADE;
장점단점
논리적 독립성 제공삽입·갱신·삭제에 제약이 많다
접근 제어로 보안 향상독립적인 인덱스를 가질 수 없다
복잡한 질의를 단순화정의를 변경할 수 없다 (ALTER VIEW 불가 → DROP 후 재생성)

함정 — 뷰는 ALTER 로 변경할 수 없다는 점이 자주 나온다. 그리고 뷰가 참조하는 기본 테이블이 삭제되면 뷰도 자동으로 삭제된다.

DCL — 권한

GRANT  SELECT, UPDATE ON 학생 TO 사용자1 WITH GRANT OPTION;  -- 재부여 권한까지
REVOKE SELECT ON 학생 FROM 사용자1 CASCADE;                  -- 전파된 권한까지 회수
GRANT  ALL ON 학생 TO PUBLIC;

함정WITH GRANT OPTION받은 사람이 다시 남에게 줄 수 있게 하는 옵션. REVOKE ... CASCADE 는 그렇게 전파된 권한까지 함께 회수한다.

TCL 과 저장 프로그램

SAVEPOINT sp1;
ROLLBACK TO sp1;   -- 지정 시점까지만 되돌린다
COMMIT;            -- 확정
객체
트리거(Trigger)삽입·수정·삭제 이벤트가 발생하면 자동 실행되는 프로시저 (4회)
프로시저(Procedure)미리 컴파일해 저장한 SQL 묶음, 호출로 실행 (2회)
사용자 정의 함수값을 반환한다 (프로시저는 반환이 목적이 아니다)
커서(Cursor)질의 결과를 한 행씩 처리하는 포인터

함정 — 트리거는 직접 호출하지 않고 이벤트로 실행된다. 프로시저와 함수의 차이는 반환값 유무다.


7. 트랜잭션과 동시성 제어 (로킹 30회 · "단위가" 17회)

ACID

특성
원자성(Atomicity)전부 반영되거나 전부 취소
일관성(Consistency)실행 전후 데이터가 모순 없는 상태 유지
격리성(Isolation)실행 중 다른 트랜잭션이 중간 결과를 볼 수 없다
영속성(Durability)성공한 트랜잭션의 결과는 영구 보존

상태 전이

활동(Active) → 부분 완료(Partially Committed) → 완료(Committed)
            ↘ 실패(Failed) → 철회(Aborted)

로킹(Locking) — 단위 크기가 핵심 문항

공유 락(S, Shared)    읽기용. 여러 트랜잭션이 동시에 가질 수 있다
배타 락(X, Exclusive) 쓰기용. 하나만 가질 수 있고 공유 락과도 공존 못 한다

로킹 단위(Granularity)의 트레이드오프 — 이 표가 그대로 문제다

로킹 단위로크 수병행성(동시성)오버헤드
크다 (DB·테이블)적다낮다낮다(관리 쉬움)
작다 (레코드·필드)많다높다높다(관리 복잡)

함정 — "로킹 단위가 크면 병행성이 높아진다"는 틀린 보기다. 단위가 크면 한 번에 많이 잠그니 동시성은 떨어지고 관리는 쉬워진다. 기출에서 "단위가"가 17회 등장할 만큼 이 표 하나로 나오는 문항이 많다.

2단계 로킹 규약(2PL)

확장(성장) 단계   락을 획득만 한다 (해제 불가)
수축 단계         락을 해제만 한다 (획득 불가)

직렬 가능성을 보장하지만 교착 상태는 여전히 발생할 수 있다.

교착 상태(Deadlock)

발생 조건   상호 배제 · 점유와 대기 · 비선점 · 환형 대기  (4개 동시 성립)
해결        예방(Prevention) · 회피(Avoidance) · 탐지(Detection) · 회복(Recovery)

그 밖의 동시성 제어 기법

기법방식
타임스탬프 순서트랜잭션에 시간 도장을 찍어 순서를 정한다 — 교착 상태가 없다
낙관적 검증(Validation)일단 진행하고 커밋 직전에 검증, 충돌 시 철회
다중 버전(MVCC)버전을 여러 개 유지해 읽기와 쓰기가 서로를 막지 않게

함정 — 타임스탬프 기법의 장점은 교착 상태가 발생하지 않는다는 점이다(3회 출제).

병행 제어를 하지 않으면 생기는 문제

문제내용
갱신 분실(Lost Update)한 트랜잭션의 갱신이 다른 갱신에 덮여 사라진다
모순성(Inconsistency)일부만 반영된 값을 읽어 결과가 어긋난다
연쇄 복귀(Cascading Rollback)철회한 트랜잭션의 값을 읽은 트랜잭션들이 줄줄이 철회
비완료 의존성완료되지 않은 트랜잭션의 중간값을 읽는다

회복(Recovery)

기법내용
즉시 갱신변경을 즉시 DB에 반영하고 로그에 기록 → 회복 시 REDO + UNDO 모두 필요
지연 갱신커밋 전까지 반영을 미룬다UNDO 불필요, REDO 만
검사점(Checkpoint)주기적으로 안전 지점을 남겨 회복 범위를 줄인다
그림자 페이징페이지 사본을 유지해 원본으로 되돌린다
REDO   완료된 트랜잭션을 다시 반영 (로그의 새 값으로)
UNDO   미완료 트랜잭션을 취소 (로그의 이전 값으로)

8. 데이터 모델링과 ER 다이어그램

개념적 설계   ER 모델 · 개체·관계 도출        (DBMS 무관)
논리적 설계   릴레이션 스키마 · 정규화        (DBMS 종속 시작)
물리적 설계   인덱스·파티션·저장 구조         (성능 중심)

ER 다이어그램 표기(피터 첸)

사각형 = 개체(Entity)     타원 = 속성(Attribute)     다이아몬드 = 관계(Relationship)
밑줄   = 기본키           이중 타원 = 다중값 속성      선 위 숫자 = 관계 차수(1:1, 1:N, N:M)

식별자는 주 식별자 / 보조 식별자, 내부 식별자 / 외부 식별자, 단일 / 복합으로 나뉜다. 표기법으로 IE(까마귀발)바커(Barker) 표기법이 있다.


9. 인덱스와 물리 설계

인덱스 종류

종류특징
트리 기반(B-tree, B+tree)가장 일반적. 범위 검색에 강하다
해시(Hash) 인덱스등호 검색만 O(1) 수준. 범위 검색 불가
비트맵(Bitmap)값의 종류가 적은 칼럼(성별 등)에 유리
함수 기반칼럼에 함수를 적용한 결과로 인덱스
클러스터드(Clustered)데이터를 인덱스 순서대로 물리 정렬. 테이블당 1개만
넌클러스터드별도 구조로 위치만 가리킨다. 여러 개 가능
밀집(Dense) / 희소(Sparse)모든 키에 항목 / 일부 키에만 항목

함정 — 클러스터드 인덱스는 테이블당 하나만 만들 수 있다(물리 정렬 순서가 하나이므로). 그리고 인덱스가 많으면 조회는 빨라지지만 삽입·수정·삭제는 느려진다.

파티셔닝

레인지(Range)      값의 범위로 분할 (날짜별)
해시(Hash)         해시 함수로 균등 분산
리스트(List)       특정 값 목록으로 분할 (지역별)
컴포지트(Composite) 위 방식을 조합
라운드로빈          순서대로 균등 분배

10. 분산 데이터베이스 (투명성 15회 · 분산)

목표 — 투명성 4가지가 그대로 문제다

투명성
위치 투명성(Location)데이터가 어디에 있는지 몰라도 접근 가능
분할 투명성(Fragmentation)하나의 릴레이션이 여러 조각으로 나뉘어 있음을 몰라도 된다
중복(복제) 투명성(Replication)사본이 여러 개 있어도 하나처럼 다룬다
병행 투명성(Concurrency)여러 트랜잭션이 동시에 수행돼도 결과가 일관
장애 투명성(Failure)일부 장애에도 트랜잭션이 정확히 수행

기출은 지역 사상 투명성을 함께 넣기도 한다(지역 DBMS 와 물리적 데이터 사이의 사상).

장점단점
지역 자치성·확장 용이·가용성·신뢰성설계·관리 복잡, 통신 비용, 잠재적 오류 증가

2단계 커밋(2PC) — 분산 트랜잭션의 원자성을 위해 준비(prepare) → 커밋(commit) 두 단계로 합의한다.


11. 데이터 활용

데이터 웨어하우스   주제 지향 · 통합 · 시계열 · 비휘발성. 의사결정 지원
데이터 마트         특정 부서·주제로 좁힌 소규모 웨어하우스
ETL                 추출(Extract) · 변환(Transform) · 적재(Load)
데이터 마이닝       대용량 데이터에서 규칙·패턴을 찾아낸다

OLAP 연산

Roll-up     상위 수준으로 요약        Drill-down  하위 수준으로 상세화
Slicing     한 차원을 잘라 본다      Dicing      여러 차원으로 조각
Pivoting    행과 열을 회전

NoSQL 과 CAP

유형   키-값 · 문서 · 컬럼 패밀리 · 그래프
CAP    일관성(Consistency) · 가용성(Availability) · 분할 내성(Partition tolerance) 중 둘

12. 함정 정리

차수 = 속성 수, 카디널리티 = 튜플 수.

관계대수 SELECT(σ) 는 행, PROJECT(π) 는 열. SQL 의 SELECT 절과 반대로 헷갈린다.

슈퍼키는 최소성 불만족, 외래키는 NULL 가능, 기본키는 NULL 불가.

WHERE 는 그룹 전, HAVING 은 그룹 후. 집계 함수 조건은 HAVING.

NULL 은 IS NULL 로만 비교한다. COUNT(*)COUNT(칼럼) 은 결과가 다르다.

DROP CASCADE 는 참조까지 삭제 / RESTRICT 는 참조 있으면 취소.

뷰는 ALTER 로 변경할 수 없다. 독립 인덱스도 못 가진다.

로킹 단위가 크면 병행성은 낮아진다.

지연 갱신은 UNDO 가 필요 없다. 즉시 갱신은 REDO·UNDO 둘 다.

타임스탬프 기법은 교착 상태가 없다.

2NF = 부분 종속 제거, 3NF = 이행 종속 제거, BCNF = 모든 결정자가 후보키.

클러스터드 인덱스는 테이블당 1개.

카티션 프로덕트는 차수는 합, 카디널리티는 곱.


한눈에 정리

  • 이 과목은 문법을 직접 읽는 문항이 많다. SQL 은 외우는 게 아니라 눈으로 여러 번 읽어야 한다
  • SELECT 실행 순서 FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY 를 알면 오답 절반이 걸러진다
  • 무결성은 개체(기본키) / 참조(외래키) / 도메인(값 범위) 세 칸으로 나눠 기억
  • 정규화는 도부이결다조무엇을 제거하는가로 외운다
  • 관계대수는 σ 행 · π 열 · ⋈ 결합 · ÷ 모두 포함
  • 로킹은 단위 크기 트레이드오프 표 하나가 최다 출제 지점
  • 회복은 즉시 갱신(REDO+UNDO) / 지연 갱신(REDO만) 대비
  • 분산 DB 는 투명성 이름 4~5개를 그대로 묻는다
  • 계산 문항 셋 — 차수·카디널리티, 카티션 프로덕트, 집계 함수의 NULL 처리
2과목 소프트웨어개발4과목 프로그래밍언어활용 ① 언어