- 중복 데이터 문제
IT 회사의 데이터베이스를 구축하는데 다음과 같이 테이블을 만들었다고 가정.

1.1 Insertion anomalies





테이블 설계시 한 개의 관심사를 한 테이블에 있게 하는게 좋다. (아래와 같다)

1.2 Deletion anomalies


1.3 Update anomalies


- Spurios Tuples (가짜 튜플)
사진 촬영 회사의 데이터베이스를 구축하는데 다음과 같이 테이블을 만들었다고 가정해 보겠습니다.




1:1 매칭되어 4개가 나올거라는 예상과 다르게 6개의 tuple이 생성.
그러나 면밀하게 살펴보면 2*2의 조합이 Jeju에서 발생한다.

아래는 바람직한 설계 (모두 분할해줘야함)

- NULL 값이 많아짐으로써 생기는 문제점들
- null 값이 있는 column으로 join 하는 경우 상황에 따라 예상과 다른 결과 발생
- null 값이 있는 column에 aggregate function(집계함수)을 사용했을 때 주의 필요
예를들어 'COUNT 특정칼럼' 으로 검색을 하면 null값은 계산하지 않음
그러나 COUNT (*)로 검색을 하면 null값을 포함해서 계산함.
- 불필요한 storage 낭비
- 올바른 DB schema 설계
- 의미적으로 관련있는 속성들끼리 테이블을 구성
- 중복 데이터를 최대한 허용하지 않도록 설계
- join 수행 시 가짜 데이터가 생기지 않도록 설계
- 되도록이면 null 값을 줄일 수 있는 방향으로 설계
참고사항 : 성능 향상을 위해 일부러 테이블을 나누지 않는 경우도 있습니다.