2011-03-26 3 views
2

MySQLCREATE VIEW 구문을 읽었지 만 실제로 사용하지는 않았습니다.MySQL에서 VIEW를 적용하는 좋은 예는 무엇입니까?

응용 프로그램의 몇 가지 예를 보여주십시오.

+0

그리고 주어진 답변에 덧붙여 기사를 보여주고 싶습니다. http://www.oraclesolved.com/general/Q_25482999-Reasons-for-using-views.jsp PS : 그 기사를 읽고 추가 할 때 그것은 내 북마크에 그것은 어떤 등록없이 읽을 수있었습니다 : - – zerkms

답변

4

비 구체화 된 뷰는 실제로 매크로입니다. 뷰를 참조하면 뷰가 참조 뷰에 사용되는 쿼리임을 나타냅니다. IE :

CREATE VIEW your_vw AS 
    SELECT * 
    FROM EMPLOYEES 

이 :

SELECT * FROM your_vw 

... 사용하는 당신이 얻을했던 것과 일치하는 결과 집합을 반환합니다

SELECT x.* 
    FROM (SELECT * 
      FROM EMPLOYEES) x 

나는 비 구체화 언급하지만, MySQL을 구체화 된보기를 지원하지 않습니다. 다른 데이터베이스 (오라클, SQL Server는 그것들을 "인덱스 된 뷰"라고 부르며, DB2)는 구체화 된 뷰를 지원하지만 이는 문제가되지 않습니다. 이제부터는 뷰를 작성할 때 구체화되지 않은 뷰에 대해서만 설명하겠습니다.

뷰는 캡슐화/추상화에 사용됩니다. 사용자가 액세스 할 수있는 경우가 아니라면 뷰의 기본 쿼리가 무엇인지 알 수 없습니다. 이것은 상황에 따라 좋거나 나쁘다. 데이터 모델 정보를 제공하는 것이 걱정된다면 좋을 것이다. 다른 대부분의 경우에는 좋지 않습니다. 보기에서 ORDER BY를 사용하는 것은 주문을 적용하는 데 리소스가 필요하기 때문에 나쁘다. 캡슐화/추상화로 인해 다른 사람이 주문을 적용 할 수 있습니다. 이는 리소스 낭비입니다. 뷰를 쌓아 올리는 것 (뷰에 빌드 된 뷰)은 또 다른 나쁜 습관입니다. 뷰가 실행될 때까지는 오류가 발생하지 않습니다.

테이블에 대한 액세스 권한을 부여 할 필요없이 데이터에 대한 액세스를 제공하기 위해 사용한 뷰이지만 기본 테이블 업데이트를 지원하도록 발전했습니다. 나는 그러한 상황을 위해 테이블에 대한 접근 권한을 부여하는 것을 선호한다.

2

RDBMS와 관계없이보기는 기본 테이블에 대한 액세스를 단순화하거나 제한하는 데 사용됩니다.

예를 들어, 최종 사용자 및 비정형 화 조인이 쉽게 이해하고 소비 할 수 있도록 열 이름을 변경하는 경우가 있습니다.

다른 하나는 중요한 정보 (예 : 급여)에 대한 액세스를 차단합니다. 즉, 모든 사용 권한이 테이블에서 제거되고보기를 통해 제공되는 제어 된 액세스입니다.

+0

뷰를 업데이트 할 수 있습니다 - [MySQL] (http://dev.mysql.com/doc/refman/5.0/en/create-view.html), Oracle과 SQL Server는이 기능을 지원합니다. –

+0

@OMG 조랑말 : 물론. 나는 그들이 할 수 없다는 인상을주지 않기를 바랍니다. 나는 그들이 없을 수도있는 한 가지 예를 제공했다. –

관련 문제