기술면접 대비 - ERD와 정규화 과정
오늘은 ERD와 정규화 과정에 대하여 간단하게 정리해보고자 한다.
ERD(Entity Relationship Diagram)
ERD는 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션(테이블) 간의 관계들을 정의한 것이다.
Entity(엔터티)
엔터티는 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사를 의미한다.
ERD의 중요성
ERD는 시스템의 요구 사항을 기반으로 작성되며 이 ERD를 기반으로 데이터베이스를 구축한다.
데이터베이스를 구축한 이후에도 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우에 설계도 역할을 담당하기도 한다.
정규화
정규화란 릴레이션(테이블) 간의 잘못된 종속 관계로 인하여 데이터베이스 이상 현상이 일어나서 이를 해결하거나,
저장 공간을 효율적으로 사용하기 위해 테이블을 여러 개로 분리하는 과정이다.
제 1 정규형
테이블의 모든 도메인이 더 이상 분해될 수 없는 원자 값(atomic value)만으로 구성되어야 한다.
모든 도메인은 반드시 하나의 값만을 가져야 한다.(특정 칼럼에 다수의 값이 들어가면 안됨)
목적 - 원자 값이 아닌 도메인을 분해
Domain(도메인)
도메인이란 테이블에 포함된 각각의 속성들이 가질 수 있는 값의 집합을 말한다.
(ex, 성별 속성의 도메인 - {남, 여})
제 2 정규형
엔터티의 모든 일반 속성들은 반드시 모든 주식별자에 종속되어야 한다.
주식별자가 복수 존재할 경우, 일반 속성이 모든 주식별자에 종속되지 않고 특정 주식별자에만 종속된다면 정규화가 필요하다.
목적 - 부분 함수 종속성을 제거
제 3 정규형
주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다.
주식별자가 아닌 일반속성에게 종속된다면 정규화 필요하다.
목적 - 이행 함수 종속성을 제거
정규화의 장단점
장점
- 데이터베이스 이상현상 제거
- 데이터 구조의 정확성과 일관성 유지 및 보장
- 일반적으로 입력, 수정, 삭제 성능 향상
단점
- 데이터베이스의 규모의 따라 테이블 간의 JOIN 연산 증가
➡ 조회 기능 저하 가능성
Reference
'🖥CS > 기술면접대비🔎' 카테고리의 다른 글
인덱스 (0) | 2023.01.04 |
---|---|
트랜잭션 (0) | 2022.12.30 |
http와 https (2) | 2022.12.02 |
[Java] static, final, staic final 차이 (0) | 2022.11.17 |
[Java] 접근 제어자(private, default, protected, public) (0) | 2022.11.02 |