그냥 char나 varchar로 0 또는 1로 flag를 주면 안 되는건가요?
왜 bool형이 필요한걸까요? 답변 부탁드립니다.(__)
그냥 제 생각입니다.
물론 smallint 혹은 char(1) 을 이용해볼수도 있습니다만..
0, 1 만을 사용하기 위해선 check constraint 를 걸어야 합니다.
그럼 처리가 더디지않을까요?
물론 bit 타입도 있습니다만...
기존 자료의 호환성 때문입니다.
그리고, 참,거짓 이라는 실세계에서 두 값만 가지는 자료가 어면히 있다면,
그것을 담을 수 있는 자료도 있어야한다는 것이 dbm 쪽 전통이었고.
요즘 젊은 사람들은 integer 형, (int4 형)이 인덱스에서도 자료처리 능력에서도 제일 빠르기 때문에,
저장공간의 크기에 연연하지 않고, 이 자료형으로 처리하는 경우를 종종봅니다.
뭐가 나은지는 모르겠습니다.
dba가 해야하는 몫, 그들의 능력 가운데 하나가,
실세계 자료를 데이터베이스 자료로 어떻게 구현할 것인가에 대한 노련함이거든요.
자신이 생각하기에 가장 타당한 자료형을 선택하는 것도 결국 경험이더라구요.
이 자료가 어떻게 select 될 것인지, 어떻게 인덱스를 만들 것인지... 등등
그에 따라서 실세계에서는 불린형인데, 데이터베이스는 정수형으로 처리한다. 아니면, 그 반대로 한다가 결정이 될 듯합니다.
프로그래밍을 하다가 보면, 정수형으로 불린형을 대체할 수 있음에도 불구하고,
많은 사람들이 아직도 불린형을 많이 쓰죠. 그 나름대로 이유가 있어서일겝니다.
그거하고 마찬가지입니다.
boolean 용으로 만든 integer 일 경우 하더라도
index 를 사용할 일은 없을거 같습니다.
어차피 50% 가 차지하고 (한쪽으로 쏠려 있는 자료라면 틀리겠지만) 있으니 index 의 의미가 없어질지도 모르죠..
저 같은 경우 처음엔 boolen 으로 사용하다 요즘은 귀찮아서 smallint 를 자주 씁니다.
boolean 이 많을 경우는
차라리 한대 묶어서 integer 하나로 사용하기도 합니다.
31개는 사용할수 있으니깐요..