- HOME
- [종료]구루비 DB 스터디
- 2014년 상반기 - 오라클 데이터베이스 스터디
- NULL에 관해서
널(NULL)이 사용되는 경우
- 속성의 값을 알 수 없을 때
- 속성의 값이 '해당 사항이 없는 경우' (예 : 고객 엔터티에서 개인과 법인을 같이 관리할 경우 생년월일 속성은 법인의 경우 해당 사항이 없으므로 널을 가지게 됨)
널의 관리방법
- 데이터를 입력하는 시점에 입력할 값을 모르면 널(NULL)을 허용하는 것이 원칙
- 해당사항이 없는(적용할 수 없는 값)과 알 수 없는 값을 구분하여 관리
- 아래 그림 9.16의 경우 주문취소사유코드가 해당없음은 1로 모름은 9로 관리하고 있음
- 널을 허용하지 않고 실제로 값을 모르는 상태인 경우 디폴트 값을 지정하여 관리할 수 있음
- 낮은 분포도를 가진 속성은 인덱스 범위 스캔이 되지 않도록 널 값을 사용하는 것을 고려
- 높은 분포도를 가진 속성은 기본 값을 사용해 테이블 풀 스캔이 되지 않도록 고려
- 코드나 여부, 유무 속성읠 때는 Not null로 지정
- 일자 속성 등에는 Null 허용 대신, 9999-99-99나 3000-12-31 등과 같이 디폴트 일자를 지정하여 사용하는 것이 편리
- 서브타입별로 속성이 집단적으로 널 값을 가진다면 1:1 엔터티로 분리하여 널이 생성되지 않도록 하는 것이 바람직
널 사용시 유의점
- 그룹함수(sum, avg, count, max, min 등)는 널은 연산 대상에서 제외하므로 주의가 필요
- 널은 보통 인덱스에 포함되지 않음
- 많은양의 데이터 누적시 NVL은 치명적인 성능 결함이 발생할 수 있으므로 최소화하여 사용
- 외래 식별자 속성에 널 값이 존재하면 아웃터 조인(Outer Join)을 고려(Inner Join 시 원치 않는 결과 발생 가능)
- 데이터 마이그레이션 시 널 여부 고려(기존 데이터는 널 허용이나 마이그레이션 하는 속성이 Not null 일 경우)
- NULL과 '' 의 의미가 서로 다를 수 있으므로 사용에 주의(휴대폰 번호의 경우 NULL은 번호를 모른다는 의미, ''은 휴대폰이 없다는 의미로 쓰일 수 있음)
- 금액을 관리하는 속성에 널을 허용하면 금액 집계 시 원치 않는 결과 발생가능
- HOME
- [종료]구루비 DB 스터디
- 2014년 상반기 - 오라클 데이터베이스 스터디
- NULL에 관해서