오래 못 할 짓 하지 않기
[ 데이터베이스 ] 20. DB 테이블을 잘못 설계한다면? 본문
728x90
1. 중복 데이터 문제
테이블에는 위와 같은 정보를 하나의 테이블로 만들었다.
이런 테이블에 데이터를 추가해보자
위와 같이 공통적으로 같이 들어가는 경우가 생길 수가 있다.
이런 경우에는 [ 저장 공간 낭비 / 실수로 인한 데이터 불일치 가능성 ] 문제가 생긴다.
만약 부서가 정해지지 않은 직원이 있을 경우에는?
부서에 관련된 부분은 모두 Null로 해야한다.
이번에는 임직원이 한 명도 없는 부서를 입력하려면?
이런 경우에는 직원 관련된 attribute에 모두 null이 들어간다.
이런 일이 생기는 이유
별개의 관심사가 한 테이블에 있기 때문이다.
이와 같이 두 개의 테이블로 나누면
위에 있었던 문제와
Deletion , Edit 등을 수행할 때 발생하는 문제까지 해결 가능하다.
2. Spurious Tuples
사진 촬영 회사의 Database가 다음과 같다고 생각해보자
이 두 개의 테이블을 Join 하려고 한다.
natural join을 하게되면, 같은 Attribute가 존재할 경우에
그 Attribute의 값에 대해서 비교를 한 뒤, 같으면 Join을 시킨다.
그에 대한 결과는 다음과 같다
이상한 게 Dept_id 는 같은데 Dept_name이 달라서 두 개의 튜플이 더 생긴다.
이렇게 원래는 없던 Tuple을 spurious tuple이라고 한다.
해결법은 테이블을 한 번 더 나누는 것이다.
[ 요약 ]
(출처)
유튜브 쉬운코드
'3학년 1학기 > 데이터베이스(DB)' 카테고리의 다른 글
[ 데이터베이스 ] 22. DB 정규화 ( Normalization ) (0) | 2024.02.09 |
---|---|
[ 데이터베이스 ] 21. Functional Dependency (FD : 함수 종속) (0) | 2024.02.08 |
[ 데이터베이스 ] 19. MVCC 개념 (2) MYSQL (0) | 2024.02.06 |
[ 데이터베이스 ] 18. MVCC 개념 (0) | 2024.02.06 |
[ 데이터베이스 ] 17. LOCK을 활용한 concurrency control ( 2PL protocol ) (0) | 2024.02.05 |