본문 바로가기
정보처리기사/필기

[정보처리기사 필기 요약] 뷰(View)

by 채연2 2021. 3. 3.

* 뷰(View)

  • 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 테이블로부터 유도된 이름을 가지는 가상 테이블
  • 기본 테이블처럼 행과 열로 구성되지만 다른 테이블에 있는 데이터를 보여줄 뿐이지 데이터를 직접 담고 있지 않음
  • 아래 그림에서 '테이블 A'와 '테이블 B'는 물리 테이블 의미, '뷰C'는 두 개 테이블을 이용하여 생성한 뷰 의미

* 뷰 특징

  • 저장 장치 내 물리적으로 존재하지 않음 (가상 테이블)
  • 데이터 보정 등 임시적인 작업 위한 용도로 사용
  • 기본 테이블과 같은 형태 구조로 조작이 거의 비슷
  • 삽입, 삭제, 갱신에 제약 따름
  • 논리적 독립성 제공
  • 독자적 인덱스 가질 수 없음
  • Create View 시스템 권한 이용하여 뷰 생성
  • 데이터 선택적으로 뷰 이용하여 처리

 

* 뷰 사용

  • SELECT * FROM (View Name);
  • FROM 절에 있는 하나의 뷰를 통해 구성하는 복수 테이블 대체하는 단순성

 

* 뷰 장/단점

구분 장/단점 상세 내용
장점 논리적 독립성 제공 - 논리 테이블(테이블 구조가 변경되어도 뷰 사용하는 응용 P/G 변경하지 않아도 됨)
사용자 데이터 관리 용이 - 복수 테이블에 존재하는 여러 종류 데이터에 대해 단순한 질의어 사용 가능
데이터 보안 용이 - 중요 보안 데이터 저장 중인 테이블에는 접근 불허하고, 해당 테이블 일부 정보만을 볼 수 있는 뷰에는 접근 허용하는 방식으로 보안 데이터에 대한 접근 제어 가능
단점 뷰 자체 인덱스 불가 - 인덱스는 물리적으로 저장된 데이터 대상으로 하기에 논리적 구성인 뷰 자체는 인덱스 가지지 못함
뷰 정의 변경 불가 - 뷰 정의 변경하려면 뷰 삭제하고 재생성
데이터 변경 제약 존재 - 뷰 내용에 대한 삽입, 삭제, 변경 제약 있음

 

* 뷰 생성

  • CREATE VIEW (뷰 이름)(컬럼 목록) AS (뷰 통해 보여줄 데이터 조회용 쿼리문)
  • select문에는 UNION이나 ORDER BY절 사용 불가
  • 뷰 생성 시 컬럼명 기술하지 않으면 select문 컬럼 이름 자동 사용
상황 뷰 생성 쿼리문
테이블A 그대로 CREATE VIEW 뷰A AS select * from 테이블A;
테이블A 일부 컬럼 CREATE VIEW 뷰X AS select 컬럼1, 컬럼2, 컬럼3 from 테이블A;
테이블A와 테이블B 조인결과 CREATE VIEW 뷰Y AS select * from 테이블A a, 테이블B b where a.컬럼1=b.컬럼2;

 

* 뷰 삭제 및 변경

  • 뷰 정의 자체 변경하는 것은 불가능하며 물리적 내용은 뷰 이름과 데이터 조회하기 위한 쿼리문. 이때 뷰 이름이나 구문 쿼리문 변경은 허용 안됨
  • 뷰 정의 자체 변경하기 위해서는 삭제 후 재생성 통해서만 뷰에 대한 정의 변경 가능
  • DROP VIEW (뷰 이름) {RESTRICT | CASCADE};
  • RESTRICT : 뷰를 다른 곳에서 참조하고 있으면 삭제 취소됨
  • CASCADE : 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제됨

 

* 뷰 내용 변경

  • 뷰 통해 접근 가능한 데이터 대한 변경 가능하며 실행할 경우 뷰 생성하기 위해 유도된 기본 테이블 데이터가 변경 되지만 모든 경우에 데이터 변경 가능한 것 아님
  • 데이터 삽입 경우 뷰에 유도된 테이블 컬럼만 데이터가 삽입되고 기본 테이블 다른 컬럼은 NULL값으로 됨
  • 삭제나 변경도 유도된 여러 기본 테이블 중 어떤 컬럼인지 명확하게 구별 불가하기 때문에 일부 제약 따름
320x100

댓글