논리적 모델의 "나이" 속성을 물리적 모델의 컬럼으로 바꾼다고 가정한다. 한 개발자가 다음과 같이 생각한다고 하자.
"나이는 숫자니까, 넉넉하게 가장 큰 정수 타입인 BIGINT로 저장한다."
BIGINT는 922경 같은 엄청난 값을 저장할 수 있는 타입이다. 하지만 "사람 나이"는 아무리 길게 잡아도 몇 백을 넘기기 어렵다. 이런 경우 과도하게 큰 타입을 선택하면 다음과 같은 문제가 생긴다.
따라서 각 속성의 의미와 범위에 맞는 최소한의 타입을 선택해야 한다.
문자열을 저장할 때 주로 다음 두 타입을 고민한다.
CHAR(n)
VARCHAR(n)
일반적인 웹 서비스에서는 대부분의 문자열 컬럼을 VARCHAR로 두고, 완전히 고정 길이인 코드값만 CHAR로 두는 경우가 많다.
또한 문자 타입을 정할 때는 다음을 함께 고려한다.
VARCHAR(50), VARCHAR(255) 등)정수 타입은 대략 다음과 같이 구분된다.
TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT각 타입마다 표현 가능한 범위가 다르며, 범위가 클수록 저장 공간도 커진다. 예를 들어: