[TIL]정보처리기사 실기/데이터베이스/정규화-2025.10.22

2025. 10. 22. 12:53대외활동/인공지능사관학교

728x90
반응형
SMALL

1. 요구사항 분석

정보처리기사 실기에서는 제시된 시나리오에서 기능적 요구사항과 비기능적 요구사항을 구분하고, 이를 토대로 데이터 구조를 도출하는 과정이 중요하다.

기능적 요구사항은 시스템이 제공해야 하는 서비스나 동작을 의미하며, 비기능적 요구사항은 품질 속성(성능, 보안, 안정성 등)을 포함한다.
요구사항은 명확성, 일관성, 검증 가능성의 세 가지 조건을 만족해야 하며 불필요한 중복이나 모호한 표현이 없어야 한다.

이번 학습에서는 실제 프로젝트 문서를 기반으로 “회원 관리”, “주문 관리” 시나리오를 분석하였다.
특히 ‘주문’ 엔터티에 고객 정보가 포함되어 있는 비정규 구조를 발견했고, 이를 통해 정규화 과정의 필요성을 이해했다.

 

2. 데이터베이스 설계

요구사항 분석 결과를 기반으로 개념적, 논리적, 물리적 설계의 단계를 구분하여 정리했다.

개념적 설계 단계에서는 엔터티와 관계를 정의하고, ERD로 표현한다.
예를 들어 “회원은 여러 주문을 할 수 있고, 주문은 여러 상품을 포함한다”는 관계를 통해 회원–주문(1:N), 주문–상품(N:M)의 구조를 도출했다.

논리적 설계 단계에서는 정규화를 통해 데이터 중복과 이상현상을 제거했다.
제1정규형에서는 반복 속성을 분리했고, 제2정규형에서는 기본키의 일부에만 종속된 속성을 제거했으며 제3정규형에서는 비키 속성 간 종속을 제거했다.

물리적 설계 단계에서는 인덱스 설정, 접근 경로, 저장 구조 등을 고려했다.
출제 유형상 DDL 명령문(예: CREATE TABLE, ALTER TABLE, DROP TABLE) 형태로 문제가 변형되어 나오는 경우가 많음을 확인했다.

 

3. 문제 풀이 과정

기출문제에서 “상품코드, 상품명, 단가, 수량, 주문번호, 고객명”으로 구성된 테이블이 제시되었다.
이 테이블은 상품과 주문 정보가 혼합되어 있어 이상현상이 발생하는 구조였다.

이를 다음과 같이 분리했다.

  • 주문(주문번호(PK), 고객명)
  • 상품(상품코드(PK), 상품명, 단가)
  • 주문상세(주문번호(FK), 상품코드(FK), 수량)

이 과정을 통해 제2정규형까지 달성할 수 있었고 데이터의 독립성과 무결성을 확보했다.

 

4. 학습 중 어려웠던 점

요구사항 분석에서 "기본키를 어떻게 정의해야 하는가"가 가장 어려웠다.
특히 식별자와 후보키 개념이 혼동되었는데 식별자는 레코드를 유일하게 구분하는 최소 속성이며 후보키는 식별자가 될 수 있는 속성의 집합임을 다시 정리했다.

또한 문제에 따라 “기본키가 무엇인지 직접 지정되어 있지 않은 경우”가 많았기 때문에 관계 구조를 통해 합리적으로 추론하는 연습이 필요했다.

 

5. 회고

요구사항 분석과 데이터베이스 설계는 실무에서도 가장 기본적이지만 동시에 오류가 많이 발생하는 영역이다.
정규화의 목적은 단순히 데이터를 나누는 것이 아니라 데이터의 일관성과 유지보수성을 높이는 데 있다는 점을 다시 인식했다.
문제 풀이 시 “왜 이 속성을 분리했는가”를 스스로 설명할 수 있을 정도로 논리적으로 접근해야 한다.

다음 학습에서는 SQL과 트랜잭션 제어, 뷰(View), 인덱스(Index)를 중심으로 실습을 진행할 예정이다.

728x90
반응형
LIST