[DB설계]공통코드는 어떻게 만들까?(예시)

[DB설계]공통코드는 어떻게 만들까?(예시)

회사에서 스터디를 진행하고있다. 스터디속에 부장님의 특급 강의도 함께 있어서 정말 많이 배우고있다.
스터디 넘 재밌다!!!
스터디동안에 각자 만들 사이트를 하나씩 정했다. 나는 백신후기웹사이트!!
DB설계를 보여드리고 피드백은 받았다.

내가 작성한 리뷰테이블

내가 처음 작성한 리뷰테이블이다.
백신종류와 6가지정도 되는 증상이 함께 들어가 있다.

  • 백신종류
백신종류
AZ 아스트라제네카
DO 모더나
PH 화이자
JA 얀센
  • 증상(강도보단 유무를 받기로 함)
    1. 발열유무
    2. 통증(근육통,두통,몸살)유무
    3. 기침유무
    4. 부정출혈유무
    5. 오한유무
    6. 설사유무

이렇게 내가 짠 프로그램을 설명드리니 부장님은 아래와 같은 피드백을 주셨다.

💬 부장님: 공통코드로 만들어보세요




공통코드?

공통코드란 데이터 속성에 사용되는 공통적인 값을 코드로 표현하는 것이다.
공통코드를 사용하면 좋은 장점은 무엇일까?

  • 공통코드 장점
    1. 데이터 유연성: 현재 4개의 백신종류에서 추가 승인 받은 백신이 생겼다면? 공통코드에서는 코드 하나만 추가하면 끝이기때문에 유연성이 높다.
    2. 데이터 명칭의 일관성: 아스트라제네카를 누군가는 아스트라 제네카라고 띄어 쓸 수 도 있다. 코드를 통해 명칭의 일관성을 유지하여 데이터 정합성을 높일 수 있다.




내가 작성한 공통코드 테이블

열심히 구글링해서 아래와 같이 공통코드를 구성해보았다. 아래와 같은 궁금증이 생겼다.

  • 의문점
    1. 백신타입을 공통코드로 써야하는 이유가 뭘까? 어차피 한 컬럼에 한 개의 값만 들어가는데..굳이..
    2. 공통코드를 사용한다면 증상이 1개 이상 있는 사람은 어떻게 db에 넣지? -> 리뷰테이블에서 증상부분들을 하나로 합치고 Varchar값으로 콤마로 구분해서 넣을까? -> 그럼 어떻게 보여주지? 보여줄땐 split해서 보여주면 될까?

고민하다가 팀장님께 물어봤는데 바로 해결책을 알려주셨다.
팀장님은 역시 천재…빛과 소금😀




😎 의문점에 대한 팀장님의 명쾌한 조언

💬 김팀장님:
테이블은 성격이 다른 컬럼은 다른 테이블로 나누어야합니다.
현재 리뷰테이블은 성격이 다른 컬럼들이 한 곳에 모여있어서 여러 의문점이 생기신 것 같아요.
컬럼의 성격에 따라 분류해보세요
증상은 성격이 다르니까 다른 테이블로 뺀 뒤 reviewId와 함께 PK를 걸면 좋을거예요. 일대다의 관계.
공통코드테이블을 위처럼 작성하면 명칭이 헷갈릴 수 있어요. 코드그룹, 코드, 코드명, 사용여부, 정렬순번을 기본적으로 사용하는 게 어때요?




공통코드 테이블

내가 고민했던 모든 것은 테이블을 다시 설계하면 다 해결되는 문제였다!
팀장님의 조언을 토대로 테이블을 다시 나누었다.

Comments