공부기록

View 본문

CS/DB

View

코타쿠 2021. 5. 1. 13:44
  • 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을 넣는다.
  • 뷰 제약
    • 뷰에 대한 색인은 불가능
    • 뷰에 대한 키 속성 또는 무결성 제약을 정의할 수 없다.

'CS > DB' 카테고리의 다른 글

권한  (0) 2021.05.01
무결성  (0) 2021.05.01
인덱스  (0) 2021.04.30
트랜잭션  (0) 2021.04.30
DML SQL  (0) 2021.04.30