상세 컨텐츠

본문 제목

DB 설계의 핵심

Database

by 개복신 개발자 2025. 3. 17. 13:03

본문

반응형

DB 설계의 핵심은 '중복 없애기'

데이터 중복이 많으면 이상현상이 발생한다. 

이게 무슨 말인지 아래 예시로 알아보자.

users (사용자)

id 이름

1 박재성
2 김유찬

posts(게시글)

id 제목 내용 작성자

1 [속보] 개발자 채용 확대 내용1 박재성
2 취업 꿀팁 공유합니다! 내용2 박재성
132 어제 면접 보고 온 썰 내용3 박재성

위의 표와 같이 게시글 데이터가 DB에 많이 쌓여있다고 가정하자. 여기서 박재성이 쓴 게시글이 3개가 있다고 하자. 그러다 어느 날 박재성이라는 사람이 박지성으로 개명을 했다. 그래서 게시글에 작성된 작성자의 이름도 전부 박재성에서 박지성으로 고쳐주어야 한다. 그럼 위 게시글의 모든 데이터를 뒤져서 박재성이라는 이름을 전부 찾아서 박지성으로 고쳐야 한다.

users (사용자)

id 이름

1 박지성
2 김유찬

posts(게시글)

id 제목 내용 작성자

1 [속보] 개발자 채용 확대 내용1 박지성
2 취업 꿀팁 공유합니다! 내용2 박지성
132 어제 면접 보고 온 썰 내용3 박재성

그런데 위 테이블에서 1, 2번 게시글의 작성자 이름만 고치고, 실수로 132번의 게시글을 안 고쳤다. 그러다 6개월 정도가 지난 후 132번 게시글에 신고가 들어왔다. 그런데 데이터베이스에서 작성자 이름인 박재성이라는 사용자를 암만 뒤져도 안 나오는 것이다. 즉, 데이터가 꼬여버린 것이다.

이런 문제가 발생한 가장 근본적인 이유는 데이터 중복 때문이다. 중복되는 데이터가 많으면 많을수로 무언가를 수정할 때 중복되는 모든 데이터를 찾아서 고쳐야 한다. 이 때, 실수로 중복된 데이터를 누락해서 수정을 하지 않는 경우가 발생하고, 이렇게 되면 데이터들 사이에 모순이 생겨버린다.

저장된 데이터들 중에서 모순되는 상황이 생긴 현상을 보고 **이상현상(Anomaly)**라고 얘기한다. 위의 경우는 이상현상(Anomaly) 중 **갱신 이상(Update Anomaly)**에 해당한다. DB 설계 할 때 이 용어는 하나도 중요하지 않으니 눈으로 보고만 넘어가자.

이런 문제를 해결하기 위해 만들어낸 DB 설계 방법이 **정규화(Normalization)**다.

 

정규화(Normalization)

결국은 데이터 중복을 없애기....

🚀 DB 설계 과정

1. 필요로 하는 데이터 파악하기

디자인 혹은 요구사항 명세서를 통해 필요한 데이터들을 파악한다. 보통은 구성된 디자인을 토대로 파악한다

2.그룹핑

상위 개념을 찾아 맵핑(mapping) 한다.

movie_name, actor, running_time.... -> movie?

각각의 데이터들의 부모를 찾아서 분류한다

 

3. 6가지 규칙에 따라 테이블 분리

반응형

'Database' 카테고리의 다른 글

관련글 더보기

댓글 영역