본문 바로가기
CS/DB

[DB] 가상 테이블, 뷰(VIEW)의 특성과 장단점

by jangThang 2023. 4. 23.
반응형

 주로 조회 용도로 만들어둔 가상 테이블을 뷰(VIEW)라고 합니다. 이러한 뷰의 특성, 장단점을 살펴보겠습니다.

 

[ Contents ]

     

     

    1. 뷰(VIEW)

    자주 조회하는 SELECT문을 저장해 둔 가상 테이블

     

     관계형 데이터베이스에서 테이블은 정규화되어 나뉘어 있습니다. 흩어진 모든 정보를 모아둔... 일명 Master(마스터) 테이블이 없다면, 매번 join을 통해서 여러 테이블을 모아 조회해야 합니다.

     

     예를 들어, 학생의 신상정보를 보려면 여러 테이블(신체, 학적, 성적, 등록, 봉사활동, 자격증, 어학 등등)을 학번으로 조인을 걸어서 통합해야 합니다. 이는 굉장히 귀찮고 손이 많이 가는 일이죠.

     

     

    CREATE VIEW 신상정보(학번, 신체, 학적, 성적, 등록, 봉사활동, 자격증, 어학)
    AS SELECT 학번, 신체, 학적, 성적, 등록, 봉사활동, 자격증, 어학
    FROM 학생, 신체, 학적, 성적, 등록, 봉사활동, 자격증, 어학
    WHERE 학생.학번 = 신체.학번
    AND 학생.학번 = 학적.학번
    (...)

    그래서 뷰(VIEW)를 만들어서, 이를 한번에 조회할 수 있도록 만듭니다.

     

     

    SELECT *
    FROM 신상정보
    WHERE 학번 = '23101399'

     그러면 간단히 학번만으로 학생의 신상정보를 조회할 수 있습니다.

     

     

     

    2. 뷰의 특성

    - 가상테이블로서, 물리적으로 존재하지 않음
    - 조회는 가능하지만, 삽입/갱신/삭제에는 제약이 따름
    - 특정 뷰에 접근할 수 있는 사용자를 분리하여, 외부 스키마를 구성할 수 있음
    - 뷰를 참조하여 또 다른 뷰를 생성 가능
    - 뷰가 참조하는 기존 테이블이 삭제되면 뷰도 같이 삭제됨

     

     뷰는 테이블처럼 DB에 저장되어 있지 않습니다. 그저 저장된 SELECT문일뿐이죠.

     그래서 삽입, 갱신, 삭제가 어렵습니다. SELECT문에서 임의로 삭제나 삽입을 하려면 UNION이나 MINUS로 특정 row를 빼거나, WHERE문에서 추가 조건을 달아줘야 하죠. 테이블처럼 직접 삭제 및 삽입, 갱신은 할 수 없습니다.

     뷰는 외부 스키마를 구성할 수도 있습니다. 사용자들은 대부분 조회 업무를 위주로 합니다. (ex 학생의 성적조회, 직원의 급여 조회) 그래서 사용자들에게 뷰의 조회권한을 위임하는 방법으로 외부 스키마를 형성하기도 합니다.

     

     

     

    3. 뷰의 장단점

    1) 장점

    - 논리적 독립성
    - 보안성
    - 데이터 관리 용이
    - 사용자별 요구나 기능을 지원

     

     

    2) 단점

    - 독자적인 인덱스 불가능
    - VIEW 변경 불가 (오로지 삭제 후 재생성만 가능)
    - 삽입, 삭제, 갱신 어려움
    - 조회 성능 저하

     

     뷰를 조회한다는 건, 사실 FROM 절에 긴 SELECT문을 테이블로 만든 '인라인 뷰'를 사용하는 것과 비슷합니다. 그래서 확실히 DB 내 테이블을 조회하는 것과는 성능 차이가 큽니다.

     그래서 뷰를 아예 테이블로 만들어버린 마스터 테이블이 존재하죠. 이를 반정규화라고 하며, 실무에서는 자주 볼 수 있는 테이블 유형입니다.

     

     

    star가 되고나서 Tistory

    반응형

    댓글