오래 못 할 짓 하지 않기

[ 데이터베이스 ] 20. DB 테이블을 잘못 설계한다면? 본문

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이라고 한다.

 

해결법은 테이블을 한 번 더 나누는 것이다.

 

 

[  요약  ]

 

(출처)

유튜브 쉬운코드