[ORACLE] 뷰(Simple 뷰, Complex 뷰)
* 뷰(View)
CREATE [ OR REPLACE ] [ FORCE | NOFORCE ] VIEW view name [ alias...] AS sub query [ WITH CHECK OPTION [ CONSTRAINT constraint name ] ] [ WITH READ ONLY [ CONSTRAINT constraint name ] ] |
* Force / Noforce
-> 뷰를 생성하는 대부분의 경우는 베이스 테이블이 존재한다는 가정하에서 이루어진다. 하지만 베이스 테이블이 존재하지 않는 경우에도 뷰를 생성할 수가 있는데 이때는 Force 옵션을 적용할 수 있다. Noforce 옵션의 경우는 뷰를 생성할 때 반드시 베이스 테이블이 존재해야 한 한다는 것을 의미한다. 특별한 설정이 없다면 Noforce 옵션을 기본적으로 사용한다.
* With check option
-> 뷰를 생성할 때 사용한 컬럼 값을 변경하지 못하도록 설정해준다.
* With read only
-> 생성하고 있는 뷰를 통해서 DML을 수행할 수 없다는 옵션을 지정해준다. 뷰를 생성하고 나면 다음과 같은 과정이 가능해진다.
-> user_views라는 데이터 딕셔너리 뷰에 해당 뷰의 정보가 저장된다.
-> 뷰를 통해서 베이스 테이블의 정보를 쿼리 또는 갱신할 수 있다.
* Simple 뷰
-> 뷰를 생성할 때 테이블로서 하나의 테이블을 사용하게 되며 뷰를 만들 때 함수(Function)라든지 그룹을 이루어서 생성할 수 없다. 그리고 Simple 뷰를 통해서는 아무 문제없이 베이스 테이블에 대한 DML 문장을 실행할 수 있다는 장점이 있다.
* Complex 뷰
-> Complex 뷰는 베이스 테이블로서 하나 이상의 테이블을 사용하며 뷰를 만들 때 함수라든지 그룹을 이루어서 생성할 수 있다. Simple 뷰와 비교할 때 중요하게 고려해야 하는 점은 바로 Complex 뷰를 통한 베이스 테이블에 대한 DML 처리 문제이다. Complex 뷰를 통해서 DML을 수행할 수 있지만 항상 그런 것은 아니다.