관계형데이터모데링노트 요약

데이터 타입 선정 원칙과 절차

mitomi 2023. 12. 3. 21:00
반응형
SMALL

올바른 데이터 타입을 선택하는 것은 모델링 과정 중에서 중요한 부분이다. 적절치 않은 데이터 타입을 선택하면 데이터의 무결성 손상이 될수 있으며, 데이터 저장공간을 많이 차지하고 성능이 저하될수 있다.

데이터의 성격에 맞는 데이터 타입을 정해야 무결성이 보존돼품질이 높아진다.

데이터 타입을 결정하는 데 있어 가장 중요한 원칙은 속성에 저장될 데이터의 성격에 맞는 타입을 결정하는 것이다.

그러기 위해서는 속성에 저장될 데이터가 어떤 종류의 데이터 인지를 명확하게 알아야 한다. 데이터 성격을 모르고는 데이터 타입을 결정할 수 없다. 데이터의 성격을 명확하게 팍악하고 규정하는 것은 모델러의 중요한 역활이다.

 

속성데이터가 날짜면  Date 타입, 숫자명   Number타입을  문자면  Varchar 타입을 사용하는 것이 기본원칙이다.

속성에 저장될 데이터가 숫자임에도   varchar타입을 사용하거나, 저장될 데이터가 날짜임에도   varchar 타입을 사용하면 데이터 무결성이 깨질수 있으며,계산하기가 어려울 수 있으며, 저장공간이 늘어날 수 있으며 결국 성능에 영향을 미칠 수 있다.

 

애플리케이션에서 데이터 유효성을 아무리 체크해도 엉뚱한 데이터가 입력될 가능성은 없어지지 않는다. 데이터 무결성은 오류데이터가 한건이라도 존재하지 않도록 해야 한다. 데이터 성격에 맞지 않는 데이터타입을 사용하면  데이터무결성이 깨지게 되므로 속성에 저장될 데이터의 성격에 맞는 타입을 결정해야 한다.

성격이 맞지 않는 데이터타입을 사용하면 성능이 저하 될수 있다. 시분초까지 저장하는 속성에   varchar(14)타입을 사용하면  date 타입(7byte)보다 공간을 많이사용하므로 성능에 악영향을 미친다. 날짜 저장하는 속성에 date타입 대신 varchar2(8)타입을 사용하면 옵티마이저가 최적의 판단을 할 수 없도록한다.

 

데이터 타입을 결정하는 기본적이면서 유일한 원칙은 속성에 저장될 데이터의 성격을 따르는 것이다. 

데이터 마이그레이션을  고려할때 as-is 시스템에는 날짜를 varchar타입을 사용하고 있을때는 기존데이터를 모두 마이그레이션할 수 있는지와 정해진 시간내에 마이그레이션 할수 있는지를 고려해야 한다. 틀린데이터를 보정하면서 정해진 시간내에 마이그레이션하는 것인 쉽지 않기 때문에 충분히 고려해야 한다.

데이터 타입을 선정할 때 우선적으로 판단해야 하는 것

1. 문자타입인지. 숫자타입인지 결정

데이터성격은 숫자지만 종류가 한정돼 있다면 문자타입으로 정하는 것이 좋다. 고객등급이 1~5등급으로 존재한다면, 숫자보다 '01','02'  코드로 변환해서 사용하는 것이 효율적이다. 코드값의 데이터타입은 보통문자타입으로 사용하게된다.

2. 문자타입으로 결정했다면 고정길이인지 가변길이인지를 판단해야 한다. 고정길이라고 분석했더라도 새로  char 타입을 사용하는 예는 드물다. 이는 조회구분에서 커다란 문제를 일키는  char 타입의 특성때문이다. 무엇보다 varchar 타입에 비해 뚜렷한 장점이 없다. 하지만 물리적으로는  char타입을 사용하지 않더라도 데이터가 고정인지 판별할 필요성은 있다. 데이터 성격을 나타내는 요소이기도 하며, 논리적으로  char  타입인지는 도메인이나 식별자등과 연관돼 있어 고정길이 여부는 검토해야 한다.

 가변길이라면 최대길이를 결정해야 한다.varchar 타입은 공란을 저장하지 않기 때문에 최대길이를 충분히 잡을때가 많지만, 가능한 근접하게 정하는게 좋다. 최대길이 역시 데이터 셩격을 나타내는 요소이므로 의미 없이 크게 잡는 것은 바람직하지 않다.타입과 길이에 따라 도메인이 정해지는데. 도메인을 얼마나 세분화해서 관리하느냐에 따라 최대길이를 비교적 정확히 결정하기도 하고 다소 크게 결정하기도 한다.

최대길이가 4000~5000정도 길어야 하면  clob등의 타압을 사용할 수도 있으며, 속성을 물리적으로 분리해야 할 수도 있다. 이미지나 문서등의 파일을 관리하는 속성이라면  blob등을 사용해야한다.

 

데이터타입을 숫자로 판별했다면 최대길이와 소수점길이를 결정해야 한다. 이길이도 정확하게 사용하는 것이 바람직하다.임의의 숫자가 사용되는 것이 아니라 특정숫자가 정해저 있다면 코드로 관리하는 것이 바람직하다.

 

No 데이터 성격 데이터 타입 선정조건   선정된 타입
1 숫자 NUMBER 소수점이 필요없는 숫자라면Number(n) Number (n)
소수점이 필요한 숫자라면  Number(p,s)
데이터 종류가 고정 되어 있어 코드화 할수 있다면  Varchar(n)
2 문자 VARCHAR 데이터가 텍스트 형식 Varchar(n)
텍스트 길이가 고정 Varchar(n)
대량의 텍스트를 저장 Clob
3 날짜 DATE 년월일까지만 필요하면, 시분초 제거하고 사용 Date
      시분초까지 필요하면 Date
      초 이하까지 필요하면 Timestamp
4 파일이나 이미지 BLOG    

 

데이터 타입을 결정하는 시기

모델링 수행하는 기간동안 계속, 속성에 저장될  데이터를 파악하면서 속성명을 정하고 속성이 속할 도메인을 정하는데, 특정기간에 한정되지 않고 개념 모델링단계부터 속성을 정의할 때 데이터 타입을 결정하게 된다.

데이터타입을 선정하는 것은 중요하므로 가볍게 생각해서는 안된다. 핵심적인 속성에 대해서는 실제 데이터도 보면서 분석해야 한다.

 

 

 

728x90

'관계형데이터모데링노트 요약' 카테고리의 다른 글

속성 식별자 검증  (0) 2023.12.05
널(Null)에 대하여  (1) 2023.12.03
도메인  (1) 2023.12.03
속성명  (0) 2023.12.02
코드속성 2  (0) 2023.11.29