이번 프로젝트에서는 DB에서 TRUE, FALSE를 지정해주어야 하는 것들이 꽤 있다. 예를 들면 쿠폰의 활성화 상태라든가, 해당 자동차가 선루프 옵션을 가지고 있는지의 여부 등이다. 처음엔 0은 FALSE, 1은 TRUE로 관리해주면 되겠지 싶어서 INT로 데이터 타입을 등록하였는데, 종범님께서 booltype 혹은 tinyint를 쓰는 것이 어떻겠냐고 피드백을 주셨다.
BOOLTYPE은 boolean, 자주 들어본 용어였지만 tinyint는 처음 들어보는 용어였다. 말 그대로 작은 숫자를 관리하기 위한 데이터 타입일 거라 생각했지만 BOOLEAN과 TINYINT의 차이가 무엇인지 궁금해졌다. 그대로 구글링해보았고, stackoverflow에서 아래와 같은 내용을 알게 되었다.
정리하자면 boolean과 tinyint는 동의어다. 하지만 boolean은 언제나 true와 false를 나타내는 반면, tinyint는 0과 1일 뿐이다.
이외에도 여러 글들을 찾아보았는데 MySQL을 사용하는 많은 개발자들이 ERD를 설계할 때 enum을 사용할지, boolean을 사용할지, tinyint를 사용할지에 대한 같은 고민을 하는 듯 했다. 여러 글들을 읽고 내가 내린 결론은 아래와 같다.
boolean, tinyint의 차이는 없다. 이를 고민할 시간에 code를 관리하는 table을 만들어 가독성을 높이고 유연성과 유지 보수성을 높이자.