DATOR


Virtual Columns(가상컬럼) SQL


Oracle 11g 부터 Virtual Columns 이라는 새로운 기능이 추가 되었습니다.

Virtual Columns 이란 하나의 테이블에 존재하는 다른 컬럼들을 이용해서 새로운 값을 만들어낸 것입니다.

물론 데이터모델링 단계에서 계산되어 만들어진 속성에 대해서는 없애는 것을 원칙적으로 하지만 편의상 그렇게 하지 않는 경우도 많습니다.

그리고 중복컬럼을 가지고 가면 하나의 컬럼만을 변경하고자 계산되어 진 컬럼에 대해서도 추가적인 데이터조작을 요구하게 됩니다.

더구나 변경을 발생하는 작업이 분산되어 있다고 하면 변형된 중복컬럼에 대해서 데이터의 정확성을 보장할수는 없습니다.

 

가상컬럼을 사용하면 다음과 같은 제약이 발생합니다.

  1. 가상컬럼에 값을 입력할 수 없습니다.

  2. IOT, external, object, cluster, 혹은 temporary table에는  사용할 수 없다

  3. user-defined type, LOBs, LONG RAW에서는 사용할 수 없다

 

1. 의 경우는 당연하다고 생각되어야 하는것이 가상컬럼을 실제적인 데이터를 가지지 않습니다. 다른 컬럼을 이용하여 값을 만들어내기 때문에 직접적인 값을 가지지 않고 다른 컬럼을 이용하여 만들어 내기 때문에 입니다.

 

또한 가상열을 이용하여 파티셔닝을 할 수 있으며 가상열에 대해 단일컬럼 인덱스 및 복합컬럼 인덱스를 구성할수가 있습니다.

가상열에 대해 통계정보 또한 수집이 되며 물리적인 저장공간을 가지고 있지는 않지만 데이터를 요청시에 값을 계산하여 출력하게 됩니다.

 

 

아래의 예제를 참고하시기 바랍니다.

 

1. 테이블생성

   create table employee (
     emp_id number primary key,
     salary number(8,2) not null,
     years_of_service number not null,
     curr_retirement as (salary*0.0005 * years_of_service)  
  );


 

2. 데이터 삽입

insert into employee values (1,100000,5,default); 
commit;

 


3. 데이터 확인

 select * from employee;

 

    EMP_ID     SALARY        YEARS_OF_SERVICE      CURR_RETIREMENT
---------- ---------- ----------------------- --------------------
         1     100000                       5                  250

 

 

4. 딕셔너리 조회

  select table_name, column_name, data_default
 from dba_tab_columns
 where table_name = 'EMPLOYEE'
   and column_name='CURR_RETIREMENT';

 

TAG

Leave Comments


profile우리는 하나님을 믿는다. 다른 모든 것들은 데이터로 검증해야 한다. 

Recent Trackback