💡 데이터베이스
란?
데이터베이스(DB, Database)는 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음
💡 ERD
란?
ERD(Entity Relationship Diagram)는 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계들을 정의한 것
비정형 데이터
: 비구조화 데이터로, 미리 정의된 데이터 모델이나 정의된 방식이 없는 정보
🔗 ERD 예제
💡 정규화 과정
이란?
릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정
데이터베이스 이상 현상
: 회원이 한 개의 등급을 가져야 하는데 세 개의 등급을 갖거나, 삭제할 때 필요한 데이터가 같이 삭제되고 데이터를 삽입해야 하는데 하나의 필드값이 NULL이 되면 안되어서 삽입하기 어려운 현상
참고 : 정규화 과정을 거친다고 성능이 100% 좋아지는 것은 아님
👉 테이블을 나누게 되면 어떠한 쿼리는 조인을 해야 하는 경우도 발생해서 오히려 느려질 수 있음
❗️ 서비스에 따라 정규화 또는 비정규화 과정을 진행해야 함
💡 정규형 원칙
이란?
같은 의미를 표현하는 릴레이션의 경우
💡 제1 정규형
이란?
릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값(atomic value)만으로 구성되어야 함
👉 한 개의 기본키에 대해 두 개 이상의 값을 가지는 반복 집합이 있어서는 안 됨
💡 제2 정규형
이란?
릴레이션이 제1 정규형이며 부분 함수의 종속성을 제거한 형태
👉 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적
💡 제3 정규형
이란?
릴레이션이 제2 정규형이고 기본키가 아닌 모든 속성이 이행적 함수 종속(transitive FD)을 만족하지 않는 상태
이행적 함수 종속
: A->B와 B->C가 존재하면 논리적으로 A->C가 성립하는데, 이때 집합C가 집합A에 이행적으로 함수 종속 되었다고 함.
💡 보이스/코드 정규형 (BCNF)
이란?
릴레이션이 제3 정규형이고, 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태
👉 결정자가 후보키가 아닌 함수 종속 관계를 제거
결정자
: 함수 종속 관계에서 특정 종속자(dependent)를 결정짓는 요소
X->Y 일 때 'X'는 결정자, 'Y'는 종속자