6.1 뷰
뷰: 관계형 db에서 지원하는 기능으로 특정 사용자로부터 특정 속성을 숨기는 기능. 뷰 기능을 통해 민감한 데이터는 일반사용자에게 비노출되도록 할 수 있음.
create view 이름 as sql문
문장으로 정의.
뷰는 터플을 가지고 있지 않는다. 가상관계라고도 한다. 뷰 정의를 통한 가상의 테이블이기에 항상 최신의 정보를 보유한다.
뷰를 정의할 때는 다른 뷰를 사용하거나, 자신의 뷰를 사용할 수도 있다(순환 뷰).
뷰에 대한 질의는 실제적으로는 치환되어 베이스 테이블에 대한 질의문으로 처리된다. 즉, 뷰에 대한 질의는 뷰 정의 질의문+뷰에 대한 질의를 전부하는 질의이다.
ex)
뷰에 대한 변경도 가능하다. 그런데 뷰에 대한 변경은 뷰를 정의하는 베이스 테이블에 대한 변경연산으로 변환되어 처리된다. 때문에 뷰에 대한 변경에는 제약이 있다.
조인으로 정의된 뷰에는 입력연산을 지원할 수 없다. 조인에 참여한 테이블들에 데이터가 어떻게 들어갈 지 모호한 점이 있기 때문이다.
뷰 정의에 집계함수가 있고, 그 집계함수를 통한 속성과 관련해 변경연산을 할 수 없다. 집계함수를 통한 속성은 가상의 속성이기에 베이스 테이블에 반영할 명확한 방법이 없기 때문이다.
뷰에 의도치 않은 입력을 하면, 베이스 테이블에 반영이 되더라도 뷰에서는 그 터플을 확인할 수 없는 경우도 발생한다.
create statement 의 끝에 with check option을 붙이면 뷰 정의에 해당되지 않는 변경연산은 허락되지 않는다.