목차
챕터4. 데이터베이스
4.2 ERD와 정규화 과정
- ERD Entity Relationship Diagram
- 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할
- 릴레이션 간의 관계를 정의한 것
- 서비스 구축 시 가장 먼저 신경 써야 할 부분
4.2.1 ERD의 중요성
- ERD: 시스템의 요구 사항을 기반으로 작성
- ERD를 기반으로 데이터베이스 구축
- 데이터베이스 구축 이후에도 디버깅 또는 비즈니스 프로세스 재설계 필요한 경우에 설계도 역할 담당
- 관계형 구조로 표현할 수 있는 데이터 구성에 유용
- 단점) 비정형 데이터 충분히 표현 불가
4.2.2 예제로 배우는 ERD
- 영업 부서의 ERD
- 영업 사원: 0~n명의 고객 관리
- 고객: 0~n개의 주문
- 주문: 1~n개의 상품
4.2.3 정규화 과정
- 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상현상 발생 → 해결
- 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정
- 데이터베이스 이상 현상:
- 회원이 한 개의 등급을 가져야 하는데 세 개의 등급을 가짐
- 삭제할 때 필요한 데이터가 같이 삭제
- 데이터 삽입 시, 하나의 필드 값이 NULL이 되면 안돼서 삽입하기 어려운 현상
- 데이터베이스 이상 현상:
- 정규형 원칙을 기반으로 정규화
- 정규화된 정도: 정규형 Normal Form으로 표현
- 기본 정규형: 제1정규형, 제2정규형, 제3정규형, 보이스/코드 정규형
- 고급 정규형: 제4정규형, 제5정규형
- 정규형 과정을 거쳐 테이블을 나눈다고 해서 성능이 100% 향상되는 것은 아님
- 조인을 해야하는 경우 발생 → 느려질 수 있음
- 서비스에 따라 정규화 또는 비정규화 과정 진행 필요
- 정규형 원칙
- 같은 의미를 표현하는 릴레이션이지만 좀 더 좋은 구조
- 자료의 중복성 감소
- 독립적인 관계는 별개의 릴레이션으로 표현
- 각각의 릴레이션은 독립적인 표현 가능
- 제1정규형
- 릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값 atomic value만으로 구성됨
- 릴레이션 속성 값 중에서 한 개의 기본키에 대해 두 개 이상의 값을 가지는 반복 집합 → 제거
- 제2정규형
- 릴레이션이 제1정규형, 부분 함수의 종속성을 제거한 형태
- 부분 함수의 종속성 제거: 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 것
- 릴레이션 분해 시, 동등한 릴레이션으로 분해
- 정보 손실이 발생하지 않는 무손실 분해
- 제3정규형
- 제2정규형이고 기본키가 아닌 모든 속성이 이행적 함수 종속을 만족하지 않은 상태
- 이행적 함수 종속 transitive FD
- A → B, B→ C 인 경우, 논리적으로 A → C 성립
- 집합 C가 집합 A에 이행적으로 함수 종속이 되었다고 함
- 이행적 함수 종속 transitive FD
- 제2정규형이고 기본키가 아닌 모든 속성이 이행적 함수 종속을 만족하지 않은 상태
- 보이스/코드 정규형 BCNF
- 제3정규형
- 결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관게에서 모든 결정자가 후보키인 상태
'Boaz > Computer Science' 카테고리의 다른 글
[CS 전공지식 #15] 챕터4-4~5. 데이터베이스의 종류와 인덱스 (0) | 2025.02.24 |
---|---|
[CS 전공지식 #14] 챕터4-3. 트랜잭션과 무결정 (0) | 2025.02.24 |
[CS 전공지식 #12] 챕터4-1. 데이터베이스의 기본 (0) | 2025.02.24 |
[CS 전공지식 #11] 챕터3-4. CPU 스케줄링 알고리즘 (0) | 2025.02.17 |
[CS 전공지식 #10] 챕터3-3. 프로세스와 스레드 (0) | 2025.02.17 |