웹디자인기능사/웹디자인기능사 실기

정보처리기사 실기 - 3일차 (DB, 정규화)

siimplelab 2026. 3. 25. 15:22
반응형

 

오늘의 학습 목표

오늘 공부를 마치면 아래 정도는 되어야 합니다.

  • 데이터베이스의 특징을 설명할 수 있다.
  • 스키마와 인스턴스의 차이를 구분할 수 있다.
  • 기본키, 후보키, 대체키, 외래키, 슈퍼키를 구분할 수 있다.
  • 1NF, 2NF, 3NF, BCNF의 의미를 설명할 수 있다.
  • 정규화 관련 기출형 문제를 풀 수 있다.

1. 데이터베이스 기본 개념

1-1. 데이터베이스란?

데이터베이스는 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 데이터의 집합입니다.

쉽게 말하면, 데이터를 그냥 쌓아두는 것이 아니라 체계적으로 저장하고 검색하고 수정할 수 있게 관리하는 구조입니다.

예:

  • 회원 정보
  • 상품 정보
  • 주문 내역
  • 철도 예약 정보

핵심:

  • 데이터를 체계적으로 저장
  • 여러 사용자가 함께 사용
  • 검색, 수정, 삭제가 가능

1-2. 데이터베이스의 특징

정보처리기사에서 자주 나오는 대표 특징은 아래입니다.

1. 실시간 접근성

사용자의 요구에 즉시 응답할 수 있습니다.

2. 계속적인 변화

데이터는 계속 삽입, 수정, 삭제됩니다.

3. 동시 공유

여러 사용자가 동시에 사용할 수 있습니다.

4. 내용에 의한 참조

데이터의 위치가 아니라 내용으로 검색합니다.

암기:

  • 실시간 접근성
  • 계속적인 변화
  • 동시 공유
  • 내용에 의한 참조

2. 스키마와 인스턴스

이 둘은 시험에서 자주 같이 나옵니다.

2-1. 스키마

스키마는 데이터베이스의 구조와 제약조건에 대한 정의입니다.

쉽게 말하면, 설계도입니다.

예:

  • 학생 테이블에는 학번, 이름, 학년, 점수 컬럼이 있다
  • 학번은 중복되면 안 된다

즉, 데이터가 어떻게 구성될지를 정의한 것입니다.

핵심:

  • 구조
  • 제약조건
  • 설계도

2-2. 인스턴스

인스턴스는 특정 시점에 실제로 저장되어 있는 데이터 값의 집합입니다.

예:

  • 1번 학생: 김민수, 1학년, 85점
  • 2번 학생: 이영희, 2학년, 92점

즉, 설계도에 따라 실제로 들어 있는 데이터입니다.

핵심:

  • 실제 데이터
  • 시간에 따라 변함

2-3. 스키마와 인스턴스 차이

  • 스키마: 구조 정의
  • 인스턴스: 실제 데이터 내용

암기:

  • 스키마 = 뼈대
  • 인스턴스 = 실제 값

3. 키의 종류

이 부분도 매우 자주 나옵니다. 이름이 비슷해서 헷갈리기 쉽습니다.

3-1. 슈퍼키

슈퍼키는 한 릴레이션에서 각 행을 유일하게 식별할 수 있는 하나 이상의 속성 집합입니다.

예를 들어 학생 테이블에서 학번이 유일하다면, 학번은 슈퍼키입니다.
또한 학번 + 이름처럼 불필요하게 더 많이 묶어도 유일하면 슈퍼키입니다.

핵심:

  • 유일성만 만족
  • 최소성은 보장하지 않음

3-2. 후보키

후보키는 유일성과 최소성을 모두 만족하는 키입니다.

즉, 행을 유일하게 구분할 수 있고, 더 이상 속성을 줄일 수 없어야 합니다.

예:

  • 학번
  • 주민등록번호

핵심:

  • 유일성 만족
  • 최소성 만족

3-3. 기본키

기본키는 후보키 중에서 대표로 선택한 키입니다.

예:

  • 학생 테이블의 학번

핵심:

  • 후보키 중 하나를 선택
  • NULL 불가
  • 중복 불가

3-4. 대체키

대체키는 후보키 중에서 기본키로 선택되지 않은 나머지 키입니다.

예:

  • 후보키가 학번, 주민등록번호 두 개라면
  • 기본키를 학번으로 정했을 때 주민등록번호는 대체키

핵심:

  • 후보키였지만 기본키는 아님

3-5. 외래키

외래키는 다른 테이블의 기본키를 참조하는 키입니다.

예:

  • 주문 테이블의 회원번호
  • 회원 테이블의 회원번호를 참조

핵심:

  • 다른 테이블과 관계를 연결
  • 참조 무결성과 관련 있음

4. 키 한눈에 정리

키 종류 특징
슈퍼키 유일성 만족
후보키 유일성 + 최소성 만족
기본키 후보키 중 선택된 대표 키
대체키 후보키 중 기본키가 아닌 키
외래키 다른 테이블의 기본키를 참조하는 키

암기 포인트:

  • 슈퍼키는 넓은 개념
  • 후보키는 최소성까지 만족
  • 기본키는 대표
  • 대체키는 탈락한 후보키
  • 외래키는 참조용

5. 정규화 개념

정규화는 데이터 중복을 줄이고 이상 현상을 방지하기 위해 테이블을 구조적으로 분해하는 과정입니다.

핵심 목적:

  • 데이터 중복 최소화
  • 삽입 이상 방지
  • 삭제 이상 방지
  • 갱신 이상 방지

이상 현상 간단 정리

삽입 이상

불필요한 정보 없이는 원하는 데이터 삽입이 어려움

삭제 이상

하나를 삭제했더니 필요한 정보까지 같이 사라짐

갱신 이상

중복된 데이터를 일부만 수정해서 불일치 발생


6. 함수적 종속

정규화를 이해하려면 함수적 종속을 아주 가볍게 알고 가는 것이 좋습니다.

A → B 는 A가 B를 결정한다는 뜻입니다.

예:

  • 학번 → 이름

의미:

  • 학번을 알면 이름을 알 수 있다

정규화는 결국 이런 종속 관계를 정리하는 과정입니다.


7. 제1정규형 (1NF)

제1정규형은 모든 속성 값이 원자값이어야 합니다.

원자값이란 더 이상 나눌 수 없는 하나의 값입니다.

비정규형 예시

학번 이름 전화번호
1001 김민수 010-1111-1111, 010-2222-2222

문제:

  • 전화번호가 한 칸에 여러 개 들어 있음

1NF로 수정

학번 이름 전화번호
1001 김민수 010-1111-1111
1001 김민수 010-2222-2222

핵심:

  • 한 칸에 하나의 값만

암기:

  • 1NF = 원자값

8. 제2정규형 (2NF)

제2정규형은 제1정규형을 만족하면서, 부분 함수 종속을 제거한 상태입니다.

부분 함수 종속은 기본키가 복합키일 때, 기본키의 일부에만 종속되는 속성이 있는 경우입니다.

예시

수강 테이블

학번 과목코드 이름 과목명 성적

기본키가 (학번, 과목코드) 라고 가정합시다.

그런데

  • 학번 → 이름
  • 과목코드 → 과목명

이런 경우 이름과 과목명은 기본키 전체가 아니라 일부에만 종속됩니다. 이것이 부분 함수 종속입니다.

해결

테이블 분해:

  • 학생(학번, 이름)
  • 과목(과목코드, 과목명)
  • 수강(학번, 과목코드, 성적)

핵심:

  • 복합키의 일부에만 종속되는 속성 제거

암기:

  • 2NF = 부분 함수 종속 제거

9. 제3정규형 (3NF)

제3정규형은 제2정규형을 만족하면서, 이행 함수 종속을 제거한 상태입니다.

이행 함수 종속은 기본키가 아닌 일반 속성이 다른 일반 속성을 결정하는 경우입니다.

예:

  • 학번 → 학과코드
  • 학과코드 → 학과명

그러면

  • 학번 → 학과명
    이 성립하게 됩니다.

즉, 기본키가 아닌 속성인 학과코드가 또 다른 속성인 학과명을 결정하고 있습니다.

예시

학번 이름 학과코드 학과명

해결

분해:

  • 학생(학번, 이름, 학과코드)
  • 학과(학과코드, 학과명)

핵심:

  • 일반 속성이 일반 속성을 결정하면 안 됨

암기:

  • 3NF = 이행 함수 종속 제거

10. BCNF

BCNF는 Boyce-Codd Normal Form입니다.

제3정규형보다 더 강한 정규형으로, 모든 결정자가 후보키여야 합니다.

시험에서는 보통 깊게 들어가기보다 “3NF보다 강화된 형태” 정도와 간단한 사례 구분 정도를 요구하는 편입니다.

핵심:

  • 결정자가 후보키가 아니면 안 됨

암기:

  • BCNF = 모든 결정자는 후보키

11. 정규화 한 줄 암기

  • 1NF: 원자값
  • 2NF: 부분 함수 종속 제거
  • 3NF: 이행 함수 종속 제거
  • BCNF: 결정자는 후보키

이 네 줄은 거의 그대로 외워야 합니다.


12. 정규화 예시 흐름

아래처럼 기억하면 좋습니다.

비정규형

한 칸에 여러 값이 들어 있음

1NF

각 칸이 하나의 값만 가짐

2NF

복합키 일부에만 종속되는 속성 제거

3NF

일반 속성이 다른 일반 속성을 결정하는 것 제거

BCNF

결정자가 후보키가 아니면 분해


13. 기출형 연습문제

문제 1

데이터베이스의 특징으로 옳지 않은 것은?

  1. 실시간 접근성
  2. 계속적인 변화
  3. 동시 공유
  4. 프로그램에 의한 참조

정답:

  • 4

해설:
정답 표현은 보통 “내용에 의한 참조”입니다.


문제 2

데이터베이스의 구조와 제약조건을 정의한 것은?

정답:

  • 스키마

문제 3

특정 시점에 데이터베이스에 저장된 실제 데이터의 집합은?

정답:

  • 인스턴스

문제 4

유일성과 최소성을 만족하는 키는?

정답:

  • 후보키

문제 5

후보키 중에서 기본키로 선택되지 않은 키는?

정답:

  • 대체키

문제 6

다른 테이블의 기본키를 참조하는 키는?

정답:

  • 외래키

문제 7

제1정규형의 핵심 조건은?

정답:

  • 모든 속성값이 원자값이어야 한다

문제 8

제2정규형의 핵심은?

정답:

  • 부분 함수 종속 제거

문제 9

제3정규형의 핵심은?

정답:

  • 이행 함수 종속 제거

문제 10

BCNF의 핵심 조건은?

정답:

  • 모든 결정자는 후보키여야 한다

14. 서술형 대비 짧은 답안 연습

1. 스키마란?

정답 예시:

  • 데이터베이스의 구조와 제약조건에 대한 정의

2. 인스턴스란?

정답 예시:

  • 특정 시점에 저장된 실제 데이터의 집합

3. 제1정규형이란?

정답 예시:

  • 모든 속성값이 원자값을 갖도록 하는 정규형

4. 제2정규형이란?

정답 예시:

  • 부분 함수 종속을 제거한 정규형

5. 제3정규형이란?

정답 예시:

  • 이행 함수 종속을 제거한 정규형

15. 오늘의 초압축 암기 노트

데이터베이스 특징:
실시간 접근성
계속적인 변화
동시 공유
내용에 의한 참조

스키마 = 구조, 제약조건
인스턴스 = 실제 데이터

슈퍼키 = 유일성
후보키 = 유일성 + 최소성
기본키 = 후보키 중 선택
대체키 = 기본키가 아닌 후보키
외래키 = 다른 테이블 기본키 참조

1NF = 원자값
2NF = 부분 함수 종속 제거
3NF = 이행 함수 종속 제거
BCNF = 모든 결정자는 후보키

16. 오늘 공부 체크리스트

  • 데이터베이스의 4가지 특징을 외웠는가
  • 스키마와 인스턴스를 구분할 수 있는가
  • 슈퍼키, 후보키, 기본키, 대체키, 외래키를 구분할 수 있는가
  • 1NF, 2NF, 3NF, BCNF를 설명할 수 있는가
  • 정규화의 목적을 말할 수 있는가
  • 관련 기출형 문제를 풀었는가
반응형