드로우홀릭 더베이직

개요

액세스에서 '필수' 속성은 아주 중요한 속성입니다. 어떤 필드를 '필수'로 지정해 놓으면, 반드시 값을 입력해 두어야 레코드가 저장되도록 하는 속성이지요.

문제는, '숫자' 데이터 형식 등의 필드에서는 '필수' 속성이 잘 동작하지만, '텍스트' 데이터 형식에서는 잘 동작하지 않을 때가 있다는 점입니다. 결론부터 말하자면, 텍스트 데이터 형식의 필드를 '필수'로 만들기 위해서는, '필수' 속성을 '예'로 설정하고, '빈 문자열 허용' 속성을 '아니요'로 설정해야 한다는 것입니다.

지금부터 왜 이런 현상이 나타나는지 간단한 테스트를 통해 알아보겠습니다.

 

'빈 문자열 허용' 속성을 '예'로 지정하는 이유 알아보기

'필수' 속성이 '예'일 때, '빈 문자열 허용' 속성이 '예'로 지정되어 있으면 예외적으로 빈 값을 입력할 수 있게 됩니다. 이것을 '필수'로 볼 것인지 보지 않을 것인지에 따라 속성을 다르게 적용해야 합니다.

하지만 일반적으로 '필수' 속성이 설정되어 있으면 빈 값을 입력하는 것을 허용하지 않아야 하므로 '필수' 속성을 '예'로 지정할 경우 '빈 문자열 허용'을 '아니요'로 지정하라고 권장하는 것입니다.

 

예제 살펴보기

실제로 한번 살펴봅시다. 다음 링크를 클릭하여 예제 파일을 다운로드 합니다. (반드시 압축을 풀고 실행하세요.)

Example.zip

이 파일을 열면, 탐색 창에서 4개의 테이블과 4개의 쿼리를 확인할 수 있습니다.

테이블은 다음과 같습니다.

  • 01_필수N_빈문자열Y: '필수' 속성을 '아니요'로, '빈 문자열 허용' 속성을 '예'로 지정했습니다. 이 상태가 액세스 기본값입니다.
  • 02_필수N_빈문자열N: '필수' 속성을 '아니요'로, '빈 문자열 허용' 속성을 '아니요'로 지정했습니다.
  • 03_필수Y_빈문자열Y: '필수' 속성을 '예'로, '빈 문자열 허용' 속성을 '예'로 지정했습니다.
  • 04_필수Y_빈문자열N: '필수' 속성을 '예'로, '빈 문자열 허용' 속성을 '아니요'로 지정했습니다. 필자가 권장하는 필수 필드 설정입니다.

이 테이블을 기반으로 하여 4개의 쿼리가 있습니다. 이 4개의 쿼리는 ID열 오른쪽에 있는 필드의 값이 비어 있으면(NULL) 'NULL값'이라고 표시해 주고, 비어 있지 않으면(NULL이 아니면) 'NULL 아님'으로 표시해 주는 '판단' 필드가 있습니다.

 
Tip

NULL과 빈 문자열('')은 컴퓨터에서 서로 다른 값으로 인식합니다. NULL은 값이 아예 없는 상태를 말하고, 빈 문자열('')은 빈 문자열이 입력된 상태입니다. 어렵지요? 빈 문자열('')은 값이 있기는 한데 '빈 값'이 있는 것이고, NULL은 어떠한 값도 없는 상태라고 이해하면 됩니다.

 

'필수' 속성이 '아니요', '빈 문자열 허용' 속성이 '예'인 경우 테스트하기

'q01_필수N_빈문자열Y' 쿼리를 열어 테스트해 봅시다. 첫 번째 레코드에는 '테스트'라는 값을 입력하고, 두 번째 레코드에는 <Spacebar>글쇠를 여러 번 눌러 값을 입력해 봅니다.

 

레코드를 저장한 후 다시 두 번째 레코드에 커서를 놓으면 공백은 사라져 있습니다. '판단' 필드가 'NULL값'인 것으로 보아, 테스트 필드에는 NULL이 할당되어 있는 것으로 판단할 수 있습니다.

 

'필수' 속성과 '빈 문자열 허용' 속성이 '아니요'인 경우 테스트하기

'q02_필수N_빈문자열N' 쿼리를 열어서 문자와 <Spacebar> 글쇠를 이용한 빈 값을 입력해 봅시다.

테스트를 해 보면 'q01_필수N_빈문자열Y' 쿼리와 크게 다르지 않습니다. 이상의 테스트에서 '필수' 속성이 '아니요'로 되어 있을 때에는 '빈 문자열 허용' 속성이 그리 중요하지는 않다는 점을 알 수 있습니다.

 

'필수' 속성과 '빈 문자열 허용' 속성이 '예'인 경우 테스트하기

'q03_필수Y_빈문자열Y' 쿼리를 열어 봅시다. 이 쿼리가 가장 중요합니다. 두 번째 레코드에서 <Spacebar> 글쇠를 이용하여 빈 값을 입력해 보면 커서 위치는 NULL일 때와 같은데, '판단' 열은 'NULL 아님'으로 표시되는 것을 볼 수 있습니다.

여기서 빈 문자열('')의 실체를 눈으로 확인할 수 있습니다. 앞에서 살펴본 NULL일 때와 겉보기로 다른 점이 없지만 필수 필드임에도 불구하고 사람이 보았을 때는 테스트 필드에 값이 없는 상태로 저장되었습니다. 이런 상황이 벌어질 가능성이 있기 때문에 이렇게 설정하지 않기를 권장하는 것입니다.

 

'필수' 속성이 '예', '빈 문자열 허용' 속성이 '아니요'인 경우 테스트하기

'q04_필수Y_빈문자열N' 쿼리를 열어 봅시다. 아무리 테스트를 해 보아도, 테스트 필드가 필수 필드로 설정되어 있고 빈 문자열도 허용하지 않으므로 값을 입력하지 않으면 저장할 수가 없습니다. 아주 바람직한 '필수' 필드의 형태라고 할 수 있습니다.

액세스에서 '텍스트' 데이터 형식의 필드를 만들면 '빈 문자열 허용' 속성은 기본적으로 '예'로 지정되어 있습니다. 앞에서 살펴본 대로 '필수' 속성이 '아니요'로 지정되어 있을 때에는 큰 문제가 없습니다. 그러나 '필수' 속성이 '예'로 되어 있고 '빈 문자열 허용'이 '예'로 지정되어 있을 경우 빈 문자열을 입력하더라도 '필수' 필드에 값이 들어간 것으로 인정됩니다.

이것은 일반적으로 바람직하지 못하므로, 필수 필드는 '빈 문자열 허용' 속성을 '아니요'로 지정하라고 권장하는 것입니다.

다소 어려운 내용이었을 텐데 이해하느라 대단히 고생 많았습니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수sort
공지 액세스-일반 길벗출판사 / 실무액세스 예제파일(64비트용) [4] 돌직구 2021-01-13 30297
공지 액세스-일반 길벗출판사 / 액세스 2013 무작정 따라하기 정오표 돌직구 2014-10-09 80514
공지 액세스-일반 길벗출판사 / 액세스 2010 무작정 따라하기 정오표 file 돌직구 2012-10-26 125949
49 MS액세스 블로그 번역 액세스(Access) 2013으로 업무용 앱을 만드는 4가지 방법 file 윈드님 2013-07-13 47677
48 SQL Server SQL Server Express 버전별 DB 용량 1 돌직구 2013-05-30 45941
47 액세스-일반 작성자, 작성일시, 수정자, 수정일시 이력 관리 file 돌직구 2012-05-16 43027
46 액세스-일반 한/영 자동 전환 (IME 모드 속성) file 돌직구 2013-04-12 42709
45 MS액세스 블로그 번역 액세스(Access) 2013 웹 앱 만들기 file 윈드님 2013-04-18 40169
44 액세스-일반 액세스에서 자주 사용하는 함수 file 돌직구 2015-07-13 37583
43 MS액세스 블로그 번역 액세스(Access) 2013 과 SQL 서버(SQL Server) file 윈드님 2013-05-13 36042
42 IT일반 Windows 8에서 드래그 & 드롭이 되지 않을 때 file 윈드님 2013-09-12 33534
41 ADP 대용량 해결하기 및 ADP 알아보기 file 돌직구 2014-09-14 33148
40 ADP ADP(Access Data Projects)란 무엇인가? file 돌직구 2012-03-29 32177
39 액세스-일반 액세스 제대로 배우기 돌직구 2021-07-21 31387
38 MS액세스 블로그 번역 쉬운 데이터 입력 file 윈드님 2013-06-18 30416
37 IT일반 우편번호 DB 2014-03-07, 도로명 주소 포함 돌직구 2014-03-12 29353
36 액세스-일반 테이블에 계산 필드 만들기 file 돌직구 2012-03-30 25114
35 IT일반 Dropbox 동기화 vs. SkyDrive Pro 동기화 돌직구 2013-06-06 24674
34 IT일반 맥북을 업무용으로 구입하고 싶으세요? 돌직구 2013-09-04 23963
33 액세스-DB 관리 시작 옵션 무시하지 못하도록 설정하기 file 돌직구 2012-03-31 22876
32 MS액세스 블로그 번역 액세스(Access) 테이블, 자동으로 재연결하기 file 1 윈드님 2013-05-02 22762
31 MS액세스 블로그 번역 액세스(Access) 2013 소개 file 윈드님 2013-04-15 20863
» 액세스-일반 '필수' 속성과 '빈 문자열 허용' 속성 알아보기 file 돌직구 2014-11-21 19957


  주소  12925 경기도 하남시 미사대로 540, B동 917호 (현대지식산업센터 한강미사2차) ㈜팀데이터이십일  |  고객센터 전화번호  02-467-2998  |  대표이사  염기웅
개인정보관리책임자  염기웅 (ml_privacy@td21.com)  |  사업자등록번호  120-86-79260  |  통신판매업신고번호  제 2021-경기하남-1166 호  [사업자 정보 확인]
  TD21의 사전 서면 동의 없이 TD21 사이트 일체의 정보, 콘텐츠 및 UI 등을 상업적 목적으로 전시, 전송, 스크래핑 등 무단 사용할 수 없습니다.