오라클에서 사용되는 날짜형 데이터


 

 

  데이터유형 

   설명

   길이

 DATE

 고정길이의 날짜와 시간데이터

 BC 4712년 1월1일부터 9999년

 12월31일까지 표현

 7바이트

 표현형식: NLS_DATE_FORMAT

               파라미터에 명시된 값 

 INTERVAL YEAR [(yr_pec)]

 TO MONTH

 년도와 월형태로 기간을 표시한다.

 yr_prec는 날짜의 연도의 최대 자리수

 범위: 0~9  디폴트값: 2

 5바이트

 INTERVAL DAY [(day_prec)]

 TO SECOND [(frac_sec_prec)]

 요일, 시, 분, 초 형태로 기간을 표시한다.

 디폴트 자릿수: day_prec:2

                      frac_sec_prec: 6

 11바이트

 TIMESTAMP[(frac_sec_prec)]

 밀리초까지 표현가능한 날짜형 데이터타입.

 frac_sec_prec 범위는 0~9, 디폴트:6

 7~11바이트 : precision에따라 가변

 TIMESTAMP[(frac_sec_prec)]

 WITH TIMEZONE

 시간대와 더불어 날짜와 시간을 표현한다.

 13바이트

 TIMESTAMP[(frac_sec_prec)]

 WITH LOCAL TIMEZONE

 TIMESTAMP WITH TIMEZONE과 비슷하나  

 저장시에는 데이터베이스의 시간대를 준수

 조회시에는 클라이언트의 시간대를 준수

 7~11바이트: precision에따라 가변

 

DATE사용예


 

SQL> CREATE TABLE test1 (

         date1 DATE);

 

SQL> INSERT INTO test1 (date1) VALUES( SYSDATE );

 

SQL> SELECT * FROM test1;

DATE1

--------------------------------

05/15/13

 

SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';

SQL> SELECT * FROM test1;

DATE1

--------------------------------

2013-05-15

 

 

날짜형 함수 사용예


1. 현재날짜를 반환하는 함수

 

SQL> SELECT CURRENT_DATE, SYSDATE FROM DUAL;

CURRENT_DATE           SYSDATE

-----------------------------------

05/15/13                      05/15/13           

 

2. 날짜형 데이터로 형변환하는 함수 TO_DATE(char, fmt)

 

파라미터로 들어오는 CHAR, VARCHAR2, NCHAR,NVARCHAR2타입의 ㄷ이터를 DATE 타입으로 변환한 결과를 반환하는 함수이다.

 

SQL> SELECT TO_DATE('2013-05-10 10:00:00','YYYY-MM-DD HH24:MI:SS') date1 FROM  DUAL;      

 

3. 날짜령 데이터를 문자형 데이터로 형변환하는 함수 TO_CHAR(datetime)

 

DATE,TIMESTAMP,TIMESTAMP WITH TIMEZONE, TIMESTAMP WITH LOCAL TIMEZONE 등 날짜형 데이터 타입을 VARCHAR2 타입으로 변환하여 그 결과를 반환한다.

 

SQL> INSERT INTO test1(date1) VALUES( TO_DATE('2013-05-10'));

SQL> SELECT TO_CHAR(date1,'YYYY-MM-DD') data_format1 FROM test1;

DATE_FORMAT1

---------------------

2013-05-10

 

블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

요구사항 분석에 포함되어야 할 내용들



(1) 시스템의 목적 설정

     시스템의 목적을 정의해야 한다. 개발동기, 사용자가 원하는 시스템의 형태등을 조사해야 한다.


(2) 제약조건 설정

     개발기간, 필요한 인력, 필요한 기술 등에 대한 제약 조건을 설정해야 한다.


(3) 기존 시스템에 대한 이해

     기존 시스템이 있다면 이 시스템에서 업무 흐름을 이해하고 이용가능한 내용과 변경해야 하는 내용을 결정해야 한다.


(4) 요구사항 명세서

     이 문서는 앞으로 프로젝트 추진 범위가 되며, 시스템의 설계, 구현, 테스트 등의 과정에서 참조하게 될 뿐만 아니라 최종 검수에서도 매우 중요한 문서이다. 


SRS에 포함되어야 할 내용들

- 기능(시스템이 구현해야할 기능에 대한 요구 명세 기술)

- 인터페이스(사용자 편의성을 고려한 인터페이스, 인터넷 환경에서의 접근성등에 대한 요구 명세 기술)

- 운영(시스템 운영에 필요한 환경을 명시)

- 자원(운영에 필요한 자원 제약등에 대한 요구 명세 기술)

- 검증(시스템 검증을 위한 조건, 절차,검증 문서등에 대한 요구 명세 기술)

- 인수 테스트(최종 사용자를 위한 인수 테스트에 대한 조건, 절차등에 대한 요구 명세 기술)

- 문서화(사용자 메뉴얼과 같은  시스템 사용과 운영에 필수적인 문서에 대한 문서화 요구 명세 기술)

- 보안(안전한 시스템 운영을 위한 필요한 보안 기능에 대한 요구 명세 기술)

- 이식성(시스템 설치에 필요한 조건 등에 대한 요구 명세 기술)

- 품질(시스템 품질 기준및 지침을 제시하고, 품질 관리를 위한 절차 등에 대한 요구 명세 기술)

- 신뢰성(시스템 검증이나 품질 요구사항들이 신뢰성 확보를 위한 절차이다)

- 유지보수성(낮은 비용은 유지 보수 요구 명세 기술)

- 안전(시스템의 내부적인 문제로 부터의 보호를 목적으로 한다.)



블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

데이터베이스 설계란?


모델링을 통해 현실 세계의 업무적인 데이터 항목들과 프로세스를 추상화한 것을 실제적으로 구현하여 물리적 데이터베이스화 시키는 일련의 과정이다.



데이터베이스 설계과정


요구사항수집 및 분석 단계 > 개념적 설계 단계 > 논리적 설계 단계 > 물리적 설계 단계


(1) 요구사항 수집 및 분석 단계: 

     구성원들의 요구사항과 기능적 요구사항을 명시한다.


(2) 개념적 설계단계: 

     요구사항을 기반으로 엔티티를 추출하고, 애트리뷰트와 관계를 정의하며, 산출물로 ER다이어그램을 작성한다. 이 단계에서는 큰틀에서 세부적인 애트리뷰트까지를 분류하는 하향식 방식을 사용한다.

(상향식설계는 데이터베이스를 구축하려는 대상에서 사용되는 화면이나 양식, 전표로부터 데이터 항목을 모두 추출해 낸 후에 비슷한 애트리뷰트를 그룹지어 엔티티를 만들어서 설계하는 방식이다.)


ER모델은 개념적 데이터 모델로 엔티티와 애트리뷰트, 관계를 가지고 실세계를 개념적으로 표현하는 기법이다.


(3) 논리적 설계단계:

     데이터베이스 관리시스템을 무엇으로 할것인지를 선정한다. 다음은 정해진 데이터 베이스 관리 시스템의 스키마를 만든다. 개념적 설계단계에서 얻은 산출물을 데이터베이스관리시스템의 스키마로 변한하는 작업을 수행한다.


(4) 물리적 설계단계:

     주어진 응용 프로그램에 대한 성능을 향상시키기 위해서 데이터베이스 저장 구조와 접근 경로를 결정하는 작업을 수행한다. 이 단계에서 수행하는 가장 대표적인 작업이 인덱스와 역정규화이다. 인덱스는 데이터베이스 내의 레코드를 쉽게 접근하기 위해서 원하는 데이터를 좀 더 빨리 찾게 도와주는 데이터베이스의 객체 중의 하나이다. 역정규화는 정규화 때문에 분리된 테이블을 참조할 때 과도한 조인 연산이 발생하는 것을 방지 하기 위해 정규화에 어긋나는 행위를 하는것을 말한다.




설계지침


데이터베이스의 설계 목표는 간단하고 효율적인 스키마를 만드는 것이다.  이런 스키마를 만들기 위한 몇가지 지침을 정리하면,

(1) 현실 세계를 데이터베이스로 구축할 때는 정확하게 모델링을 해야 한다.

(2) 두 엔티티간에 비슷한 애트리뷰트가 많이 있다면 둘을 하나의 엔티티로 통합해야 한다.

(3) 애트리뷰트는 단순하고 명확하며 직관적인 의미를 갖도록 해야 한다.

(4) 각각의 사실은 한 번식만 표현해서 정보는 공유되어야 한다.

(5) 애트리뷰트는 널(Null)값을 가지면 안된다.

(6) 엔티티 vs 애트리뷰트 vs 관계 중 어느 것에 해당하는지를 정하는것이 중요하다.

(7) 일반적으로 엔티티와 애트리뷰트는 명사이고 관계는 동사인 경우가 많다.

(8) 애트리뷰트의 이름은 짧아야 관리하기 쉽다.




블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

티스토리 툴바