통합 요약노트

Ch.9 데이터베이스 (필기 3과목)

관계형 모델, 키, 정규화, SQL, Access

이 챕터의 내용

1

데이터베이스 개념과 관계형 모델

데이터베이스(DB)DBMS는 이 문제를 구조적으로 해결하며, 필기 3과목의 첫 번째 관문입니다

데이터베이스(DB): 여러 사용자가 공유하여 사용할 수 있도록 통합·저장된 데이터의 집합. DBMS: 데이터베이스를 생성·관리·검색·보안·백업하는 소프트웨어 시스템.

DBMS 장점 4가지 (빈출): ① 데이터 중복 최소화 ② 데이터 무결성 보장 ③ 동시 접근 제어 ④ 보안 관리

스키마(Schema)는 데이터베이스의 구조를 정의한 것입니다. ANSI/SPARC 표준에 따라 3단계로 나뉩니다.

  • DB 4대 특성: 통합성, 저장성, 공용성, 변화성
  • DBMS 장점: 중복 최소화, 무결성 보장, 동시 접근 제어, 보안 관리
  • 스키마 3단계: 외부(사용자 뷰) → 개념(전체 논리) → 내부(물리 저장)
  • 데이터 독립성: 논리적(외부↔개념), 물리적(개념↔내부)
  • 릴레이션=테이블, 튜플=행, 속성=열, 차수=열 수, 카디널리티=행 수
상세 노트 보기arrow_forward
2

키와 무결성 제약조건

키(Key)무결성 제약조건은 DB 설계의 기둥이며 필기 매회 2~3문제 출제됩니다

키(Key)는 릴레이션에서 튜플을 유일하게 식별하기 위한 속성(들)의 집합입니다.

기본키 규칙 2가지: ① NULL 불가 (개체 무결성) ② 중복 불가 (유일성). 시험에서 "기본키에 NULL 허용?" → 아니오!

ER(Entity-Relationship) 모델은 데이터베이스를 개체(Entity)관계(Relationship)로 시각화한 설계 도구입니다.

  • 키 포함 관계: 슈퍼키 ⊃ 후보키 ⊃ 기본키, 나머지 = 대체키
  • 기본키: NULL 불가 + 중복 불가 + 릴레이션당 1개
  • 외래키: 다른 릴레이션의 기본키를 참조, NULL 허용 가능
  • 개체 무결성 = PK는 NULL 불가, 참조 무결성 = FK는 참조 PK에 존재
  • ER 기호: □=개체, ○=속성, ◇=관계, 밑줄=PK
상세 노트 보기arrow_forward
3

정규화 — 1NF·2NF·3NF

정규화(Normalization)는 이상 현상을 제거하는 테이블 분해 과정이며, 필기 매회 1~2문제 출제됩니다

잘못 설계된 테이블에서 데이터를 조작할 때 발생하는 비정상적 현상이상(Anomaly)이라 합니다.

정규화는 낮은 정규형 → 높은 정규형으로 테이블을 분해하는 과정입니다. 컴활 시험에서는 1NF·2NF·3NF까지만 출제됩니다.

암기법: 1NF=원자값, 2NF=부분종속 제거, 3NF=이행종속 제거. "원부이" (원자-부분-이행)

  • 이상 현상 3가지: 삽입 이상, 삭제 이상, 갱신 이상
  • 정규화 = 이상 현상 제거를 위한 테이블 분해 과정
  • 1NF: 원자값 (다중값 제거)
  • 2NF: 부분 함수 종속 제거 (복합키 일부에만 종속되는 속성 분리)
  • 3NF: 이행 함수 종속 제거 (A→B→C에서 간접 종속 분리)
  • 암기: '원부이' (원자-부분-이행)
상세 노트 보기arrow_forward
4

SQL 기본 — SELECT·INSERT·UPDATE·DELETE

SQL(Structured Query Language)은 필기 3과목에서 매회 5~7문제가 출제되는 최대 비중 영역입니다

시험 빈출: "SELECT는 어떤 언어에 속하는가?" → DML. "CREATE TABLE은?" → DDL. "GRANT는?" → DCL.

LIKE 와일드카드: % = 0개 이상 문자, _ = 정확히 1문자. '김__' = 김 뒤 2글자. 시험 필수!

DROP vs DELETE vs TRUNCATE: DROP = 테이블 자체 삭제(DDL), DELETE = 행 삭제(DML), TRUNCATE = 모든 행 삭제+구조 유지(DDL). 시험 단골!

  • SQL 분류: DDL(CREATE/ALTER/DROP), DML(SELECT/INSERT/UPDATE/DELETE), DCL(GRANT/REVOKE)
  • SELECT 구조: SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY
  • LIKE 와일드카드: % = 0개 이상, _ = 정확히 1문자
  • UPDATE/DELETE에 WHERE 없으면 전체 행 대상 — 매우 위험!
  • DROP(테이블 삭제) vs DELETE(행 삭제) vs TRUNCATE(전체 행 삭제, 구조 유지)
상세 노트 보기arrow_forward
5

SQL 심화 — JOIN·서브쿼리·집계 함수

JOIN서브쿼리, 집계 함수는 SQL의 핵심이며 매회 3~4문제 출제됩니다

WHERE vs HAVING 구분 = 시험 매회 출제! WHERE = 개별 행 필터 (집계함수 불가), HAVING = 그룹 필터 (집계함수 가능)

ANY vs ALL 변환: > ANY = > MIN(서브쿼리), > ALL = > MAX(서브쿼리). 이 변환이 시험에 자주 나옵니다!

학생 테이블과 수강 테이블을 JOIN할 때, 수강 기록이 없는 학생도 표시하려면?

  • INNER JOIN = 양쪽 매칭만, LEFT JOIN = 왼쪽 전부 + 오른쪽 NULL 가능
  • 집계 함수: COUNT, SUM, AVG, MAX, MIN — NULL은 제외 (COUNT(*) 제외)
  • WHERE = 행 필터 (집계함수 불가), HAVING = 그룹 필터 (집계함수 가능)
  • 서브쿼리: 단일행(=, >, <), 다중행(IN, ANY, ALL)
  • > ANY = > MIN, > ALL = > MAX 변환 공식 암기
상세 노트 보기arrow_forward
6

Access 기초 — 테이블·쿼리·폼·보고서

Microsoft Access는 소규모 관계형 DB를 구축하는 도구이며, 필기에서 3~5문제 출제됩니다

폼 = 입력용 화면, 보고서 = 출력(인쇄)용 화면. 시험에서 "데이터 입력에 적합한 개체?" →

관계 설정: 데이터베이스 도구 → 관계 → 테이블 추가 → 기본키 필드를 외래키 필드로 드래그. 참조 무결성 적용 체크 → 잘못된 데이터 입력 방지. 연속 업데이트/삭제 옵션도 설정 가능.

실행 쿼리 4가지: 추가(Append), 삭제(Delete), 업데이트(Update), 테이블 만들기(Make Table). 원본 데이터를 변경하므로 주의!

  • 4대 개체: 테이블(저장), 쿼리(조회), 폼(입력), 보고서(인쇄)
  • 주요 데이터 형식: 짧은텍스트, 숫자, 날짜, 통화, 예/아니오, 일련번호
  • 필드 속성: 크기, 형식, 입력마스크, 유효성검사, 기본값, 인덱스
  • 쿼리 종류: 선택, 매개변수, 크로스탭, 실행(추가/삭제/업데이트/테이블생성)
  • 관계 설정: PK→FK 드래그 + 참조 무결성 체크 + 연속 업데이트/삭제 옵션
상세 노트 보기arrow_forward
7

데이터베이스 모의고사 (20문항)

모의고사를 반복 풀어야 실전 감각이 잡힙니다. 틀린 문제 위주로 복습하세요!

1. 데이터베이스의 정의로 가장 적절한 것은?

2. 스키마 3단계 중 물리적 저장 구조를 정의하는 것은?

3. 관계형 데이터베이스에서 '열(Column)'에 해당하는 용어는?

상세 노트 보기arrow_forward
8

트랜잭션 & 회복

트랜잭션은 'All or Nothing' 원칙으로 이 문제를 해결하며, 필기 시험에서 ACID와 회복 기법은 매회 1~2문항 출제됩니다

트랜잭션(Transaction)이란 데이터베이스에서 하나의 논리적 작업 단위를 구성하는 연산들의 집합입니다. 은행 이체 = '출금 + 입금'처럼, 반드시 모두 실행되거나 모두 취소되어야 합니다.

ACID 암기법: '원일격영' — 원자성·일관성·격리성·영속성. 시험에서 영문 약자(A·C·I·D)와 한글 설명을 매칭하는 문제가 빈출!

트랜잭션 상태 5가지: ① 활동(Active) → 트랜잭션 실행 중 ② 부분 완료(Partially Committed) → 마지막 연산 실행 직후 (아직 COMMIT 전) ③ 완료(Committed) → COMMIT 수행, 결과 영구 반영 ④ 실패(Failed) → 오류 발생, 더 이상 진행 불가 ⑤ 철회(Aborted) → ROLLBACK 수행, 트랜잭션 이전 상태로 복원

상세 노트 보기arrow_forward
9

데이터베이스 설계 & ER 모델

ER 모델은 현실 세계를 DB 구조로 옮기는 첫 단계이며, ER 기호 해석과 스키마 변환은 필기 단골 유형입니다

데이터베이스 설계 단계: ① 요구 조건 분석 → 사용자 요구사항 파악 ② 개념적 설계 → ER 다이어그램 작성 (DBMS 독립적) ③ 논리적 설계 → 관계 스키마로 변환 (DBMS 종류 고려) ④ 물리적 설계 → 저장 구조·인덱스 설계 (성능 고려)

개념적 설계 = ER 다이어그램 (추상적, DBMS 무관) 논리적 설계 = 릴레이션 스키마 변환 (DBMS 종류에 따라) 물리적 설계 = 인덱스·파일 조직 (성능 최적화) → 시험에서 '개념적 설계의 결과물은?' → ER 다이어그램!

약한 개체(Weak Entity): • 자체적으로 유일하게 식별할 수 없는 개체 (이중 사각형) • 소유 개체(Owner Entity)에 의존하여 존재 • 부분키(Partial Key): 소유 개체 키와 결합해야 유일 식별 • 예: '부양가족' 개체 — '사원' 없이는 존재 불가

  • 1:1 관계 → 전체 참여 쪽에 외래키 추가
  • 1:N 관계 → N쪽 테이블에 외래키 추가 (최빈출)
  • N:M 관계 → 별도 관계 테이블 생성 (양쪽 PK를 FK로)
  • 약한 개체 → 소유 개체 PK + 부분키 = 복합 PK
  • 다중값 속성 → 별도 테이블로 분리
상세 노트 보기arrow_forward
10

Access 폼 & 보고서 심화

Access의 폼·보고서·쿼리·매크로는 실기에서도 빈출이며, 필기에서는 유형 구분 문제가 출제됩니다

폼(Form)은 데이터를 입력·수정·조회하기 위한 화면 인터페이스입니다. Access에서는 5가지 보기 유형을 제공합니다.

분할 폼 = 위: 단일 폼 + 아래: 데이터시트. 시험에서 '상하 분할 표시' → 분할 폼!

콤보 vs 목록: 콤보 상자 = 드롭다운 + 직접 입력 가능 / 목록 상자 = 목록에서만 선택, 직접 입력 불가. 이 차이가 시험 포인트!

상세 노트 보기arrow_forward
11

SQL 기출 패턴 30선

30문항 반복 드릴로 기출 패턴을 체화하여 실전에서 자동으로 풀 수 있게 합니다

1. 다음 SQL의 실행 결과로 올바른 것은? SELECT 이름 FROM 학생 WHERE 학과 = '컴퓨터공학' AND 학년 >= 3;

2. 이름이 '김'으로 시작하는 학생을 검색하는 SQL의 빈칸을 채우시오. SELECT * FROM 학생 WHERE 이름 ___ '김%';

3. 다음 SQL의 실행 결과로 올바른 것은? SELECT * FROM 학생 WHERE 학년 BETWEEN 2 AND 4;

상세 노트 보기arrow_forward

key

핵심 용어 모음

통합성(Integrated)

최소한의 중복으로 데이터를 통합 관리

저장성(Stored)

컴퓨터가 접근 가능한 매체에 저장

공용성(Shared)

여러 사용자가 동시에 접근·사용

변화성(Operational)

삽입·삭제·수정으로 항상 최신 상태 유지

DISTINCT

중복 제거: SELECT DISTINCT 학과 FROM 학생

BETWEEN

범위: WHERE 성적 BETWEEN 80 AND 100

IN

목록: WHERE 학과 IN ('컴공', '전자')

LIKE

패턴: WHERE 이름 LIKE '김%' (김으로 시작)

IS NULL

NULL 확인: WHERE 전화번호 IS NULL

필드 크기

텍스트 최대 길이 / 숫자 정밀도 설정

형식(Format)

표시 형식 지정 (날짜, 숫자 서식)

입력 마스크

입력 패턴 강제 (전화번호, 우편번호)

compare_arrows

비교 정리

항목단계정의대응
외부 스키마개별 사용자 관점의 논리 구조서브스키마, 뷰(View)
개념 스키마조직 전체 관점의 논리 구조전체 DB 구조, 제약조건
내부 스키마물리적 저장 구조인덱스, 저장 방식, 레코드 배치
항목관계형 용어일반 용어파일 시스템
릴레이션(Relation)테이블파일
튜플(Tuple)행(Row)레코드
속성(Attribute)열(Column)필드
도메인(Domain)속성이 가질 수 있는 값의 범위데이터 타입
차수(Degree)속성(열)의 수필드 수
카디널리티(Cardinality)튜플(행)의 수레코드 수
항목정의특징
슈퍼키유일성을 만족하는 속성 집합최소성 불필요 (불필요 속성 포함 가능)
후보키유일성 + 최소성을 만족기본키가 될 수 있는 후보
기본키(PK)후보키 중 선택된 대표 키NULL 불가, 중복 불가
대체키후보키 중 기본키로 선택되지 않은 키보조 식별자 역할
외래키(FK)다른 릴레이션의 기본키를 참조참조 무결성의 핵심
항목무결성규칙위반 예
개체 무결성기본키는 NULL이 될 수 없다학번이 NULL인 학생 레코드
참조 무결성외래키 값은 참조 릴레이션의 기본키에 존재하거나 NULL이어야 한다존재하지 않는 학과코드 입력
도메인 무결성속성 값이 정의된 도메인 범위 내여야 한다성별 필드에 '3' 입력
항목기호이름설명
사각형 □개체(Entity)학생, 과목, 부서 등 실체
타원 ○속성(Attribute)이름, 학번, 전화번호 등
마름모 ◇관계(Relationship)수강, 소속, 담당 등
밑줄 속성기본키 속성유일 식별자
이중 타원다중값 속성취미(여러 개 가능)
점선 타원유도 속성나이(생년월일에서 계산)
항목이상설명
삽입 이상불필요한 데이터도 함께 삽입해야 함과목 등록 없이 교수 정보만 넣을 수 없음
삭제 이상필요한 데이터까지 함께 삭제됨수강 취소 시 교수 정보도 사라짐
갱신 이상일부만 수정하면 데이터 불일치교수 연락처 변경 시 일부만 반영
항목단계조건제거 대상
1NF모든 속성이 원자값(Atomic Value)반복 그룹, 다중값 제거
2NF1NF + 부분 함수 종속 제거기본키 일부에만 종속되는 속성 분리
3NF2NF + 이행 함수 종속 제거A→B→C에서 A→C 간접 종속 분리
항목분류풀네임명령어역할
DDLData Definition LanguageCREATE, ALTER, DROP테이블 구조 정의
DMLData Manipulation LanguageSELECT, INSERT, UPDATE, DELETE데이터 조작
DCLData Control LanguageGRANT, REVOKE권한 제어
항목JOIN결과NULL 포함
INNER JOIN양쪽 모두 매칭되는 행만없음
LEFT OUTER JOIN왼쪽 전부 + 오른쪽 매칭오른쪽이 NULL
RIGHT OUTER JOIN오른쪽 전부 + 왼쪽 매칭왼쪽이 NULL
FULL OUTER JOIN양쪽 모두 전부양쪽 모두 NULL 가능
CROSS JOIN모든 행의 조합 (곱집합)없음
항목개체역할엑셀 비유
테이블데이터를 저장하는 기본 구조워크시트
쿼리데이터를 조회·가공하는 질의필터+수식
데이터 입력·수정을 위한 화면입력 양식
보고서인쇄 목적의 출력 형식인쇄 레이아웃
항목형식설명
짧은 텍스트최대 255자 문자열이름, 주소
긴 텍스트최대 약 1GB 메모비고, 상세 설명
숫자정수/실수 (다양한 크기)수량, 점수
날짜/시간날짜와 시간입사일, 주문일
통화소수점 4자리 고정 숫자가격, 급여
예/아니오True/False (체크박스)회원여부, 승인
일련 번호자동 증가 숫자 (PK용)고객번호, 주문번호
OLE 개체그림, 파일 등 바이너리사진, 문서
하이퍼링크URL 링크웹사이트, 이메일
항목쿼리역할특징
선택 쿼리조건에 맞는 데이터 조회가장 기본, SELECT에 해당
매개변수 쿼리실행 시 조건값을 입력받아 조회[학과를 입력하세요] 형식
크로스탭 쿼리행/열로 데이터를 요약피벗 테이블과 유사
실행(동작) 쿼리데이터를 변경(추가/삭제/업데이트/테이블생성)주의: 원본 데이터 변경!
항목속성영문설명
원자성AtomicityAll or Nothing — 모두 실행 또는 모두 취소
일관성Consistency트랜잭션 전후로 DB 상태가 일관성 유지
격리성Isolation동시 실행 트랜잭션이 서로 간섭하지 않음
영속성Durability완료된 트랜잭션 결과는 영구 반영
항목유형영문허용 동작동시 접근
공유 잠금Shared Lock (S-Lock)읽기(Read)만 가능다른 S-Lock 허용, X-Lock 불가
배타 잠금Exclusive Lock (X-Lock)읽기 + 쓰기 모두 가능모든 Lock 불가 (독점)
항목기법특징장점
지연 갱신COMMIT 전까지 DB에 반영하지 않음 (로그만 기록)UNDO 불필요 (Redo만)
즉시 갱신트랜잭션 실행 중에도 DB에 바로 반영Undo + Redo 모두 필요
검사점(Checkpoint)주기적으로 검사점을 설정하여 회복 범위 축소회복 시간 단축
그림자 페이징DB를 Current/Shadow 두 페이지 테이블로 관리로그 불필요
항목기호도형설명
개체(Entity)사각형독립적으로 존재하는 객체 (학생, 교수)
속성(Attribute)타원형개체의 특성 (이름, 학번)
관계(Relationship)마름모개체 간의 연관 (수강, 지도)
키 속성밑줄 타원개체를 유일하게 식별 (학번)
다중값 속성이중 타원여러 값 가능 (취미, 전화번호)
유도 속성점선 타원다른 속성에서 계산 (나이 ← 생년월일)
항목유형의미예시
1:1한 개체가 다른 개체 하나와만 관계국민 — 주민번호
1:N한 개체가 여러 개체와 관계학과 — 학생 (한 학과에 여러 학생)
N:M양쪽 모두 여러 개체와 관계학생 — 과목 (수강 관계)
항목유형특징용도
기본 폼(단일 폼)한 번에 한 레코드씩 표시상세 입력/조회
연속 폼여러 레코드를 목록처럼 표시목록 조회 + 편집
분할 폼상단: 단일 폼 / 하단: 데이터시트조회 + 상세 보기
데이터시트엑셀처럼 행/열 형태로 표시대량 데이터 비교
피벗 테이블/차트데이터를 피벗 형태로 집계분석·시각화
항목컨트롤설명예시
텍스트 상자데이터 입력/표시 (가장 기본)이름, 학번
콤보 상자드롭다운 목록 + 직접 입력 가능학과 선택
목록 상자항목 목록 표시 (직접 입력 불가)과목 목록
명령 단추클릭 시 동작 실행저장, 인쇄, 닫기
확인란(체크박스)Yes/No 값 입력수강 여부
옵션 그룹여러 옵션 중 하나 선택성별 선택
항목기능설명
그룹화특정 필드 기준으로 데이터를 묶어 표시 (학과별, 연도별)
정렬그룹 내 또는 전체 레코드를 오름/내림차순 정렬
계산 컨트롤=Sum(), =Count(), =Avg() 등 집계 함수 사용
페이지 나누기그룹 변경 시 새 페이지에서 시작하도록 설정
머리글/바닥글보고서·페이지·그룹 각 수준의 머리글/바닥글 영역
항목유형특징비유
선택 쿼리조건에 맞는 레코드를 검색·표시 (가장 기본)검색 필터
크로스탭 쿼리행/열 교차로 데이터 집계 (피벗 테이블과 유사)피벗 테이블
매개변수 쿼리실행 시 사용자에게 값을 입력받아 조건으로 사용검색 대화상자
실행 쿼리(Action)테이블 만들기/추가/업데이트/삭제 수행일괄 작업

퀴즈와 인터랙션으로 더 깊이 학습하세요

play_circle인터랙티브 코스 시작하기