- view
- 관계형 데이터 베이스에서 뷰는 특정 사용자로부터 특정 데이터를 숨기는 것
- 실제 스키마가 아니지만 '가상의 관계'로써 사용자에게 보여지는 것을 뷰라고 한다.
- view definition
- create view v as <query>
- 예시
create view my Professor as
select pID, name, deptName
from professor;
- 뷰는 항상 최신 데이터를 보유한다
- 뷰는 한 개 이상의 테이블로 붜 정의할 수 있다.
- 뷰는 테이블은 튜플을 실제로 가지지 않기에 가상 관계, 또는 가상 테이블로 불린다.
- 뷰는 테이블의 정보를 가져올 뿐이므로 테이블을 최신 데이터를 항상 보여주게 된다.
- 다른 뷰를 사용하는 뷰
- 뷰를 정의할 때 베이스 테이블, 혹은 다른 뷰를 사용할 수 있다.
- 순환 뷰
- 새로운 뷰를 정의할 때 뷰 자신을 이용하는 것
- 이러한 순환뷰는 비순환뷰와 다르게 처리해야함
- 뷰 확장
- 뷰에 대한 질의가 들어오면 해당 뷰의 정의로 치환하여 베이스 테이블에 대한 질의문이 되도록 한다.
- 변환 과정은 뷰 정의가 베이스 관계만으로 구성될때 까지 진행, 치환되는 뷰가 순환 뷰가 아니면 상기 치환 연산은 궁극적으로 종료된다.
- 변환된 질의문의 결과는 오직 베이스 테이블로만 구성이 된다.
- 뷰 변경
- 뷰를 통한 변경 연산도 가능하다.
- 많은 제약이 따른다.
- 자연조인을 적용한 view, 집계 함수를 사용한 view 같은 경우에는 변경연산을 지원하지 못한다.
- 변경 가능 뷰
- 아래와 같은 조건을 만족할 때 뷰를 통한 변경연산이 가능하다.
- from 항에 오직 하나의 관계만 사용된다.
- select 항에 관계의 속성 이름만 포함되며 집계함수, distinct, 표현이 있으면 안된다.
- select 항에 들어가지 않은 속성이 null값을 가질 수 있어야 한다.
- set연산자, group by, having 항을 가져서는 안된다.
- join을 사용한 뷰는 한 번에 오직 하나의 테이블에 대해서만 변경연산이 가능하다.
- with check option
- 뷰 연산 과정에서 고려해야하는 다른 사항
- 뷰를 통해 생성, 갱신되는 튜플은 뷰의 정의를 반드시 따라야 함을 명시한다.
- create 선언 뒤에 with check option을 넣는다.
- 뷰 제약
- 뷰에 대한 색인은 불가능
- 뷰에 대한 키 속성 또는 무결성 제약을 정의할 수 없다.