Day 3: 정규화와 DB 설계
- 정규화(Normalization)
- 1NF, 2NF, 3NF, BCNF
- 이상현상(Anomalies) 방지
- ERD(Entity Relationship Diagram) 작성
- 엔티티(Entity), 관계(Relationship), 속성(Attribute)
- 식별자(Primary Key), 외래키(Foreign Key)
- 실무 설계 예시
- 고객, 주문, 상품 테이블 설계
- 정규화 단계별 적용 사례
데이터베이스를 효율적으로 운영하기 위해서는 중복 최소화, 무결성 유지, 데이터 일관성을 보장할 수 있도록 테이블을 설계해야 한다. 이를 위해 정규화 과정을 거치고, ERD를 통해 데이터 모델을 체계적으로 표현한다. 또한 실무 환경에 맞춰 예시를 살펴봄으로써 각 단계를 구체적으로 이해할 수 있다.
1. 정규화(Normalization)
정규화는 테이블 설계를 체계적으로 다듬어 **데이터 중복(중복 저장)**과 **이상 현상(Anomalies)**을 최소화하기 위한 일련의 규칙이다. 대표적으로 아래 단계를 거쳐 설계를 개선한다.
1.1 1NF (제1정규형)
- 원자성(Atomicity): 컬럼(속성) 값이 더 이상 분 해할 수 없는 원자 값(Scalar)만 가져야 한다.
- 예)
주소컬럼에 시·도·도로명·우편번호 등 여러 정보를 합쳐 저장하면 안 된다.
- 예)
- 반복 그룹(Repeated Group) 제거: 여러 값이 한 컬럼에 묶여 있지 않도록 설계.
1.2 2NF (제2정규형)
- 부분 함수 종속(Partial Dependency) 제거:
- 복합 키(두 개 이상의 컬럼으로 구성된 PK)가 존재할 경우, PK의 일부 컬럼에만 종속되는 속성을 분리한다.
- 1NF를 만족한 테이블 중, 기본 키 전체가 아닌 일부만으로 함수 종속이 발생하는 경우를 제거.
1.3 3NF (제3정규형)
- 이행적 함수 종속(Transitive Dependency) 제거:
- 기본 키가 아닌 다른 컬럼이 또 다른 비키(Non-key) 컬럼을 결정(종속)해서는 안 된다.
- 예)
회원(회원ID, 이름, 부서ID, 부서명)테이블에서부서명은회원ID가 아니라부서ID에 종속. → 부서 정보를 별도 테이블로 분리.