뷰를 참조하는 뷰는 생성하지 말자

    다른 뷰를 참조하는 뷰를 생성하는 것은 가능하다. 이것은 명령형 프로그래밍 언어에 있는 프로시저를 처리하는 방식으로 뷰를 사용하는 것인데, 이렇게 하면 큰 실수를 할 수 있고 성능과 관리적 문제점을 일으킨다. 이런 뷰는 사용 이점을 모두 갉아먹는 결과만 낳을 뿐이다. 코드 3-3은 다른 뷰를 참조하는 뷰를 생성하는 예제이다.

    코드 3-3 세 가지 뷰 생성

    CREATE VIEW vActiveCustomers AS

    SELECT c.CustomerID, c.CustFirstName, c.CustLastName,

      c.CustFirstName + ‘ ‘ + c.CustLastName AS CustFullName

    FROM Customers AS c

    WHERE EXISTS

      (SELECT NULL

      FROM Orders AS o

      WHERE o.CustomerID = c.CustomerID

        AND o.OrderDate > DATEADD(MONTH, -6, GETDATE()));

     

    CREATE VIEW vCustomerStatistics AS

    SELECT o.CustomerID, COUNT(o.OrderNumber) AS OrderCount,

      SUM(o.OrderTotal) AS GrandOrderTotal,

      MAX(o.OrderDate) AS LastOrderDate

    FROM Orders AS o

    GROUP BY o.CustomerID;

     

    CREATE VIEW vActiveCustomerStatistics AS

    SELECT a.CustomerID, a.CustFirstName, a.CustLastName,

      s.LastOrderDate, s.GrandOrderTotal

    FROM vActiveCustomers AS a

      INNER JOIN vCustomerStatistics AS s

        ON a.CustomerID = s.CustomerID;


    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.