DB를 만드는 방법
2019. 10. 12. 00:55ㆍ코딩 부트캠프/회고
기업 협업에서 DB를 제작하면서 느낀 점과 어떻게 Db를 만들어야 하는지에 대하여 정리를 해보고자 한다.
기업에서는 DB를 만들 때 4가지 조건을 주었다.
- 플랫폼 별로 각각의 테이블을 가지도록 만들어야 한다.
- 일, 주, 월 간의 차이를 저장하는 로그 테이블 제작
- 모든 플랫폼의 콜럼을 동일하게 만들어야 한다.
- 사용자 키와 url이 들어있는 엑셀 파일에서 시작해야 한다.
처음엔 그냥 말해준 조건 그대로 플랫폼 별로 각각의 테이블을 만들어 주고 또 각각의 로그 테이블을 만들어 주었다.
조건을 그대로 옮긴 테이블이 완성되었다. 하지만 너무 비효율 적이고 구조는 간단하지만 한눈에 보기가 너무 어려웠다.
새로운 플랫폼을 추가할 경우 새로 생겨나는 테이블이 8개나 되었다. 너무 비효율 적이었다.
그래서 엔지니어의 조언을 받아 새로운 테이블을 만들었다.
각각 유저, 플랫폼, 비디오,구독, 증감 테이블이 있고 조인 테이블을 만들어 인덱스 값으로 하나의 테이블에 합치는 방법으로 다시 만들었다.
CTO 분에게 컨펌을 신청했고 수정사항과 DB를 제작할 때 조심해야 할 점들을 말해 주셨다.
- 플랫폼 이름은 코드성 테이블로 만드는게 좋다 오타가 나서 플랫폼 이름이 잘못 저장되어 버리면 안 되니까
- 인덱스 (key) 값은 테이블의 이름으로 설정하는 것이 좋다.
- Logical 테이블과 Physical 테이블을 만들어 둬야 한다. 이 테이블을 보는 사람들이 이해할 수 있도록
- 쿼리에 포함되는 단어 Update, name 등은 사용하지 않는 것이 좋다.
- 한 번에 다 불러오는 조인 테이블이 아닌 이상 바로바로 연결해 주는 것이 좋다.
- 가장 데이터가 많이 들어가는 테이블에서 어떻게 효과적으로 값을 가져올 것인지 고민해야 한다.
그리고 이를 토대로 최종본을 만들었다.
우선 따로 관계를 맺어줄 필요가 없는 테이블들을 하나로 만들어 주었다.
엑셀 파일을 Platform 테이블에 담아주었고 각각의 테이블들은 P_key로 관계를 맺어 주었다.
그리고 subscribe, video 테이블에 년, 월, 일, 주 가 들어가는 테이블을 만들어서 일, 주, 월간의 차이를 구할 때 쉽게 데이터에 접근이 가능하도록 만들었다.