[DB설계]공통코드는 어떻게 만들까?(예시)
회사에서 스터디를 진행하고있다. 스터디속에 부장님의 특급 강의도 함께 있어서 정말 많이 배우고있다.
스터디 넘 재밌다!!!
스터디동안에 각자 만들 사이트를 하나씩 정했다. 나는 백신후기웹사이트!!
DB설계를 보여드리고 피드백은 받았다.
내가 작성한 리뷰테이블
내가 처음 작성한 리뷰테이블이다.
백신종류와 6가지정도 되는 증상이 함께 들어가 있다.
- 백신종류
백신종류 | 값 |
---|---|
AZ | 아스트라제네카 |
DO | 모더나 |
PH | 화이자 |
JA | 얀센 |
- 증상(강도보단 유무를 받기로 함)
- 발열유무
- 통증(근육통,두통,몸살)유무
- 기침유무
- 부정출혈유무
- 오한유무
- 설사유무
이렇게 내가 짠 프로그램을 설명드리니 부장님은 아래와 같은 피드백을 주셨다.
💬 부장님: 공통코드로 만들어보세요
공통코드?
공통코드란 데이터 속성에 사용되는 공통적인 값을 코드로 표현하는 것이다.
공통코드를 사용하면 좋은 장점은 무엇일까?
- 공통코드 장점
- 데이터 유연성: 현재 4개의 백신종류에서 추가 승인 받은 백신이 생겼다면? 공통코드에서는 코드 하나만 추가하면 끝이기때문에 유연성이 높다.
- 데이터 명칭의 일관성:
아스트라제네카
를 누군가는아스트라 제네카
라고 띄어 쓸 수 도 있다. 코드를 통해 명칭의 일관성을 유지하여 데이터 정합성을 높일 수 있다.
내가 작성한 공통코드 테이블
열심히 구글링해서 아래와 같이 공통코드를 구성해보았다. 아래와 같은 궁금증이 생겼다.
- 의문점
- 백신타입을 공통코드로 써야하는 이유가 뭘까? 어차피 한 컬럼에 한 개의 값만 들어가는데..굳이..
- 공통코드를 사용한다면 증상이 1개 이상 있는 사람은 어떻게 db에 넣지? -> 리뷰테이블에서 증상부분들을 하나로 합치고 Varchar값으로 콤마로 구분해서 넣을까? -> 그럼 어떻게 보여주지? 보여줄땐 split해서 보여주면 될까?
고민하다가 팀장님께 물어봤는데 바로 해결책을 알려주셨다.
팀장님은 역시 천재…빛과 소금😀
😎 의문점에 대한 팀장님의 명쾌한 조언
💬 김팀장님:
테이블은 성격이 다른 컬럼은 다른 테이블로 나누어야합니다.
현재 리뷰테이블은 성격이 다른 컬럼들이 한 곳에 모여있어서 여러 의문점이 생기신 것 같아요.
컬럼의 성격에 따라 분류해보세요
증상은 성격이 다르니까 다른 테이블로 뺀 뒤 reviewId와 함께 PK를 걸면 좋을거예요. 일대다의 관계.
공통코드테이블을 위처럼 작성하면 명칭이 헷갈릴 수 있어요. 코드그룹, 코드, 코드명, 사용여부, 정렬순번을 기본적으로 사용하는 게 어때요?
공통코드 테이블
내가 고민했던 모든 것은 테이블을 다시 설계하면 다 해결되는 문제였다!
팀장님의 조언을 토대로 테이블을 다시 나누었다.