[Database]이상현상에 대해 말해주세요
이상현상
데이터베이스 설계를 잘못하게 되었을 경우 불필요한 데이터 중복이 발생하여 릴레이션에 대한 데이터의 삽입 갱신 삭제 연산 수행시에 부작용이 발생하는 것
삽입이상
삽입시에 불필요한 데이터도 삽입해야하는 문제
예시
사용자(User) 테이블:
| 사용자 ID | 사용자 이름 | 주문 ID | | --- | --- | --- | | 1 | John | 1 | | 2 | Lisa | 2 | | 3 | David | ❌ |
사용자 정보를 삽입할 때 주문 ID를 함께 삽입하지 않은 경우, 세 번째 사용자(David)는 주문 정보가 없습니다. 이로 인해 데이터의 일관성이 훼손된다.
갱신이상
중복 레코드가 있는 있는 경우 일부만 변경해서 데이터가 불일치 하는문제
예시
주문(Order) 테이블:
David가 이름을 David Pru 로 바꾸려고 하는경우 주문 3의 사용자 이름만 변경되고 다른 중복 컬럼들의 값이 변경되지 않아서 발생하는 문제
| 주문 ID | 주문 내역 | 사용자 ID | 사용자 이름 | | --- | --- | --- | --- | | 1 | 상품 A | 1 | John | | 2 | 상품 B | 2 | Lisa | | 3 | 상품 C | 3 | David Pru | | 4 | 상품 D | 3 | David |
삭제이상
레코드를 삭제하는 경우 필요 데이터까지 삭제되는 문제
예시
주문(Order) 테이블:
| 주문 ID | 주문 내역 | 사용자 ID | 사용자 이름 | | --- | --- | --- | --- | | 1 | 상품 A | 1 | John | | 2 | 상품 B | 2 | Lisa | | 3 | 상품 C | 3 | David |
특정 주문(ID 3)을 삭제할 때 해당 주문에 연결된 사용자 정보가 함께 사라진다. 주문만 삭제하려 하였는데 사용자 ID와 이름이 함께 사라진다.
⇒ 이러한 이상현상을 해결하기 위해서 데이터 베이스 설계 단계에서 정규화과정이 필요함
Last updated