|
[액세스 2003] 데이터 형 결정하기
오늘의 Tip 은 액세스 실무 기초와 액세스 실무 활용 과정을 진행하고 계신 염기웅님(JnC Company 대표)이
제공해주신 내용입니다.
액세스는 엑셀과 달리 저장할 필드 단위로 데이터 형을 지정해 주어야 합니다. 엑셀은 데이터 형을 자동으로 지정해
주는 반면, 액세스는 데이터를 저장하기 전에 ‘미리’ 데이터 형을 지정해 주어야 합니다. 엑셀을 사용하다가 액세스를
접하게 되면 이해가 안 되는 부분이 몇 개 정도 있게 마련인데, 데이터 형을 ‘미리’ 지정해 주어야 한다는 것도
그런 요소 중 하나가 아닐까 합니다.
반면, 액세스는 엑셀에 비해 비교할 수 없을 정도의 데이터 처리 능력을 자랑합니다. 65,000개 레코드의 데이터를
정렬하는 데 엑셀은 수 초가 필요하지만, 액세스는 순식간에 처리합니다. 처리해야 할 데이터가 100만개를 넘어가게
되면, 액세스의 이런 장점은 눈이 부실 정도이지요.
데이터 형을 미리 지정하는 것은 이러한 성능 향상에 많은 도움이 되기 때문이라고 이해하기 바랍니다. 처음에는 다소
불편할지 모르지만, 처음 한 번만 불편하면 나중에는 향상된 성능에 아주 만족할 것입니다.
데이터 형을 결정하는 것은 꽤나 기술적인 내용을 많이 알아야 하고 어려운 일이기도 합니다. 오늘은 기술적인 내용을
가급적 제외하고, 결론 위주의 데이터 형을 결정하는 방법에 대해서 알아보겠습니다.
액세스는 데이터 형을 지정하는 데 두 단계를 이용합니다. 하나는 ‘데이터 형식’ 속성이며, 나머지 하나는 ‘필드
크기’ 속성입니다.
앞의 그림을 보면 알 수 있듯이, 테이블을 디자인할 때 1차적으로 ‘데이터 형식’ 속성을 통해 데이터 형의 ‘범주’를
지정해 주며, 세부적인 데이터 형은 ‘필드 크기’ 속성을 이용해서 지정합니다. ‘재고량’ 필드의 경우 ‘숫자’
형식의 데이터가 저장되며, 저장되는 숫자의 크기는 -32768 에서 32767 까지 저장이 가능한 ‘정수’ 입니다.
어떤 데이터 형은 ‘필드 크기’ 속성을 추가로 지정할 필요가 없으며, 어떤 데이터 형은 ‘필드 크기’ 속성을 반드시
지정해 주어야 합니다. 내용이 너무 어렵다면, 1차적인 데이터 형인 ‘데이터 형식’ 속성만 잘 설정하고, 2차적인
‘필드 크기’ 속성은 추가로 지정하지 않아도 대부분 큰 문제는 없는 것으로 이해해도 좋습니다. 따라서 오늘은
‘데이터 형식’ 속성을 지정하는 팁에 대해서 알아보겠습니다.
본래, 인간이 처리하는 데이터의 가장 기본이 되는 것은 텍스트(text) 데이터 형입니다. ‘A’, ‘B’,
‘C’, ‘D’ 혹은 ‘가’, ‘나’, ‘다’, ‘라’ 혹은 ‘1’, ‘2’, ‘3’, ‘4’ 와 같은 문자
데이터를 말하는 것이지요. 우리가 흔히 사용하는 숫자를 문자 데이터 형식으로 저장해도 아무런 문제가 없습니다.
바꾸어 말하면, 데이터 형식을 지정하는 것이 어렵다면 무조건 ‘텍스트’ 형식의 데이터로 지정해도 데이터 저장에는
아무런 문제가 없다는 것입니다.
하지만 텍스트 형태로 지정된 숫자는 ‘계산’할 수 없으며, 텍스트 형태로 지정된 날짜는 ‘날짜 연산’을 수행할 수
없습니다. 따라서 우리는 해당 필드에 사용할 값을 미리 고려하여 적절한 데이터 형식을 지정해 주어야 합니다.
가장 기본적인 데이터 형식은 텍스트, 숫자, 날짜/시간 입니다. 문자를 저장해야 할 필드에는 ‘텍스트’ 필드를
이용하고, 숫자를 저장해야 할 필드에는 ‘숫자’를 이용합니다. ‘날짜/시간’ 데이터 형식은 ‘숫자’의 특수한 형태로
처리됩니다. 날짜 혹은 시간을 기록할 때 ‘날짜/시간’ 데이터 형식을 이용하면 액세스가 제공하는 풍부한 날짜 계산
함수를 이용하여 편리하게 날짜 및 시간 계산을 수행할 수 있습니다. (물론 속도도 아주 빠르지요.)
문자 데이터의 저장
- 문자 데이터를 저장할 때는 ‘텍스트’ 혹은 ‘메모’ 데이터 형식을 이용합니다.
- ‘텍스트’와 ‘메모’의 가장 큰 차이는 저장 용량에 있습니다.
- ‘텍스트’ 데이터 형식은 최대 255글자까지 저장을 할 수 있으며 ‘메모’ 데이터 형식은 65535 글자까지
저장할 수 있습니다. (참고: 한글이던 영문이던 액세스는 모두 1글자로 처리합니다. 예) 강 → 1글자, A
→
1글자)
- 하지만 ‘텍스트’ 데이터 형식은 ‘인덱스’를 활용하여 데이터 검색 속도를 높일 수 있습니다.
- ‘인덱스’란 데이터 검색을 빨리 하기 위한 도구로서 데이터의 양이 많을 때(수십만 건 이상) 보통 7~8배
이상의 성능 향상을 가져올 수 있는 도구입니다.
- 결론: 문자 데이터의 경우, 255글자 이하라면 ‘텍스트’ 데이터 형식을, 255 글자를 초과하면 ‘메모’
데이터 형식을 이용합니다.
숫자 데이터의 저장
- 숫자 데이터를 저장할 때는 ‘숫자’ 혹은 ‘통화’ 데이터 형식을 이용합니다.
- 정수 형태의 숫자를 저장할 때는 어떤 데이터 형식을 이용해도 무방하지만, 소수 형태의 숫자를 저장할 때는 고민을
좀 해 봐야 합니다.
- ‘숫자’ 데이터 형식을 지정하고 필드 크기 속성을 ‘실수’로 지정하면 소수를 저장할 수 있습니다.
- 하지만 ‘실수’ 형태의 ‘숫자’는 소수점 계산(근사값 계산)을 수행하며, 계산 중간에 반올림 처리가 되므로 여러
계산이 중첩될 경우 부정확한 값으로 표시될 수 있습니다.
- 반면, ‘통화’ 형식은 소수점 넷째 자리까지 표현 가능하며, 정수인 것처럼 계산하고, 계산 중간에 반올림 처리가
되지 않으므로 계산이 중첩되더라도 정확한 값을 계산할 수 있습니다.
- 결론: 소수 형태의 데이터를 저장할 때, 정확한 계산을 필요로 하고 소수점 4자리를 넘어가는 정밀도를 요구하지
않을 때는 가급적 ‘통화’ 데이터 형식을 이용합니다.
날짜 혹은 시간 데이터의 저장
- 날짜 혹은 시간 데이터를 저장할 때는 ‘날짜/시간’ 데이터 형식을 이용합니다.
- 간혹, ‘20060115’ 혹은 ‘2006-01-15’ 형태로 ‘텍스트’ 데이터 형식을 사용하는 경우도 많은데,
이럴 경우 날짜 연산 (오늘부터 6개월 후는? 오늘부터 3개월 이전 날짜는?)을 수행하는 데 많은 어려움이
따릅니다. (윤년, 윤달 계산 등)
- 반면, ‘날짜/시간’ 데이터 형식을 이용하면 ‘DateAdd’, ‘DateDiff’, ‘DateSerial’ 을
비롯한 수십 개의 액세스 날짜 함수를 이용할 수 있어 편리하게 계산할 수 있습니다.
- 결론: 날짜 혹은 시간 데이터를 저장할 때는 ‘날짜/시간’ 데이터 형식을 이용합니다.
|
|