본문 바로가기
[개발] Programming/Database

데이터베이스 뷰의 의미와 만드는 방법, 장단점 (DB View table)

by eatyourKimchi 2022. 2. 3.

 

데이터베이스 뷰(View)란?

 

 DB에서 뷰는 하나 또는 그 이상의 테이블을 조인하여 만든 새로운 가상 테이블을 의미한다. 실제로 테이블을 생성한 건 아니지만, 사용자에게는 실존 테이블과 동일하게 사용된다. (뷰를 가지고 새로운 뷰를 만들 수도 있다.) 이는 주로 특정 정보만 제공하고 싶은 경우나 복잡한 쿼리를 가상 테이블로 만들어 간편하게 활용할 수 있어 업무에서도 자주 이용하는 기능이다. 

 

 

예를 들어 자세히 설명하자면,

 

 두 개의 테이블이 있다고 가정하자. memberInfo, PaymentHist. 개발자가 회원 별 결제 이력을 조회하고 싶은데, 회사 규정상 민감한 개인정보는 제공하고 싶지 않은 경우 뷰를 만들어서 제공하면 된다. 테이블 memberInfo에 있는 민감한 개인정보가 담긴 컬럼을 제외하고 PaymentHist에도 카드 번호를 제외한 컬럼만 조인해서 뷰를 만들고 개발자에겐 해당 뷰를 접근시키면 된다.

 

 

 

데이터베이스 뷰(View) 만드는 방법

 

 뷰는 정말 간단하게 생성할 수 있다. 아래와 같이 일반 SELECT 쿼리 위에 CREATE VIEW '신규 뷰 명' AS 문구만 추가하면 된다. SELECT 쿼리에는 기존 뷰 또는 테이블을 조회해 주면 되는데, 개수는 하나부터 사용 가능하다. 즉, 단일 테이블 또는 조인한 형태 모두 가능하다.

 

CREATE VIEW viewTableEx1 AS (
  SELECT CustomerID, OrderID, Quantity
  FROM Orders
  WHERE ProductID = "P1" )
;
-- 생성할 뷰 명칭은 viewTableEx1

 

 

아래는 두 개의 테이블을 조인하여 뷰를 만든 예시.

 

해당 예시는 매우 심플한 케이스인데, 업무를 하다 보면 수많은 테이블을 조인하고, 쿼리만 100 줄이 넘어가는 경우도 적지 않기에 뷰를 미리 구성해 놓는다면 매우 편리하게 조회할 수 있습니다.

CREATE VIEW viewTableEx2 AS (
 SELECT Customer.CustomerName, Orders.Quantity
  FROM Customer JOIN Orders
    ON Customer.CustomerID = Orders.CustomerID )
;
-- 생성할 뷰 명칭은 viewTableEx2

 

 

뷰 삭제 명령 문은 아래와 같다.

DROP VIEW viewTableEx2 
;
-- 뷰 viewTableEx2 삭제

 

 

뷰를 조회하는 방법은 일반적으로 테이블을 SELECT 하는 것과 동일하다.

SELECT CustomerID, OrderID, Quantity
 FROM viewTableEx
WHERE CustomerID = "Cus1190"
;

 

뷰를 읽기 전용으로 만들고 싶은 경우 쿼리 마지막에 'with ready only' 만 추가해주면 된다.

그러면 DML(INSERT, UPDATE, DELETE)은 사용할 수 없기에 외부에 제공할 때 사용하기 좋은 옵션이다.

 

 

 

데이터베이스 뷰(View) 장단점

 

 마지막으로 뷰의 장단점은 아래와 같다.

 

 

뷰의 장점

  • 데이터 조회가 용이하다 (복잡한 쿼리를 단순화)
  • 사용자 별 필요한 정보만 제공할 수 있다 (보안 이점)
  • 물리적인 공간이 필요하지 않다

 

뷰의 단점

  • 뷰에 인덱스를 구성할 수 없다
  • 뷰를 포함하여 뷰를 만든 경우 연관 뷰를 삭제하면 생성된 뷰도 삭제된다
  • 한번 정의된 뷰는 수정이 불가하다

 

 

 

댓글