페이지

2026년 4월 1일 수요일

데이터 무결성 확보를 위한 구조적 개선: 정규화와 이상현상 분석

 

. 데이터베이스 설계의 품질 척도, 정규화의 개요

  • 정의: 관계형 데이터베이스 설계에서 데이터의 중복을 최소화하고, 무결성을 훼손하는 **이상현상(Anomaly)**을 제거하기 위해 릴레이션을 분해(Decomposition)하는 과정.

  • 필요성: 중복 데이터로 인한 저장 공간 낭비 방지 및 삽입, 수정, 삭제 시 발생하는 논리적 오류 차단.


2. 가. 이상현상 3가지와 발생 이유

제공된 <수강테이블>은 기본키가 **{학번, 수강코드}**인 복합키 구조이며, 학번이 학과와 지도교수를 결정하는 부분 함수 종속성을 포함하고 있어 다음과 같은 이상현상이 발생합니다.

이상현상 유형상세 내용 (수강테이블 사례)발생 이유
삽입 이상 (Insertion)신입생(학번: 230001)이 입학했으나 아직 수강신청(수강코드)을 하지 않으면, 기본키의 일부인 수강코드가 NULL이 되어 데이터를 삽입할 수 없음.기본키가 아닌 속성을 삽입하기 위해 불필요한 속성값이 반드시 필요할 때 발생
삭제 이상 (Deletion)학번 '211561' 학생이 수강신청을 취소하여 'C324' 레코드를 삭제하면, 해당 학생의 학과(수학과)와 지도교수(P2) 정보까지 함께 삭제됨.한 개체에 두 종류 이상의 정보가 결합되어 있어 원치 않는 정보까지 삭제될 때 발생
갱신 이상 (Update)학번 '201511'의 지도교수가 'C1'에서 'K2'로 변경될 경우, 2개의 레코드를 모두 수정해야 하며, 하나라도 누락되면 데이터 불일치가 발생함.중복된 데이터 중 일부만 수정되어 데이터의 모순(Inconsistency)이 생길 때 발생

3. 나. 해결방안: 제2정규화 (2NF) 수행

  • 원인 분석: 현재 <수강테이블>은 기본키 {학번, 수강코드}에 대하여 학과와 지도교수가 부분 함수 종속(Partial Functional Dependency) 상태임. ($학번 \rightarrow \{학과, 지도교수\}$)

  • 해결책: 부분 함수 종속을 제거하고 모든 일반 속성이 기본키에 완전 함수 종속되도록 릴레이션을 분해하는 **제2정규화(2NF)**를 수행함.


4. 다. 테이블 재구성 (정규화 결과)

① <학생-학과 테이블> (학생 정보 관리)

  • 기본키: 학번

  • 함수 종속: $학번 \rightarrow \{학과, 지도교수\}$

학번학과지도교수
221571컴퓨터과K1
221572컴퓨터과M1
211561수학과P2
201511전기과C1

② <수강신청 테이블> (수강 정보 관리)

  • 기본키: {학번, 수강코드}

  • 함수 종속: $\{학번, 수강코드\} \rightarrow$ (없음, 관계 자체 기록)

학번수강코드
221571C412
221572C412
211561C324
201511E123
201511C412

5. 기술사적 제언: 정규화와 성능의 트레이드오프(Trade-off)

  • 무결성 vs 성능: 정규화는 이상현상을 해결하여 데이터 무결성을 높이지만, 과도한 분해는 많은 조인(Join)을 유발하여 조회 성능을 저하시킬 수 있음.

  • 반정규화(De-normalization) 고려: 시스템 요구사항에 따라 빈번한 조인이 발생하는 경우, 정규화 후 전략적인 반정규화를 통해 성능 최적화를 병행해야 함.

  • 결언: 기술사는 데이터의 중복 제거를 통한 관리 효율성과 시스템의 응답 속도 사이의 균형점을 찾는 데이터 아키텍처 설계 역량을 갖추어야 함.

댓글 없음: