어제 향로, 비스타와 로깅 테이블 생성에 관한 밋업을 하면서 내가 작성해간 테이블 스키마를 수정 받을 기회가 있었다.
많은 것을 배우게 되어서 기록하려고 한다.
아래의 테이블 스키마를 이용해 잘못 작성된 테이블 스키마 내용을 수정해보려고 한다.
(1) 테이블 네이밍: 테이블이 나타내고자 하는 것을 앞에 쓴다.
위 테이블 예시는 영화의 할인 로그를 기록하는 테이블이다. 그래서 영화 할인을 의미하는 movie_discount라고 썼다. 그런데 이 테이블의 주된 목표는 할인(discount)를 기록하는 것이므로 discount가 앞에 들어가야한다. 따라서 discount_movie 로 작성하는 것이 맞다. 또 discount가 앞에 오면 유저에 대한 할인은 discount_user, 특별 할인은 discount_special와 같이 [ discount_ + ... ]의 형태로 확장할 수도 있다.
(2) PK가 되는 ID의 위치를 테이블 컬럼 명에 작성했다.
(3) 할인의 주체 setter_id: 일반적으로 사용되는 명확한 용어로 수정
할인의 주체라는 말은 다른 개발자나 데이터 엔지니어가 볼 때에도 명확하지 않아 좋지 않다. 할인 로그를 생성한 사람의 의미가 있는 '생성자' 라고 하는 것이 더 적합하다. 그렇게 하면 컬럼 명도 그에 맞는 creator_id 또는 user_id로 수정할 수 있다. 일반적으로 사용되는 용어를 사용해야한다.
(4) 사용하는 단어에 민감해지기: reset 과 cancle 의 차이
위에서는 운영에서 사용되는 용어 그대로 '초기화 한다'는 의미의 'reset'을 사용했는데 reset은 할인 값을 초기화 한다는 의미이고 cancle은 할인 적용된 것을 취소한다는 의미이다. 어느 쪽이 더 적합한지 생각해보면 할인을 적용했다가 취소하는 것이 조금 더 자연스럽기 때문에 cancle이라고 수정하는 것이 좋다. 마찬가지로 초기화 일시는 cancle_at(취소일시) 초기화 주체는(cancle_user_id)로 바꾼다.
(5) Timestamp with timezone 과 Date의 차이
기록 시간을 date로 작성했다. Timestamp with timezone은 UTC(국제 표준시)를 기준으로 시차를 고려한 (대한민국은 기준시 +9) 시간 값이 입력된다. PostgreSQL docs 참고 약어로 timestamptz라고 작성할 수도 있다. 2018-09-16 02:01:36.399357+03 와 같이 UTC 시간에 지역 시간이 반영되어 기록된다.
(6) Nullable 컬럼을 추가하기:
위에서는 데이터 타입(Type)과 Nullable을 분리하지 않았다. 이 둘을 분리해서 작성한다.
아래는 위의 내용을 반영해서 수정한 결과물이다.
* cancle -> cancel로 수정합니다. 😂
'백엔드 개발 > 백엔드 일기' 카테고리의 다른 글
#012. 백엔드 성장일기: [넥스트 스탭] 코틀린의 특징을 살려 리팩터링 하기 (0) | 2022.05.12 |
---|---|
#011. 백엔드 성장일기: PostGreSQL에서 🤦♀️의 글자수 확인하기 (0) | 2022.05.07 |
#009. 백엔드 주간 소식: 모각글 반상회, 깜짝 생일파티, 티코지 (0) | 2022.05.02 |
#008. 백엔드 성장일기: SQL 사용법( INNER OUTER JOIN 등) (0) | 2022.05.02 |
#007. 백엔드 성장일기: 주간 프리뷰(작은 동물 의자, 이별 휴가 등) (2) | 2022.04.20 |