varchar의 크기 설정에 대한 크기 및 성능 고려 사항 외에도 (저장 및 처리 비용이 매초마다 저렴 해짐에 따라 더 중요 할 수 있음) varchar (255) 사용의 단점은 데이터 무결성 이 감소하기 때문 입니다.
문자열에 대한 최대 제한을 정의하는 것은 예상보다 긴 (더 많은 바이트) 값을 데이터베이스에서 검색하고 구문 분석 할 때 예상보다 긴 문자열이 RDBMS에 들어가고 나중에 버퍼 오버런이나 예외 / 오류가 발생 하지 않도록 방지 하는 좋은 방법 입니다.
예를 들어 국가 약어에 대해 2 자 문자열을 허용하는 필드가있는 경우 사용자 (이 컨텍스트에서 프로그래머)가 전체 국가 이름을 입력 할 것이라고 예상 할 수있는 이유가 없습니다. "Antigua and Barbuda"(AG) 또는 "Heard Island and McDonald Islands"(HM)를 입력하는 것을 원하지 않기 때문에 데이터베이스 계층에서 허용하지 않습니다. 또한 일부 프로그래머는 설계 문서 ( 확실히 존재 함 )를 RTFM 하지 않아이를 수행하지 않는 것을 알 수 있습니다.
두 문자를 허용하도록 필드를 설정하고 RDBMS가 처리하도록합니다 (잘림으로써 정상적으로 또는 오류와 함께 SQL을 거부하여 비정상적으로).
특정 길이를 초과 할 이유가없는 실제 데이터의 예 :
- 캐나다 우편 번호 는 A1A1A1 형식이며 산타 클로스의 경우에도 항상 길이가 6 자입니다 (6 자에서는 가독성을 위해 지정할 수있는 공백이 제외됨).
- 이메일 주소 -@ 앞에 최대 64 바이트, 뒤에 최대 255 바이트. 더 이상 인터넷을 끊지 않도록하십시오.
- 북미 전화 번호는 10 자리를 초과 할 수 없습니다 (국가 코드 제외).
- Windows를 실행하는 컴퓨터 (최신 버전) 는 63 바이트보다 긴 컴퓨터 이름을 가질 수 없지만 15 개 이상은 권장되지 않으며 Windows NT 서버 팜을 손상시킵니다.
- 주 약자는 2 자입니다 (위의 국가 코드 예와 같음).
- UPS 조회 번호 는 18 자, 12 자, 11 자 또는 9 자입니다. 18 자리 숫자는 "1Z"로 시작하고 11 자리 숫자는 "T"로 시작합니다. 문자와 숫자의 차이를 모르는 경우 모든 패키지를 배송하는 방법이 궁금합니다.
등등...
시간을내어 데이터와 그 한계에 대해 생각하십시오. 당신이 건축가, 개발자, 프로그래머라면 그것은 결국 당신의 일 입니다.
varchar (255) 대신 varchar (n)을 사용하면 사용자 (최종 사용자, 프로그래머, 기타 프로그램)가 예기치 않게 긴 데이터 를 입력 하여 나중에 코드를 괴롭히는 문제를 제거 할 수 있습니다.
그리고 응용 프로그램에서 사용하는 비즈니스 논리 코드에서도이 제한을 구현해서는 안된다고 말하지 않았습니다.