[見心見性] 사람중심의 IT세상을 꿈꾸는 Microsoft MVP
Admin
RSS
Guest Book
Join
IL.NET
3/9/2008 2:50:44 PM
#9 데이터 형식 결정 방법
컬럼 데이터 형식을 어떻게 결정하는가? 직감으로 보면 알 수 있나? 아니면 기준을 가지고 하는가? 훈련 없는 직감은 아차 하는 실수를 낳을 수 있다. 기준을 가지고 컬럼 데이터 형식을 판단하는 훈련을 여러 번 하다 보면 훈련 받은 직감이 생긴다. 이 직감은 객관적인 판단기준이 휘리릭 ~ 하고 계산되고 나온 결과이다. 여러분이 이러한 훈련을 하는데 필요한 기준이 무엇인지를 설명한다.
첫 번째 기준은 “논리적인 데이터 형식 먼저 생각하라.” 논리적인 데이터 형식이라는 것은 해당 컬럼 혹은 변수가 문자(character), 숫자(Number), 날짜(Datetime), 바이너리(Binary) 카테고리 중 어디에 속하는가 이다.
모든 데이터 형식들은 이 4가지 범주 안에 반드시 속하게 되어있다. 그리고 이 4가지 데이터 형식들은 모두 문자열(String)에서 파생되었다. 따라서 모든 값은 문자열로 표현될 수 있다. 예를 들어 숫자도 문자열로 표현될 수 있다. 2는 정수(Int) 값이지만 ‘02’ 혹은 ‘2’ 라는 문자열 값으로 저장할 수 있다. ‘2008-01-01’도 문자열로 저장이 가능하며, ;0x080000000100’ 와 같은 바이너리도 문자열로 저장할 수 있다. 따라서 모든 데이터 형식은 문자열이라고 볼 수 있고, 이를 Char 혹은 Varchar 형식에 저장할 수 있다. 원래의 데이터베이스는 이렇게 모든 데이터 형식을 문자열 형식 하나에 저장하였다. 하지만 시간이 흐르면서 여러 가지 형태의 데이터 형식들을 필요로 하게 되면서 이렇게 세분화된 것이다.
문자열 보다 다른 데이터 형식을 사용하는 첫 번째 이유는 문자열 보다 적은 바이트 수로 값을 표현할 수 있다는 것이다. ‘10000’은 문자열로는 5바이트이지만, 정수형으로는 4바이트로 표현 가능하다. 날짜도 마찬가지이다. 두 번째 이유는 데이터 연산을 위해서 데이터 형식을 규정 짓고 싶기 때문이다.
정수는 사칙연산을 포함해서 다양한 수식 연산을 할 수 있고, 날짜도 더하거나 뺄 수 있다. 하지만 문자열은 고작해야 문자열을 자르고, 붙이고, 치환하는 작업만이 가능할 뿐이다. 내재적인 숫자 타입들은 이러한 연산 보다는 더하고, 빼고, 나누고, 곱하는 연산이 더 중요하다. 따라서 세분화된 데이터 형식은 문자열로는 수행하기 힘든 다양한 형식들을 이용할 수 있다.
세 번째는 데이터 형식 각각이 값에 대한 검사 조건(Check constraint)으로서 사용된다는 것이다. 예를 들어, 정수형 컬럼에 ‘가나다’ 라는 문자열을 포함할 수는 없다. 오직 정수 형식의 데이터들만이 포함될 뿐이다. 날짜 형식도 마찬가지이다. 날짜 커럼에는 날짜 데이터 형식에 맞는 값들만이 들어갈 뿐이고, 벗어나는 값들은 오류를 발생한다. 이러한 검사 조건으로 컬럼형식을 사용할 수 있다.
① 적은 바이트 수로 값을 표현
② 연산 가능한 값을 위해
③ 값의 형식 검사를 위해
참고서적:Deep Inside T-SQL
크리에이티브 커먼즈 라이센스
이 저작물은
크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스
에 따라 이용하실 수 있습니다.
T-SQL
,
쿼리테크닉
,
데이터의선택
Trackbacks (0)
Comments (0)
트랙백 주소:
http://ggoma.isblog.net/trackback_post_448.aspx
댓글을 달아 주세요
비밀글
ggomaterran@gmail.com
카테고리
전체 (194)
MSDN (23)
IL.NET의 IT세상 (10)
웹이야기 (13)
세미나이야기 (7)
IL.NET의 강좌&Tip (24)
ASP.NET (9)
DBMS (10)
IL.NET의 생각 (52)
세상의손길 (12)
추천도서 (14)
Recent Post
추천도서 "무지개 원리"
ASP.NET을 위한 준비 -ASP.NET이해 하기-
#11 직위 = 책임 (책임의손길)
#10 세상의 연결고리 (관계의손길)
나는 어떻게 해야 하나?
[MSDN] Null 값
추천도서 "20대 공부에 미쳐라"
#9 인생에 마라톤 (희망의손길)
#9 데이터 형식 결정 방법
#8 클러스터드 인덱스 구조
#7 클러스터드 인덱스가 없는 넌 클러스터드 인덱스 구조
[Tip] ASP.NET에서 오라클 연결하기 (Parameters이용)
ASP.NET을 위한 준비 -웹의 기본 개념-
ASP.NET을 위한 준비 -인터넷과 웹 개념-
[Tip] ASP.NET에서 오라클 연결하기
#6 클러스터드 인덱스와 넌 클러스터드 인덱스
[Tip] 동일한 네이스페이스 해결방법
#5 인덱스 아키텍처
HOONS닷넷 8회 닷넷 정기세미나
#4 페이지의 구조
#3 페이지 및 익스텐트의 종류
#2 페이지와 익스턴트(Page and Extent)
#1 논리적인 데이터베이스와 물리적인 데이터베이스
추천도서 "Beautiful Code: 38인의 코딩 명장들이 말하는 내...
습관이라는 말
생활속의 블로그
#8 인내 (기회의손길)
#7 시간의기회 (기회의손길)
#6 사람의관계 (관계의손길)
Archives
200804
200803
200802
200801
200712
200711
200710
200709
200708
200707
200706
200705
200704
200703
200702
Counter
Total :
1402312
Today :
25
Yesterday :
154
Loading...