1. 숨어있는 중복을 찾아라.
예시)
- posts (게시글)
| id | 제목 | 내용 | 좋아요 수 | 사용자 id (FK) |
| 1 | 제목1 | 내용1 | 2 | 1 |
- users (사용자)
| id | 이름 |
| 1 | 송진성 |
| 2 | 김땡땡 |
- likes (좋아요)
| id | 사용자 id (FK) | 게시글 id (FK) |
| 1 | 1 | 1 |
| 2 | 2 | 1 |
데이터 중복 발생시, 특정 데이터를 수정하면, 그 데이터와 중복되는 모든 데이터를 같이 수정해야 한다. 이 관점으로 예시 테이블을 본다.
2번 사용자가 1번 게시글 좋아요를 삭제했다고 가정하면, likes 테이블에서 데이터를 삭제하고 posts 테이블 좋아요 수도 수정해야 한다.
즉, 특정 데이터 수정시 다른 데이터도 같이 수정해야 한다. 이런 경우를 숨어있는 중복이라고 한다. 주로 집계(합계, 평균, 최대값 등)값에서 나타난다.
이런 원본 데이터로부터 계산되는 파생 데이터는 원본과 별개로 저장하면 불일치 가능성이 생긴다.
숨은 데이터 중복을 없애려면, posts 테이블의 좋아요 수 컬럼을 삭제한다. 그리고 좋아요 수는 likes 테이블의 특정 컬럼값을 필터링하여 카운팅하는 식으로 구한다.
- posts (게시글)
| id | 제목 | 내용 | 사용자 id (FK) |
| 1 | 제목1 | 내용1 | 1 |
- users (사용자)
| id | 이름 |
| 1 | 송진성 |
| 2 | 김땡땡 |
- likes (좋아요)
| id | 사용자 id (FK) | 게시글 id (FK) |
| 1 | 1 | 1 |
비전공자도 이해할 수 있는 DB 설계 입문/실전| JSCODE 박재성 - 인프런 강의
현재 평점 4.9점 수강생 1,506명인 강의를 만나보세요. 비전공자 입장에서도 쉽게 이해할 수 있고, 실전에서 바로 적용 가능한 'DB 설계 입문/실전' 강의를 만들어봤습니다! 복잡한 개념을 몰라도
www.inflearn.com
'강의 실습 > 비전공자도 이해할 수 있는 DB 설계 입문 실전' 카테고리의 다른 글
| [실습] 요구사항을 보고 DB 설계해보기 - JSCODE 커뮤니티 (2) (0) | 2026.03.02 |
|---|---|
| [실습] 요구사항을 보고 DB 설계해보기 - JSCODE 커뮤니티 (1) (0) | 2026.02.28 |
| [규칙 5] 가짜 중복과 진짜 중복을 구별해라 (0) | 2026.02.26 |
| [규칙 4] 데이터 중복이 발생하는 컬럼이 있는지 확인해라 (0) | 2026.02.25 |
| [규칙 3] 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악해봐라 - 6 (0) | 2026.02.24 |
댓글