[정처기 필기] 3. 데이터베이스 구축
데이터베이스 구축 - SQL 응용 · 논리/물리 설계 · 데이터 전환 · 무결성·보안
0. 과목 구조 한눈에 (시험용 지도)
| 하위 영역 | 한 줄 요지 | 시험이 자주 묻는 축 |
|---|---|---|
| SQL 응용 | 표준 SQL로 정의·조회·제어·트랜잭션 처리 | DDL/DML/DCL/TCL 구분, 조인·집계·서브쿼리, 뷰·인덱스 |
| 논리 DB 설계 | 업무 요구를 릴레이션 구조·제약으로 정제 | ER 모델, 함수 종속, 정규화(1NF~BCNF), 반정규화 |
| 물리 DB 설계 | 성능·저장을 반영한 구현 설계 | 인덱스, 파티셔닝, 파일/접근 경로, 병행제어·락 |
| 데이터 전환 | 기존 데이터를 목표 DB로 옮기고 품질 확보 | ETL, 검증·정제, 매핑·이행 전략 |
| 무결성·보안 | 데이터가 규칙을 지키고 비인가 접근을 막음 | 무결성 제약, 권한/역할, 암호화·감사, SQL 인젝션 |
1. SQL 응용
- SQL은 DB 정의(DDL), 조작(DML), 제어(DCL), **트랜잭션 제어(TCL)**로 나누어 외우면 채점 기준이 흔들리지 않는다.
1.1 SQL 분류(정처기에서 구분 문제로 매우 자주 출제)
| 분류 | 대표 문 | 역할 |
|---|---|---|
| DDL | CREATE, ALTER, DROP, (교재에 따라 TRUNCATE를 DDL로 두는 경우도 있음) | 스키마·객체 구조 정의·변경·삭제 |
| DML | SELECT, INSERT, UPDATE, DELETE | 데이터 조회·삽입·수정·삭제 |
| DCL | GRANT, REVOKE | 접근 권한 부여·회수 |
| TCL | COMMIT, ROLLBACK, SAVEPOINT | 트랜잭션 확정·취소·부분 되돌림 |
1.2 조회 심화(3과목 관점)
- 집계 함수:
COUNT,SUM,AVG,MAX,MIN—NULL은 집계 시 통상 제외(COUNT(*)는 행 수). GROUP BY/HAVING:WHERE는 그룹화 전 행 필터,HAVING은 그룹화 후 그룹 조건.- 서브쿼리: 스칼라 서브쿼리,
IN,EXISTS(상관 서브쿼리와 함께 자주 출제). - 집합 연산:
UNION/UNION ALL,INTERSECT,EXCEPT(제품마다MINUS등 동의어 존재 가능하나 시험은 표준 용어 위주). - 조인: 내부·외부(
LEFT/RIGHT/FULL)·교차·자체 조인 — 매칭 실패 시NULL채움은 외부 조인의 핵심.
1.3 뷰(View)와 인덱스(Index)
- 뷰: 가상 테이블. 접근 통제·복잡 질의 단순화에 사용. 갱신 가능 뷰는 제약이 많다는 개념 정도를 알면 충분한 경우가 많다.
- 인덱스: 탐색 비용을 줄이는 보조 구조. 삽입/수정/삭제 비용과 저장 공간이 늘 수 있는 트레이드오프가 시험 문장으로 자주 나온다.
1.4 저장 모듈(교재·기출에서 묶이는 경우)
- 저장 프로시저(Stored Procedure): 서버에 저장된 절차를 호출해 처리(네트워크 왕복 감소 등 장점이 설명으로 출제).
- 트리거(Trigger): 특정 이벤트(
INSERT/UPDATE/DELETE) 전후에 자동 실행되는 절차.
2. 논리 데이터베이스 설계
- 논리 설계는 개념 모델을 DBMS에 가깝지만 여전히 구현 세부(디스크 배치 등)와 분리된 수준의 스키마로 만드는 단계다.
2.1 데이터 모델링 흐름(다시 정리)
- 요구사항 분석 → 2. 개념 설계(ERD) → 3. 논리 설계(릴레이션·제약·정규화) → 4. 물리 설계(파일·인덱스 등)
2.2 ER 모델 핵심
- 개체(Entity), 속성(Attribute), 관계(Relationship).
- 카디널리티(1:1, 1:N, N:M): N:M은 논리 설계에서 교차(연결) 릴레이션으로 풀어내는 문제가 자주 나온다.
- 약한 개체(Weak Entity): 다른 개체의 존재에 의존하며, 단독으로는 후보키 구성이 어려운 경우(식별 관계).
2.3 릴레이션 이론·무결성(논리 단계에서의 “규칙”)
- 키: 슈퍼키 → 후보키 → 기본키(PK) / 대체키.
- 외래키(FK): 참조 무결성을 논리 스키마로 표현하는 대표 수단.
2.4 함수 종속과 정규화(암기 정확도가 성적을 가른다)
함수 종속(요지)
속성 집합 X의 값이 정해지면 Y의 값이 유일하게 정해지면 X → Y.
이상(Anomaly)
잘못된 설계로 삽입·삭제·갱신 이상이 생길 수 있다는 설명이 출제된다.
| 정규형 | 핵심 조건(시험용 압축) |
|---|---|
| 1NF | 속성값은 더 이상 쪼갤 수 없는 원자값 |
| 2NF | 1NF + 부분 함수 종속 제거(복합키의 일부에만 매달린 비주요 속성 분리) |
| 3NF | 2NF + 이행 함수 종속 제거(비주요가 비주요에 종속되지 않게) |
| BCNF | 비자명 함수 종속에서 결정자는 슈퍼키(3NF보다 엄격. 교재·기출 해설에서 후보키로만 요약되는 경우도 있으나, 엄밀한 정의는 슈퍼키) |
- 분해: 무손실 조인 분해 가능 여부, 함수 종속 보존 여부가 이론 문제로 나올 수 있다.
2.5 반정규화(Denormalization)
- 성능·조회 편의를 위해 의도적으로 정규화를 완화하는 기법(중복 허용, 테이블 통합 등).
- 장점: 조인 감소, 조회 성능 향상 가능.
- 단점: 중복으로 갱신 비용·불일치 위험 증가 — 트레이드오프 서술형이 자주 나온다.
2.6 데이터 사전(메타데이터)
- 데이터 사전/카탈로그: 테이블·컬럼·제약·인덱스 등 정의 정보를 체계적으로 관리한다는 정의 문제로 출제되기도 한다.
3. 물리 데이터베이스 설계
- 물리 설계는 논리 스키마를 실제 저장·접근 경로로 구체화한다. “DBMS와 운영 환경 종속”이 핵심 표현이다.
3.1 저장·접근 구조
- 파일/페이지/익스텐트 같은 저장 단위, 레코드 배치, 클러스터링(군집화) 등은 제품마다 용어가 다르지만, 시험은 **“접근 경로를 설계한다”**는 큰 그림이 중요하다.
3.2 인덱스(물리 설계의 대표 카드)
- B-트리 계열: 범위 검색에 유리한 일반적 구조로 자주 설명된다.
- 비트맵 인덱스: 카디널리티가 낮은 컬럼 등 특정 조건에서 유리하다는 식의 개념 문제.
- 클러스터드 인덱스: (제품에 따라) 데이터 물리 배치와 연계된다는 설명 — “한 테이블에 하나” 같은 제품 규칙은 제품 의존적이므로, 기출 해설이 아니면 원리 위주로 기억한다.
3.3 파티셔닝
- 수평 분할: 행 기준(범위·해시·리스트 등).
- 수직 분할: 열 기준으로 테이블을 나누어 I/O·보안·배치를 분리.
3.4 트랜잭션과 병행제어(물리·운영 성격이 강한 파트)
ACID
- A 원자성, C 일관성, I 고립성, D 지속성.
병행 이상
- 갱신 분실, 모순성(비일관성), 연쇄 복귀 등 용어 구분.
직렬화 가능성·락
- 2단계 락킹(2PL): 확장 단계와 축소 단계.
- 데드락: 상호 대기 순환 — 타임아웃, 락 순서 통제, 낙관적 검증 등 대응이 선택지로 나온다.
격리 수준(개념)
- 낮은 격리는 처리량은 좋을 수 있으나 더티 리드/논리프리터블/팬텀 같은 현상 가능성이 커진다는 서술이 출제된다.
4. 데이터 전환
- “운영 중인 데이터를 새 DB/새 스키마로 옮기면서 품질을 보증하는 활동”이 큰 틀이다.
4.1 ETL 흐름
- 추출(Extract): 원천에서 데이터 수집
- 변환(Transform): 코드 매핑, 형식 변환, 통합, 집계, 품질 규칙 적용
- 적재(Load): 목표 DB에 반영(초기 적재·증분 적재 등)
4.2 데이터 정제·검증
- 정제: 중복 제거, 오타·누락 보정, 표준 코드 변환 등.
- 검증: 건수·합계·샘플·업무 규칙 기반 교차 검증으로 이행 정확성을 증명.
4.3 이행 전략(서술형 포인트)
- 병행 운영·검증 기간을 두고 점진 전환하는 시나리오, 롤백 계획, 데이터 동기화 같은 운영 안전장치가 문제 지문에 등장한다.
5. 데이터베이스 무결성 및 보안
5.1 무결성 제약(정의 구분이 핵심)
| 유형 | 요지 |
|---|---|
| 개체 무결성 | PK는 NULL 불가, 중복 불가 |
| 참조 무결성 | FK는 참조 가능한 PK 값이거나(규칙에 따라) NULL 허용 정책이 명확해야 함 |
| 도메인 무결성 | 자료형·범위·허용값 집합 준수 |
| 사용자 정의 무결성 | 업무 규칙을 CHECK, 트리거 등으로 구현 |
- 무결성은 “정확성”만이 아니라 일관된 규칙 유지라는 관점으로 묻는 경우가 많다.
5.2 보안: 접근 통제 모델(용어 매칭)
- DAC(임의 접근 통제): 데이터 소유자가 권한을 통제.
- MAC(강제 접근 통제): 보안 등급·라벨 기반의 강한 규칙.
- RBAC(역할 기반): **역할(Role)**에 권한을 묶고 사용자에게 역할을 부여.
5.3 DB 보안 실무 기법
- 뷰로 민감 컬럼을 숨김, 최소 권한 원칙, 감사 로그(Audit).
- 암호화: 전송 구간(TLS 등)과 저장 구분을 지문에서 요구하는 경우가 있다.
- SQL 인젝션: 문자열 결합 쿼리의 위험, 바인딩(Prepared Statement) 중심의 대응이 정답으로 자주 등장한다.
6. 시험 포인트(암기 체크)
- 과목명은 **「데이터베이스 구축」**이며, 하위 5영역은 SQL 응용 / 논리 설계 / 물리 설계 / 데이터 전환 / 무결성·보안으로 외운다.
- SQL은 DDL·DML·DCL·TCL을 표로 구분하는 문제가 매우 흔하다.
- 정규화는 정의 문장이 틀리면 전부 틀리므로 1NF~BCNF를 **“조건 한 줄”**로 각각 암기한다.
- 물리 설계는 인덱스·파티셔닝·락/데드락·ACID가 한 세트로 나오는 경우가 많다.
- 데이터 전환은 ETL + 정제·검증 + 이행 전략(병행/검증/롤백) 키워드를 연결해 기억한다.
- 보안은 DAC/MAC/RBAC 구분과 **SQL 인젝션 대응(바인딩)**을 우선 복습한다.
7. 스스로 검토할 때 쓰는 오답 노트(빈칸)
- 2NF에서 제거하는 종속은 ( ) 함수 종속이다.
- BCNF에서 비자명 함수 종속의 **( )**는 슈퍼키여야 한다.
GROUP BY이후 그룹 조건은( )절을 사용한다.- 트랜잭션 확정/취소는 **
( )/( )**에 해당한다. - 역할 기반 접근 통제의 약자는 **
( )**이다.
| 번호 | 정답 |
|---|---|
| 1 | 부분 |
| 2 | 결정자 |
| 3 | HAVING |
| 4 | COMMIT / ROLLBACK |
| 5 | RBAC |