18|데이터베이스 설계·정규화·함수적 종속

글 요약

사무자동화산업기사 – 데이터베이스 설계 단계와 정규화의 목적, 이상 현상, 함수적 종속·부분 종속·이행 종속을 정리합니다.

데이터베이스는 필요한 데이터를 단순히 한곳에 저장하는 것만으로 완성되지 않습니다. 사용자가 어떤 정보를 필요로 하는지 조사하고, 데이터 사이의 관계를 구조화한 뒤, 실제 데이터베이스 관리 시스템에서 효율적으로 저장하고 검색할 수 있도록 단계적으로 설계해야 합니다.

잘못 설계된 릴레이션에는 같은 정보가 여러 튜플에 반복될 수 있습니다. 이러한 중복은 데이터를 삽입하거나 삭제하고 갱신할 때 이상 현상을 일으킵니다. 이 장에서는 데이터베이스 설계 단계와 정규화의 목적을 살펴보고, 이상 현상과 함수적 종속의 기본 개념을 정리합니다.

이 장의 핵심 내용

  • 데이터베이스 설계는 요구조건 분석부터 데이터베이스 구현까지 단계적으로 진행됩니다.
  • 개념적 설계는 특정 DBMS와 독립적인 개념 스키마를 작성하는 단계입니다.
  • 논리적 설계에서는 개념 스키마를 목표 DBMS의 논리적 데이터 모델로 변환합니다.
  • 물리적 설계에서는 저장 레코드, 인덱스와 접근 경로를 결정합니다.
  • 정규화는 데이터 중복과 부적절한 종속 관계를 줄이는 과정입니다.
  • 이상 현상은 삽입 이상, 삭제 이상, 갱신 이상으로 구분합니다.
  • 함수적 종속에서 결정자의 값은 종속자의 값을 하나로 결정합니다.
  • 부분 함수적 종속과 이행 함수적 종속은 정규화에서 중요한 판단 기준입니다.

데이터베이스 설계는 어떤 단계로 진행되는가?

데이터베이스 설계는 사용자의 요구사항을 실제 데이터베이스 구조로 변환하는 과정입니다. 일반적으로 요구조건 분석, 개념적 설계, 논리적 설계, 물리적 설계, 데이터베이스 구현의 순서로 진행합니다.

  1. 요구조건 분석 — 사용자가 필요로 하는 데이터와 처리 업무를 조사합니다.
  2. 개념적 설계 — 현실 세계의 개체와 관계를 개념 스키마로 표현합니다.
  3. 논리적 설계 — 개념 스키마를 목표 DBMS가 지원하는 논리적 구조로 변환합니다.
  4. 물리적 설계 — 데이터를 실제 저장장치에 저장하는 방법과 접근 경로를 결정합니다.
  5. 데이터베이스 구현 — DDL로 스키마를 정의하고 응용 프로그램과 트랜잭션을 구현합니다.

데이터베이스 설계는 현실 세계의 요구사항을 개념 구조로 표현한 뒤, 이를 논리 구조와 물리 저장 구조로 점차 구체화하는 과정입니다.

요구조건 분석에서는 무엇을 조사하는가?

요구조건 분석은 데이터베이스를 사용할 사람과 조직이 어떤 데이터를 필요로 하며 그 데이터를 어떻게 처리하려는지를 파악하는 단계입니다. 사용자 면담, 기존 문서 분석, 업무 흐름 조사 등을 통해 요구조건을 수집합니다.

수집한 요구사항은 요구조건 명세서로 작성합니다. 명세서에는 저장해야 할 데이터, 데이터의 생성·조회·수정·삭제 방식, 처리 빈도, 성능 요구사항, 보안과 권한 조건 등이 포함될 수 있습니다.

요구사항 수집

  • 사용자 면담
  • 업무 문서 분석
  • 기존 시스템 조사
  • 데이터 처리 흐름 확인

분석 결과

  • 필요한 데이터 정의
  • 처리 업무 정의
  • 성능·보안 조건 정의
  • 요구조건 명세서 작성

시험 포인트: 요구조건 분석에서는 사용자로부터 요구사항을 수집하고 이를 체계적으로 정리한 요구조건 명세서를 작성합니다.

개념적 설계에서는 무엇을 만드는가?

개념적 설계는 요구조건 분석에서 수집한 내용을 바탕으로 현실 세계의 개체, 속성, 관계를 추상적으로 표현하는 단계입니다. 특정 DBMS의 저장 방식이나 명령어보다 데이터가 가진 본질적인 구조에 집중합니다.

대표적인 작업은 개체-관계 모델링입니다. 개체와 속성을 식별하고 개체 사이의 관계를 분석하여 E-R 다이어그램을 작성합니다. 필요한 경우 데이터의 처리 과정과 흐름을 표현하기 위한 트랜잭션 모델링도 수행합니다.

구분내용
개체 식별관리해야 할 대상과 독립적인 데이터 단위를 찾음
속성 정의각 개체가 가지는 특성과 값을 정의함
관계 설정개체 사이의 연관 관계와 대응 수를 분석함
E-R 모델링개체·속성·관계를 E-R 다이어그램으로 표현함
트랜잭션 모델링데이터에 수행되는 처리 과정과 흐름을 분석함
개념적 설계에서는 목표 DBMS와 독립적인 개념 스키마를 작성합니다.

주의: 개념적 설계는 특정 DBMS에 맞는 테이블이나 저장 구조를 결정하는 단계가 아닙니다. 목표 DBMS의 데이터 모델에 맞게 스키마를 변환하는 작업은 논리적 설계에서 수행합니다.

논리적 설계에서는 무엇을 결정하는가?

논리적 설계는 개념적 설계에서 작성한 개념 스키마를 목표 DBMS가 지원하는 논리적 데이터 모델로 변환하는 단계입니다. 관계형 DBMS를 사용한다면 개체와 관계를 릴레이션으로 변환하고 속성, 키, 무결성 제약조건 등을 결정합니다.

논리적 스키마가 사용자 요구사항을 정확하게 반영하는지 평가하고, 데이터 중복이나 부적절한 종속 관계가 발생하지 않도록 스키마를 정제합니다. 트랜잭션이 데이터에 접근하는 논리적 인터페이스도 이 단계에서 설계할 수 있습니다.

  • 개념 스키마를 논리적 데이터 모델로 변환합니다.
  • 릴레이션과 속성의 구조를 결정합니다.
  • 기본키와 외래키를 설정합니다.
  • 데이터 무결성 제약조건을 정의합니다.
  • 스키마를 평가하고 정제합니다.
  • 트랜잭션의 논리적 인터페이스를 설계합니다.

논리적 설계의 핵심: 데이터를 어느 저장장치에 배치할지를 결정하는 것이 아니라 목표 DBMS가 이해할 수 있는 논리적인 데이터 구조를 만드는 단계입니다.

물리적 설계는 논리적 설계와 어떻게 다른가?

물리적 설계는 논리적 스키마를 실제 저장장치에 구현하기 위한 물리적 구조를 결정하는 단계입니다. 데이터가 저장장치에 어떤 형태로 저장되고 필요한 레코드를 어떤 경로로 검색할지를 구체화합니다.

  • 저장 레코드의 형식과 크기를 결정합니다.
  • 레코드의 집중과 분할 방식을 검토합니다.
  • 클러스터링 방식을 결정합니다.
  • 인덱스와 해싱 등 접근 경로를 설계합니다.
  • 예상 데이터량과 트랜잭션 빈도를 분석합니다.
  • 응답 시간, 저장 공간과 처리 효율을 고려합니다.
구분개념적 설계논리적 설계물리적 설계
주요 관점현실 세계의 데이터DBMS의 논리적 구조저장장치의 물리적 구조
대표 결과물개념 스키마, E-R 다이어그램논리 스키마, 릴레이션 구조저장 레코드, 인덱스, 접근 경로
DBMS 의존성독립적목표 DBMS에 종속적DBMS와 저장 환경에 종속적
대표 작업개체·속성·관계 정의스키마 변환·평가·정제파일 구조와 접근 방법 결정
개념적·논리적·물리적 설계는 데이터 구조를 점차 구체화한다는 점에서 구분됩니다.

데이터베이스 구현 단계에서는 무엇을 하는가?

데이터베이스 구현은 설계 결과를 실제 DBMS에 반영하는 단계입니다. 논리적·물리적 설계에서 결정한 스키마를 데이터 정의어인 DDL로 작성하여 테이블, 제약조건, 뷰와 인덱스 등의 데이터베이스 객체를 생성합니다.

스키마를 생성한 뒤에는 초기 데이터를 입력하고 사용자의 업무를 처리하기 위한 응용 프로그램과 트랜잭션을 작성합니다. 이후 시험 운영을 통해 정확성, 무결성, 성능과 보안 요구사항이 충족되는지 확인합니다.

구현 단계의 핵심은 설계된 스키마를 DDL로 생성하고 데이터를 처리할 응용 프로그램과 트랜잭션을 작성하는 것입니다.

정규화란 무엇인가?

정규화(Normalization)는 함수적 종속과 같은 데이터 종속성 이론을 이용하여 잘못 설계된 릴레이션을 더 적절한 구조의 릴레이션으로 분해하는 과정입니다. 데이터의 의미와 종속 관계에 맞게 테이블을 구성하여 불필요한 중복과 이상 현상을 줄이는 것이 목적입니다.

동일한 사실이 여러 튜플에 반복되면 하나의 정보를 변경하기 위해 여러 위치를 수정해야 합니다. 일부 튜플만 수정되면 서로 다른 값이 동시에 존재하여 데이터의 일관성이 훼손될 수 있습니다.

정규화의 목적

  • 데이터 구조의 안정성 향상
  • 중복 데이터의 최소화
  • 데이터 일관성 유지
  • 삽입·삭제·갱신 이상의 감소
  • 부적절한 데이터 종속성 제거

잘못된 설계의 문제

  • 동일한 정보의 반복 저장
  • 저장 공간의 불필요한 사용
  • 수정해야 할 위치의 증가
  • 서로 모순되는 값의 발생
  • 원하지 않는 정보의 손실

범위 구분: 이 장에서는 정규화가 필요한 이유와 함수적 종속을 다룹니다. 제1정규형, 제2정규형, 제3정규형과 BCNF의 구체적인 조건은 다음 장에서 정리합니다.

이상 현상이란 무엇인가?

이상 현상(Anomaly)은 하나의 릴레이션에 서로 다른 종류의 정보가 부적절하게 함께 저장되어 있을 때 데이터의 삽입·삭제·갱신 과정에서 발생하는 비정상적인 문제를 말합니다.

다음 수강 릴레이션에서는 학번과 과목코드가 함께 기본키를 구성합니다. 한 학생이 여러 과목을 수강하면 학번과 학년 정보가 과목마다 반복해서 저장됩니다.

학번과목코드성적학년
100C413A4
200C123B1
300C312B3
400C312C2
400C324A2
400E412C2
학번 400의 학년 정보가 여러 수강 튜플에 반복되어 저장되어 있습니다.

삽입 이상은 언제 발생하는가?

삽입 이상(Insertion Anomaly)은 새로운 데이터를 저장하기 위해 현재 필요하지 않은 다른 데이터까지 함께 입력해야 하는 문제입니다.

아직 과목을 신청하지 않은 신입생의 학번과 학년만 등록하려고 해도 기본키를 구성하는 과목코드가 없으면 튜플을 정상적으로 삽입하기 어렵습니다. 학생 정보를 저장하기 위해 불필요한 수강 정보까지 입력해야 하는 문제가 발생합니다.

삽입 이상: 필요한 사실 하나만 독립적으로 삽입하지 못하고 관련 없는 데이터까지 함께 입력해야 하는 현상입니다.

삭제 이상은 왜 정보 손실을 일으키는가?

삭제 이상(Deletion Anomaly)은 특정 튜플을 삭제할 때 보존해야 할 다른 정보까지 함께 사라지는 문제입니다.

학번 200인 학생이 유일하게 수강 중인 과목 C123의 신청을 취소하여 해당 튜플을 삭제한다고 가정합니다. 수강 정보만 제거하려는 작업이지만 같은 튜플에 저장된 학생의 학번과 학년 정보도 함께 삭제됩니다.

삭제 이상: 하나의 사실을 삭제하는 과정에서 아직 필요한 다른 사실까지 함께 손실되는 현상입니다.

갱신 이상은 어떻게 데이터 모순을 만드는가?

갱신 이상(Update Anomaly)은 중복 저장된 동일한 정보를 수정하면서 일부 튜플만 변경하여 데이터가 서로 일치하지 않게 되는 문제입니다.

학번 400인 학생의 학년이 2학년에서 3학년으로 변경되면 해당 학생이 수강하는 세 개의 튜플을 모두 수정해야 합니다. 일부 튜플만 변경하면 같은 학생이 2학년과 3학년으로 동시에 표시되어 데이터의 일관성이 깨집니다.

갱신 이상: 같은 사실이 여러 튜플에 반복되어 있을 때 일부 값만 수정하여 서로 모순되는 데이터가 발생하는 현상입니다.

이상 현상발생 시점핵심 문제
삽입 이상새 데이터를 입력할 때불필요한 데이터까지 함께 입력해야 함
삭제 이상기존 튜플을 삭제할 때필요한 다른 정보까지 함께 손실됨
갱신 이상중복된 값을 수정할 때일부 값만 변경되어 데이터 모순이 발생함
삽입·삭제·갱신 이상은 모두 데이터 중복과 부적절한 릴레이션 구조에서 발생합니다.

함수적 종속은 무엇을 의미하는가?

함수적 종속(Functional Dependency)은 릴레이션 안에 있는 속성 집합 사이의 종속 관계입니다. 어떤 속성 집합 X의 값이 정해졌을 때 속성 집합 Y의 값이 하나로 결정된다면 Y는 X에 함수적으로 종속된다고 합니다.

XYX \to Y

X의 값이 같으면 이에 대응하는 Y의 값도 반드시 같다는 의미입니다. 이때 X를 결정자(Determinant), Y를 종속자(Dependent)라고 합니다.

기호의미
X다른 속성의 값을 결정하는 결정자
Y결정자의 값에 따라 하나로 정해지는 종속자
X → YX가 Y를 함수적으로 결정한다는 의미

예: 한 학생에게 하나의 학년만 부여된다면 학번 → 학년이 성립합니다. 그러나 학년이 같다고 학번이 하나로 정해지는 것은 아니므로 일반적으로 학년 → 학번은 성립하지 않습니다.

주의: 함수적 종속은 단순한 연관성이나 시간적인 인과관계가 아닙니다. 릴레이션의 모든 유효한 튜플에서 동일한 결정자 값은 동일한 종속자 값을 가져야 합니다.

부분 함수적 종속은 언제 발생하는가?

부분 함수적 종속은 어떤 비주요 속성이 복합 후보키 전체가 아니라 그 후보키의 일부 속성에만 종속되는 관계입니다. 정규화에서는 주로 복합 후보키의 일부에 일반 속성이 종속되는 상황을 의미합니다.

수강 릴레이션에서 기본키가 학번과 과목코드의 조합이라고 가정합니다. 성적은 특정 학생이 특정 과목에서 받은 값이므로 학번과 과목코드의 조합에 의해 결정됩니다.

복합 키 전체에 대한 종속: {학번, 과목코드} → 성적

반면 학년은 과목코드와 관계없이 학번만으로 결정됩니다. 학년이 복합 기본키 전체가 아니라 기본키의 일부인 학번에만 종속되므로 부분 함수적 종속이 발생합니다.

부분 함수적 종속: 학번 → 학년

완전 함수적 종속

종속자가 복합 결정자의 모든 속성을 사용해야만 결정되는 관계입니다.

{학번, 과목코드} → 성적

부분 함수적 종속

종속자가 복합 결정자의 일부 속성만으로도 결정되는 관계입니다.

학번 → 학년

부분 함수적 종속은 복합 키 전체가 아니라 복합 키의 일부만으로 일반 속성이 결정될 때 발생합니다.

중요: 부분 함수적 종속은 후보키가 둘 이상의 속성으로 구성된 복합 키일 때 판단합니다. 단일 속성으로 구성된 키에는 키의 일부가 존재하지 않습니다.

이행 함수적 종속은 어떤 관계인가?

정규화에서 문제 되는 이행 함수적 종속은 기본키 X가 비주요 속성 Y를 결정하고, Y가 다시 다른 비주요 속성 Z를 결정하여 Z가 기본키 X에 간접적으로 종속되는 관계입니다. 즉 X → Y이고 Y → Z이면 X → Z가 성립합니다.

기본 형태: X → Y이고 Y → Z이면 X → Z가 성립합니다.

고객 릴레이션에서 고객아이디가 고객등급을 결정하고 고객등급이 할인율을 결정한다고 가정합니다.

함수적 종속의미
고객아이디 → 고객등급고객아이디를 알면 고객등급을 결정할 수 있음
고객등급 → 할인율고객등급을 알면 해당 할인율을 결정할 수 있음
고객아이디 → 할인율고객등급을 거쳐 할인율을 간접적으로 결정함
할인율은 고객아이디에 직접 종속되지 않고 고객등급을 거쳐 이행적으로 종속됩니다.

고객등급과 할인율을 고객 릴레이션에 함께 저장하면 같은 등급의 할인율이 여러 고객 튜플에 반복될 수 있습니다. 이를 줄이려면 고객 정보와 등급별 할인율 정보를 별도의 릴레이션으로 분해합니다.

분해 전

고객 릴레이션

  • 고객아이디
  • 고객등급
  • 할인율

같은 등급의 할인율이 여러 고객 튜플에 반복됩니다.

분해 후

고객: 고객아이디, 고객등급

등급: 고객등급, 할인율

할인율은 등급 릴레이션에서 한 번만 관리합니다.

부분 종속과 이행 종속은 어떻게 구분하는가?

구분부분 함수적 종속이행 함수적 종속
판단 기준복합 키 전체가 아닌 일부에 종속다른 일반 속성을 거쳐 간접적으로 종속
대표 형태{A, B} → C이지만 A → C가 성립X → Y이고 Y → Z이므로 X → Z가 성립
대표 사례학번 → 학년고객아이디 → 고객등급 → 할인율
관련 정규형제2정규형에서 제거제3정규형에서 제거
부분 종속은 복합 키의 일부를 확인하고, 이행 종속은 일반 속성을 거치는지를 확인합니다.

시험에서 자주 혼동되는 개념

개념적 설계와 논리적 설계

개념적 설계는 DBMS와 독립적이고, 논리적 설계는 목표 DBMS의 데이터 모델에 맞게 변환합니다.

논리적 설계와 물리적 설계

논리적 설계는 릴레이션과 제약조건을 결정하고, 물리적 설계는 레코드·인덱스·접근 경로를 결정합니다.

삽입 이상과 삭제 이상

삽입 이상은 필요한 정보만 입력하지 못하는 문제이고, 삭제 이상은 삭제 과정에서 필요한 정보까지 잃는 문제입니다.

결정자와 종속자

X → Y에서 X는 다른 속성의 값을 결정하는 결정자이고, Y는 결정자의 값에 따라 정해지는 종속자입니다.

부분 함수적 종속은 복합 키 전체가 아닌 일부에 종속되는지를 확인하고, 이행 함수적 종속은 키가 아닌 속성을 거쳐 간접적으로 종속되는지를 확인합니다.

이번 장 핵심 요약

  1. 요구조건 분석에서는 사용자의 요구사항을 수집하여 요구조건 명세서를 작성합니다.
  2. 개념적 설계에서는 DBMS와 독립적인 개념 스키마와 E-R 다이어그램을 작성합니다.
  3. 논리적 설계에서는 개념 스키마를 목표 DBMS의 논리적 데이터 모델로 변환합니다.
  4. 물리적 설계에서는 저장 레코드, 인덱스와 접근 경로를 설계합니다.
  5. 구현 단계에서는 DDL로 스키마를 정의하고 응용 프로그램과 트랜잭션을 작성합니다.
  6. 정규화는 데이터 중복과 이상 현상을 줄이기 위한 과정입니다.
  7. 삽입 이상은 불필요한 데이터까지 함께 입력해야 하는 문제입니다.
  8. 삭제 이상은 특정 튜플의 삭제로 필요한 다른 정보까지 손실되는 문제입니다.
  9. 갱신 이상은 중복된 값의 일부만 변경되어 모순이 발생하는 문제입니다.
  10. X → Y에서 X는 결정자이고 Y는 종속자입니다.
  11. 부분 함수적 종속은 복합 키의 일부에만 종속되는 관계입니다.
  12. 이행 함수적 종속은 다른 속성을 거쳐 간접적으로 성립하는 종속 관계입니다.

복습 문제

목표 DBMS와 독립적인 개념 스키마를 작성하는 단계는?

개념적 설계입니다.

레코드 형식, 인덱스와 접근 경로를 결정하는 단계는?

물리적 설계입니다.

특정 튜플을 삭제하면서 필요한 다른 정보까지 함께 사라지는 현상은?

삭제 이상입니다.

중복된 값의 일부만 수정하여 서로 다른 값이 발생하는 현상은?

갱신 이상입니다.

X → Y에서 결정자와 종속자는 각각 무엇인가?

X가 결정자이고 Y가 종속자입니다.

부분 함수적 종속이 발생하려면 어떤 조건이 필요한가?

후보키 또는 결정자가 둘 이상의 속성으로 구성된 복합 키여야 합니다.

학번과 과목코드가 복합 키일 때 학번 → 학년은 어떤 종속인가?

부분 함수적 종속입니다.

고객아이디 → 고객등급이고 고객등급 → 할인율이면 어떤 종속이 성립하는가?

고객아이디 → 할인율이라는 이행 함수적 종속이 성립합니다.

참고자료

이 글은 사무자동화산업기사 시험 범위에 포함된 데이터베이스 설계 단계, 정규화, 이상 현상과 함수적 종속을 이해하고 복습할 수 있도록 재구성한 정리입니다. 정규형별 세부 조건과 용어는 교재에 따라 표현이 달라질 수 있으므로 실제 시험에서는 문제에 제시된 조건과 최신 Q-Net 출제기준을 함께 확인해야 합니다.


같은 주제의 다른 글

이 글과 같은 카테고리에 있는 이전 글과 다음 글을 확인해보세요.