Step-by-Step

[2] 기획 - 데이터 모델링 (1) ERD 다이어그램, 정규화 본문

프로젝트/Dreamers (Blog)

[2] 기획 - 데이터 모델링 (1) ERD 다이어그램, 정규화

희주(KHJ) 2023. 1. 25. 20:43

📜이전📜

[1] 기획 - 구현 내용 및 스토리 보드

 

 

사실 이 글을 작성하기 전에

데이터베이스 삽입, 삭제, 변경을 위해 많이 다듬었기 때문에

정규화 과정이 크게 의미 없지만 그래도 작성해보려고 한다. 

 

 

필요한 데이터 정리 

사용자 관련 아이디, 비밀번호, 이메일, 닉네임, 등급, 권한 
글 관련 글 번호, 제목, 내용, 작성날짜, 템플릿 번호, 해시태그
기타 등급 별 충족 글 개수, 해시 태그 검색 수

 

 

ERD 

> 정규화 전 그려본 ERD(다이어그램)

 

 

정규화

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스

 

제1 정규형 (1NF)

> 릴레이션에 속하는 속성의 속성 값이 모두 원자값(Atomic Value)으로 구성

> 원자값 : 더 이상 쪼개질 수 없는 단위

개체 부분
관계 부분

모든 릴레이션의 속성값은 원자값을 가진다고 가정하며 작성된 릴레이션이다.

원자값이 이루어져야 하는 부분은 해시태그(태그명), 작성(글번호) 이다.

 

해시태그 테이블의 태그 명 부분이 원자값으로 이루어져야 하기 때문에 글번호(PK), 태그명(PK)로 이중 PK를 두었다.

 

종속 관계도는 위와 같다. 사용자 릴레이션에서 사용자 릴레이션에서 닉네임, 비밀번호, 역할이 이메일에도 종속되어 있다.

 

 

제2 정규형 (2NF)

> 제1 정규형이면서 기본키(PK)에 속하지 않은 속성 모두가 기본키에 완전 함수 종속인 정규형

> 완전 함수 종속 : 종속자가 기본키에만 종속 (부분함수 종속 제거)

 

 

예를 들어)

과목 → 교수 종속관계와 교수 → 학과 종속관계가 한 릴레이션에 있을 경우를 보자

해당 과목이 사라지게 된다면 교수과 어떤 학과에 속해 있는지 알 수 없기 때문에

 

이런식으로 분리하여 과목의 삭제, 삽입 등은 교수가 학과에 소속된 정보에 영향을 미치지 않도록 하는 것이다.

 

내가 설계한 데이터베이스는 부분 함수 종속이 없어 1NF=2NF가 되었다.

 

 

 

 

제3 정규형 (3NF)

> 제2 정규형이면서 이행적 함수 종속성을 제거한 정규형

> 이행적 함수 종속 : X→Y, Y→Z, X→Z 세 경우가 모두 성립되는 경우

 

 

제1 정규형에서 나온 부분함수종속이다.

사용자 릴레이션에서 이메일을 제외한 나머지 속성들이 이메일에도 종속되어있다.

 

 

사용자 정보는 아이디 중심으로 돌아간다.

사용자 인증시 사용되는 정보가 (아이디, 비밀번호)이며, 비밀번호 찾기 또한 (아이디, 이메일)로 이루어지기 때문에

아이디 중심의 사용자 추가정보 릴레이션을 따로 작성하여 이메일 속성을 분리시켰다.

 

 

 

BCNF(Boyce and Codd Normal Form)

> 제3 정규형이면서, 함수 종속 관계에서 모든 결정자가 후보키(유일, 최소)인 경우

 

현재 각 테이블은 유일성, 최소성을 만족하는 기본키를 갖고 있으며 눈에 띄는 이상현상이 없다.

BCNF 또한 3NF와 동일하며 완성된 3NF로 구현을 진행하도록 하겠다.

 

 

 

 

[참조] ★

https://rebro.kr/160

 

Comments