티스토리 뷰

데이터베이스

[데이터베이스] #5. 뷰

ccc124213131 2021. 12. 26. 14:09
728x90

- 실제 데이터를 저장하지 않는 가상 테이블

- 사용자에게는 똑같은 테이블로 보이지만 CREATE TABLE 명령어로 만들어진 물리적인 기반 테이블과는 다름

- 테이블이 전체 조직의 관점에서 여러 사용자 요구를 수용하여 최적의 저장단위로서 만들어졌다면 뷰는 개인 관점에서 필요로 하는 접근 구조로서 자유롭게 정의할 수 있음

- 데이터베이스에 저장된 테이블 구조를 각 사용자별로 서로 다르게 볼 수 있도록 한다

- 뷰는 주로 기반 테이블로부터 정의되지만 또 다른 뷰를 기반으로도 정의될 수 있음

 

장점

1) 편의성, 재사용성

- 복잡한 질의문 작성이 쉽고 간단해짐

- 조인, 중첩 질의 등을 사용하여 뷰를 미리 생성하면, 복잡한 SQL문을 다시 작성할 필요가 없음

- 작성 빈도가 높거나 빈번하게 참조되는 검색 겨과가 있다면 미리 뷰로 정의해두고, 질의가 반복될 때마다 뷰를 이용하여 SQL 문을 간단하게 작성할 수 있음

 

2) 보안성

- 데이터 보안 유지가 쉬움

- 사용자에 따라 접근이 허용되지 않아야할 속성들을 숨길 수 있음

- 사용자 별로 특정 뷰를 통해서만 접근하도록 하면 데이터 접근을 제한할 수 있음

 

뷰를 통한 데이터 변경

- 뷰 검색은 제한 없이 가능한 반면 뷰 변경은 특정한 경우로 한정

- 이유는 SELECT의 조건이 다양하기 때문

- 예를들어, 조인, 합집합 등을 통해 여러 테이블을 결합하여 만들어진 뷰는 변경이 어려움. 뷰의 입력, 수정, 삭제는 결국 뷰가 참조하는 기반 테이블을 변경해야 하므로 내부 처리가 어려운 경우는 변경이 허용되지 않음

 

변경이 불가능한 뷰

- 기반 테이블의 기본키를 포함하지 않은 뷰

- 집계 함수(또는 계산) 결과를 포함하는 뷰

- DISTINCT 키워드를 적용한 결과를 포함하는 뷰

- GROUP BY 절을 적용한 결과를 포함하는 뷰

- 다수의 기반 테이블의 조인을 통해 생성된 뷰

- 뷰에 포함되지 않은 기반 테이블의 열이 NOT NULL인 경우

 

댓글