MySQL은 커스텀 데이터 타입을 지원합니까? 예를 들어, 우편 번호는 varchar(10)필드에 저장 될 수 있지만 int공백에 대한 옵션과 5 자리 또는 5 + 4 자리 우편 번호인지에 대한 플래그를 사용하여에 압축 될 수 있습니다.
그러한 것들을 위해 완벽한 데이터 유형을 설치하는 방법이 있습니까? 응용 프로그램에 관한 한, 문자열 유형이 될 수 있습니다. 응용 프로그램이 유효하지 않은 데이터를 전달하면 단순히 경고가 있거나없는 데이터 잘림이 발생합니다.
사용자 정의 함수를 사용할 수 있습니다 (예 : INET_ATONIPv4 주소를위한 내장 함수 가 있습니다. 그러나 zip LIKE '12345%'적절하게 색인을 생성해야하는 것은 허용하지 않습니다 . 사용자 정의 데이터 유형을 잘 작성하여 지원하면 데이터 유형을 표시 할 수 있습니다 따라서 정렬 zip int할 때 컴팩트 는 마치 마치 것처럼 정렬됩니다 zip varchar(10).
이렇게하면 열의 너비가 고정 될 수 있으며 6 또는 10 바이트의 가변 저장 영역을 고정 된 너비의 4 바이트로 줄일 수 있습니다.
적용 가능한 몇 가지가 있습니다
- 우편 번호
- IPv6 주소
- 최소 수준의 정밀도와 용량
2038보다 스토리지 사용량이 적은 사용자 정의 타임 스탬프 필드datetime이지만 구현 연도 이전 날짜를 지원할 필요는 없습니다 (시스템에서 가장 오래된 날짜 인 경우 최소값은 2007 일 수 있음). - (이 DST를 구현하는 타임 스탬프 존재하지 않는 것 )
- 2 바이트 미국 상태는 단일 바이트에 저장 가능
- long
ENUM은 사용자 정의 데이터 유형으로 분리되어DESCRIBE출력이 모든 줄 바꿈으로 너무 어려워 보이지는 않습니다.
데이터 유형 핸들러는 함수가 저장되는 방식과 유사하게 저장 될 것으로 예상합니다.
데이터베이스 엔진에 이와 같은 것이 원격으로 있습니까? 나는 주로 MySQL을 사용하지만 응용 프로그램을 함수와 같은 함수로 만드는 것이 부족하여 이것이 구현되었는지 궁금 INET_ATON합니다.
MS SQL은 그 특성을 가진 것처럼 보이지만 그것이 단순한 동의어 이상인지 알고 싶습니다. (예를 들어 boolean동의어가 될 수있다 tinyint(1), 또는 postal_code중 하나 char또는 varchar (5또는 9또는 10)) 동의어 내가 여기에 대해 요구하고 있지 않습니다 것을.
IPv6로 binary(16), 또는 (에 사용할 수있는이 앨리어싱으로 제한됩니다 state의가되고 enumS)
int것 없는 캐나다, 예를 들어, 'A9A A9A'의 형식을 사용 - 국제화 된 데이터베이스에 대한 작업. 우편 번호에 대한 사용자 정의 데이터 유형을 작성하는 것이 좋습니다. 그러나 일부를 처리 할 계획을 재검토하고 싶을 수도 있습니다 (예 : 1 바이트 필드에 상태를 저장하면 잠재적 인 '기타'문제가 있음). 제공된 데이터 유형이 일반적으로 부족하지 않으면 (크기는 중요하지 않음) 날짜 / 시간 데이터 유형을 다시 구현하지 마십시오. 사람들을 혼란스럽게 할뿐입니다.