특정 테이블 컬럼이 전부 char 타입으로 되어 있을 이유가 있나요? 0 3 1,469

by 예리한 [Oracle 기초] [2015.07.21 17:44:27]


이해가 잘 안가서 구루비에 여쭙고자 글을 씁니다.

ERP 시스템, 데몬 수신용 DB, 카드 결제 로그 테이블 등

특정 시스템 사용 테이블안에 컬럼이 전부 char타입으로 되어 있는걸 종종 보았습니다.

혹시 이러한 중요한 이유 같은것이 있을까요?

그리고 이러한 테이블의 실제 데이터가 6자리 코드인데도

컬럼 크기는 char(50)으로 잡혀있다던지.. ('0'을 채워 저장하거나 혹은 그대로 저장하여 뒤에 공백이 생김)

정수형 컬럼 역시 char로 잡혀있다던지 저로써는 이해가 잘 되지 않는 부분이네요

혹시 특별히 이렇게 만들어야 할 이유가 있을까요?

답변 부탁드리겠습니다.. 감사합니다. :-)

by 마농 [2015.07.22 08:54:03]

CHAR 는 단점이 너무나도 많습니다.
CHAR 를 고정자리 사용시 쓰면 좋다고 하지만...
VARCHAR2 를 고정자리에 써도 똑같습니다.
결론은 VARCHAR2 죠. 특별히 CHAR를 사용할 이유는 없습니다.
아마도, 과거에 CHAR 밖에 몰랐던 사람이 테이블 만들었거나...
과거에 CHAR 로 되어 있던 DB 를 Migration 할 때 안바꾸고 그대로 옮겼거나.


by 예리한 [2015.07.22 09:56:16]

마농/ 답변 감사 드립니다. :)

모든 테이블 필드가 수치형, 문자형 가릴것 없이 모두 char필드타입으로 선언되어 있길래 의아했어요. 자릿수가 맞지 않으면 trim처리도 해야하고.. 특별한 이유는 없는것이었군요..@_@;


by DarkBee [2015.07.22 11:15:07]

인터페이스 역할을 할 컬럼이라면 조금 생각이 틀려질수 있습니다.

 

인터페이스에서 자리수로 컬럼을 구분한다거나 할때는 Char 형태도 쓰일때가 있습니다.

 

이런케이스 들을 제외하고는 Char 보단 Varchar2가 개발 오류에 대한 리스크를 감수하기에 유리합니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입