DB-6.view,무결성 제약,trigger,권한.recursive sql

ttomy·2022년 7월 19일
0

6.1 뷰

뷰: 관계형 db에서 지원하는 기능으로 특정 사용자로부터 특정 속성을 숨기는 기능. 뷰 기능을 통해 민감한 데이터는 일반사용자에게 비노출되도록 할 수 있음.

  • create view 이름 as sql문
    문장으로 정의.

  • 뷰는 터플을 가지고 있지 않는다. 가상관계라고도 한다. 뷰 정의를 통한 가상의 테이블이기에 항상 최신의 정보를 보유한다.

  • 뷰를 정의할 때는 다른 뷰를 사용하거나, 자신의 뷰를 사용할 수도 있다(순환 뷰).

뷰 확장

뷰에 대한 질의는 실제적으로는 치환되어 베이스 테이블에 대한 질의문으로 처리된다. 즉, 뷰에 대한 질의는 뷰 정의 질의문+뷰에 대한 질의를 전부하는 질의이다.
ex)

뷰 변경

뷰에 대한 변경도 가능하다. 그런데 뷰에 대한 변경은 뷰를 정의하는 베이스 테이블에 대한 변경연산으로 변환되어 처리된다. 때문에 뷰에 대한 변경에는 제약이 있다.

조인으로 정의된 뷰에는 입력연산을 지원할 수 없다. 조인에 참여한 테이블들에 데이터가 어떻게 들어갈 지 모호한 점이 있기 때문이다.
뷰 정의에 집계함수가 있고, 그 집계함수를 통한 속성과 관련해 변경연산을 할 수 없다. 집계함수를 통한 속성은 가상의 속성이기에 베이스 테이블에 반영할 명확한 방법이 없기 때문이다.

  • 변경가능 뷰

    뷰가 변경가능 하려면 위와 같은 조건들을 만족해야 한다.
    뷰 정의에 group by, having, distinct,집합 연산,집계함수,order by..등이 있으면 뷰는 변경 불가능하다.

with check옵션

뷰에 의도치 않은 입력을 하면, 베이스 테이블에 반영이 되더라도 뷰에서는 그 터플을 확인할 수 없는 경우도 발생한다.

create statement 의 끝에 with check option을 붙이면 뷰 정의에 해당되지 않는 변경연산은 허락되지 않는다.

뷰 제약

  • 뷰에 대한 색인은 불가능하다.
  • 뷰에 대한 키 속성,무결성 제약은 정의할 수 없다.

0개의 댓글