[정보처리기사 실기] 정규화와 이상현상 (도부이결다조)
정규화에 대한 간단한 개념과
그 유명한 두부이거다줘 ㅋ의 개념과 예시
그리고 이상현상 삽살개 개념을 포스팅하겠습니당
정규화는 데이터베이스 설계 과정 중에서 중복을 최소화하고 데이터의 일관성을 유지하기 위해 데이터를 구조화하는 과정입니다. 관계형 데이터베이스에서는 테이블을 정규화하여 데이터 중복과 이상 현상을 방지하고 데이터를 효율적으로 관리할 수 있습니다.
도부이결다조 (두부이거다줘)
제1정규형 (1NF):
- 각 컬럼은 도메인 원자 값(Atomic value)만을 가집니다.
- 테이블의 각 열은 반드시 하나의 값만을 가집니다.
- 중복된 데이터를 피하기 위해 필요한 최소한의 열을 포함합니다.
예시: 주문 정보 테이블
- 주문번호(OrderID), 고객이름(CustomerName), 주문일자(OrderDate), 제품명(ProductName), 수량(Quantity) 등의 컬럼으로 구성됩니다.
- 각 주문은 주문번호를 기준으로 고유한 값이며, 주문에 대한 정보는 각 열에 하나의 값만 포함됩니다.
- 중복된 주문 정보는 피해야 하며, 필요한 최소한의 열로만 구성됩니다.
제2정규형 (2NF):
- 제1정규형을 만족하며, 부분 함수적 종속을 제거합니다.
- 테이블의 모든 비주요 속성이 기본 키에 완전히 종속됩니다.
예시: 주문 상세 정보 테이블과 제품 정보 테이블로 분리
- 주문 상세 정보 테이블: 주문번호(OrderID), 제품번호(ProductID), 수량(Quantity) 등의 컬럼으로 구성됩니다.
- 제품 정보 테이블: 제품번호(ProductID), 제품명(ProductName), 가격(Price) 등의 컬럼으로 구성됩니다.
- 주문 상세 정보 테이블에서는 주문번호를 기준으로 각 주문에 대한 제품 정보가 반복되지 않습니다.
제3정규형 (3NF):
- 제2정규형을 만족하며, 이행 함수적 종속을 제거합니다.
- 비주요 속성이 다른 비주요 속성에 종속되지 않도록 합니다.
예시: 제품 정보 테이블에서 비즈니스적 종속을 제거
- 제품 정보 테이블: 제품번호(ProductID), 제품명(ProductName), 카테고리(Category), 제조사(Manufacturer) 등의 컬럼으로 구성됩니다.
- 제품 정보 테이블에서는 제품명이나 제조사와 같은 비즈니스적 속성이 함께 저장되어 있지 않으며, 이행적 종속이 제거됩니다.
보이스-코드 정규형 (BCNF):
- 제3정규형을 만족하며, 결정자가 후보키인 경우를 처리합니다.
- 모든 결정자가 후보키이거나 후보키의 일부에만 속하는 경우에만 만족합니다.
예시: 주문 정보 테이블에서 보이스-코드 정규형 적용
- 주문 정보 테이블: 주문번호(OrderID), 고객번호(CustomerID), 제품번호(ProductID), 수량(Quantity) 등의 컬럼으로 구성됩니다.
- 주문 정보 테이블에서 주문번호와 고객번호는 모두 후보키이며, 모든 결정자가 후보키에 속하는지 확인합니다.
제4정규형 (4NF):
- 다치 종속을 제거합니다.
- 다치 종속이란 하나의 테이블의 특정 속성이 다른 속성의 여러 값에 종속되는 경우를 말합니다.
예시: 다치 종속을 제거한 주문 상세 정보 테이블
- 주문 상세 정보 테이블: 주문번호(OrderID), 제품번호(ProductID), 수량(Quantity) 등의 컬럼으로 구성됩니다.
- 다치 종속을 제거하여 주문번호와 제품번호 간의 관계를 분리하고, 다른 테이블에서 주문 상세 정보와 제품 정보를 관리합니다.
제5정규형 (5NF):
- 조인 종속을 제거합니다.
- 조인 종속이란 하나의 테이블의 속성이 다른 테이블의 속성들에 대해서도 종속되는 경우를 말합니다.
예시: 조인 종속을 제거한 주문 정보 테이블
- 주문 정보 테이블: 주문번호(OrderID), 고객번호(CustomerID), 주문일자(OrderDate) 등의 컬럼으로 구성됩니다.
- 조인 종속을 제거하여 주문 정보 테이블이 다른 테이블의 속성들에 대해 종속되지 않도록 설계합니다.
정규화는 데이터베이스 설계에서 데이터의 일관성과 효율성을 확보하기 위해 중요한 과정입니다. 하지만 지나치게 많은 정규화는 쿼리의 복잡성을 증가시키고 성능을 저하시킬 수 있으므로, 적절한 수준에서의 정규화가 필요합니다. 데이터베이스 설계 시 각 테이블이 어떤 정규형을 만족하는지 확인하고, 필요에 따라 정규화를 수행하여 데이터의 품질을 유지하도록 합니다.
정규화는 데이터베이스 설계에서 중복을 최소화하고 데이터의 일관성을 유지하기 위해 수행되는 과정입니다.
이상 현상은 데이터 중복과 관련하여 발생하는 문제 중 하나입니다.
삽살개(삽삭갱)
이상 현상의 종류:
- 삽입 이상(Insertion Anomaly): 데이터를 삽입할 때 원하지 않는 문제가 발생하는 현상입니다. 예를 들어, 주문 정보를 담은 테이블에서 주문 정보가 없는 경우에는 고객 정보를 삽입할 수 없는 문제가 발생할 수 있습니다.
- 갱신 이상(Update Anomaly): 데이터를 갱신할 때 일관성이 깨지는 현상입니다. 예를 들어, 특정 제품의 가격을 업데이트할 때 중복된 정보가 있는 경우 일부만 업데이트되어 정보의 불일치가 발생할 수 있습니다.
- 삭제 이상(Deletion Anomaly): 데이터를 삭제할 때 원하지 않는 데이터의 손실이 발생하는 현상입니다. 예를 들어, 특정 제품의 정보를 삭제하면 해당 제품을 주문한 주문 정보도 함께 삭제되어 원치 않는 데이터 손실이 발생할 수 있습니다.
정규화와의 연관성:
- 정규화는 이상 현상을 해결하기 위한 중요한 도구입니다. 특히 제2정규형 이상의 정규화 과정을 통해 부분 함수적 종속과 이행 함수적 종속을 제거함으로써 갱신 이상과 삭제 이상을 방지할 수 있습니다.
- 예를 들어, 주문 정보와 고객 정보가 함께 있는 테이블을 제2정규형에 맞게 주문 정보 테이블과 고객 정보 테이블로 분리함으로써 갱신 이상과 삭제 이상을 방지할 수 있습니다.
- 또한, 정규화는 삽입 이상을 방지하여 데이터의 일관성을 유지하는데 도움을 줍니다. 분리된 테이블 구조를 통해 삽입 이상이 발생하지 않도록 합니다.
정규화는 이상 현상을 방지하고 데이터베이스의 일관성을 유지하는데 중요한 역할을 합니다. 이상 현상을 최소화하고 데이터베이스의 품질을 향상시키기 위해 적절한 수준에서의 정규화가 필요합니다.
'KT에이블스쿨 5기 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 데이터베이스 목표 복구시간(RTO)/목표 복구시점(RPO) (0) | 2024.04.17 |
---|---|
[정보처리기사 실기] OSI 7계층,TCP/UDP 차이 (0) | 2024.04.15 |
[정보처리기사 실기] GOF(Gang of Four) 디자인패턴 (0) | 2024.04.14 |
[정보처리기사 실기] 객체지향설계 SOLID 5가지 원칙 (0) | 2024.04.14 |
[정보처리기사 실기] redo와 undo +은행거래예시 (0) | 2024.04.14 |