3학년 1학기/데이터베이스(DB)
[ 데이터베이스 ] 20. DB 테이블을 잘못 설계한다면?
쫑알bot
2024. 2. 7. 18:31
728x90
1. 중복 데이터 문제
테이블에는 위와 같은 정보를 하나의 테이블로 만들었다.
이런 테이블에 데이터를 추가해보자
위와 같이 공통적으로 같이 들어가는 경우가 생길 수가 있다.
이런 경우에는 [ 저장 공간 낭비 / 실수로 인한 데이터 불일치 가능성 ] 문제가 생긴다.
만약 부서가 정해지지 않은 직원이 있을 경우에는?
부서에 관련된 부분은 모두 Null로 해야한다.
이번에는 임직원이 한 명도 없는 부서를 입력하려면?
이런 경우에는 직원 관련된 attribute에 모두 null이 들어간다.
이런 일이 생기는 이유
별개의 관심사가 한 테이블에 있기 때문이다.
이와 같이 두 개의 테이블로 나누면
위에 있었던 문제와
Deletion , Edit 등을 수행할 때 발생하는 문제까지 해결 가능하다.
2. Spurious Tuples
사진 촬영 회사의 Database가 다음과 같다고 생각해보자
이 두 개의 테이블을 Join 하려고 한다.
natural join을 하게되면, 같은 Attribute가 존재할 경우에
그 Attribute의 값에 대해서 비교를 한 뒤, 같으면 Join을 시킨다.
그에 대한 결과는 다음과 같다
이상한 게 Dept_id 는 같은데 Dept_name이 달라서 두 개의 튜플이 더 생긴다.
이렇게 원래는 없던 Tuple을 spurious tuple이라고 한다.
해결법은 테이블을 한 번 더 나누는 것이다.
[ 요약 ]
(출처)
유튜브 쉬운코드