데이터 중복이 많으면 이상현상이 발생한다.
이게 무슨 말인지 아래 예시로 알아보자.
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)**다.
결국은 데이터 중복을 없애기....
디자인 혹은 요구사항 명세서를 통해 필요한 데이터들을 파악한다. 보통은 구성된 디자인을 토대로 파악한다
상위 개념을 찾아 맵핑(mapping) 한다.
movie_name, actor, running_time.... -> movie?
각각의 데이터들의 부모를 찾아서 분류한다
DB 설계의 규칙 첫번째, 한 칸 한 정보 (0) | 2025.03.17 |
---|---|
데이터베이스 네이밍 규칙 (0) | 2025.03.17 |
DB 개념 (0) | 2025.03.17 |
댓글 영역