뷰(View) 란 무엇일까?
- 뷰는 사용자에게 접근이 허용된 데이터만을 제한적으로 보여주기 위해서 기본 테이블로부터 유도된 가상의 테이블이다.
장단점
장점
- 논리적 데이터 독립성을 제공한다.
- 동일 데이터에 대해 상이한 요구들을 충족 시킬 수 있다.
- 위에서 사용자에게 접근이 허용된 데이터 만을 제한적으로 보여준다고 했다. 이는 원본 테이블의 공개 없이 컬럼과 데이터만 공개되므로
보안적으로 이점이 있다.
단점
- 뷰로 구성된 데이터에 대한 삽입, 삭제, 갱신, 연산에 제약이 따른다.
뷰 구현
그러면 이제 직접 뷰를 구현해보자.
CREATE VIEW 뷰이름 AS SELECT 문;
DROP VIEW 뷰이름 RESTRICT or CASCADE;
- RESTRICT : 뷰를 다른곳에서 참조할 경우 삭제 취소
- CASCADE : 뷰를 참조하는 다른 뷰나 제약 조건들까지 모두 삭제
뷰는 위와 같은 형식으로 만들어진다.
제약 사안
모든 뷰에 삽입, 수정, 삭제 연산을 할 수 있는 것은 아니고 몇가지 제약 사안들이 존재한다.
- 기존 테이블의 기본키를 구성하는 속성이 포함되지 않는 경우
- 만약 뷰에서 기본 테이블의 pk 행을 포함하지 않았을 경우, INSERT 를 수행했을 경우 기본 테이블에 PK 는 들어가지 않는다.
이는 테이블의 제약 조건에 범하는 일이므로 불가능하다.
-
기본 테이블에 있던 내용이 아닌 집계 함수로 새로 계산된 내용을 포함하고 있는 뷰는 변경할 수 없다.
-
GROUP BY, DISTINCT 키워드를 포함하여 정의한 뷰는 변경할 수 없다.
- DISTINCT 키워드를 사용할 경우 삽입 수정 삭제 연산을 할 때 어떤 튜플을 변화시켜야 할지 명확하지 않다.
- JOIN 을 하여 정의한 뷰의 경우에도 변경이 불가능한 경우가 많다.