[sql] SQL 뷰를 사용하는 좋은 이유는 무엇입니까?

저는 SQL Server 2008 성경을 읽고 있으며 뷰 섹션을 다루고 있습니다. 그러나 저자는 실제로 견해 의 목적 을 설명하지 않습니다 . 뷰의 좋은 용도는 무엇입니까? 내 웹 사이트에서 사용해야하며 어떤 이점이 있습니까?



답변

이전 답변 중 어느 것도 언급하지 않은 또 다른 용도는 테이블 구조 변경을 더 쉽게 배포하는 것입니다.

T_OLD활성 사용자에 대한 데이터가 포함 된 테이블 ( ) 을 폐기 하고 대신 비슷한 데이터 (이름 T_NEW)가 있는 새 테이블을 사용 하지만 활성 및 비활성 사용자 모두에 대한 데이터가 있는 새 테이블을 사용하고 하나의 추가 열을 사용하려고합니다 active.

시스템에를 수행하는 무수히 많은 쿼리가있는 SELECT whatever FROM T_OLD WHERE whatever경우 롤아웃을위한 두 가지 선택 사항이 있습니다.

1) Cold Turkey -DB를 변경하는 동시에 해당 쿼리가 포함 된 수많은 코드를 변경, 테스트 및 릴리스합니다. 하기가 매우 어렵고 (또는 심지어 조정) 매우 위험합니다. 나쁜.

2) 점진적 – 작성하여 DB를 변경 T_NEW, 테이블을 삭제 T_OLD테이블을 대신에 생성 VIEW 라는 T_OLD모방이 있음을 T_OLD표 100 % (예를 들어 뷰 쿼리입니다SELECT all_fields_except_active FROM T_NEW WHERE active=1 ).

그것은 당신이에서 해당 현재 선택을 어떤 코드를 공개하지 않도록 할 수 있습니다 것 T_OLD, 그리고 마이그레이션 코드에 대한 변경 작업을 수행 T_OLD하는 T_NEW여가.

이것은 간단한 예이며, 다른 것들이 훨씬 더 많이 관련되어 있습니다.

PS 반면에에서 직접 쿼리하는 대신 저장 프로 시저 API가 있었어야 T_OLD했지만 항상 그런 것은 아닙니다.


답변

(Google 검색에 나온 첫 번째 자습서에서 복사했지만 (지금은 링크가 끊어짐) 직접 입력했을 때 얻을 수있는 모든 이점이 있습니다.)

보기에는 다음과 같은 이점이 있습니다.

  • 보안-기본 테이블에 직접 액세스 할 수없는 동안 사용자가 뷰에 액세스 할 수 있습니다. 이를 통해 DBA는 사용자에게 필요한 데이터 만 제공하는 동시에 동일한 테이블의 다른 데이터를 보호 할 수 있습니다.
  • 단순성-보기를 사용하여 복잡한 쿼리를 숨기고 재사용 할 수 있습니다.
  • 열 이름 시뮬레이션 또는 설명-뷰를 사용하여 열 이름에 별칭을 제공하여 더 기억하기 쉽고 의미있게 만들 수 있습니다.
  • 디딤돌-뷰는 “다단계”쿼리에서 디딤돌을 제공 할 수 있습니다. 예를 들어 각 영업 사원이 만든 판매 수를 계산하는 쿼리보기를 만들 수 있습니다. 그런 다음 해당 뷰를 쿼리하여 판매 횟수별로 판매 직원을 그룹화 할 수 있습니다.


답변

Wikipedia의 몇 가지 이유 :

뷰는 테이블에 비해 다음과 같은 이점을 제공 할 수 있습니다.

  1. 뷰는 테이블에 포함 된 데이터의 하위 집합을 나타낼 수 있습니다.
  2. 뷰는 여러 테이블을 단일 가상 테이블로 조인하고 단순화 할 수 있습니다.
  3. 뷰는 집계 된 테이블로 작동 할 수 있습니다. 데이터베이스 엔진이 데이터 (합계, 평균 등)를 집계하고 계산 된 결과를 데이터의 일부로 표시하는
  4. 보기는 데이터의 복잡성을 숨길 수 있습니다. . 예를 들어보기가 Sales2000 또는 Sales2001로 표시되어 실제 기본 테이블을 투명하게 분할 할 수 있습니다.
  5. 는 저장하는 데 매우 적은 공간을 차지합니다 . 데이터베이스는보기에 대한 정의 만 포함하고 제공하는 모든 데이터의 사본은 포함하지 않습니다.
  6. 사용 된 SQL 엔진에 따라보기는 추가 보안을 제공 할 수 있습니다.
  7. 뷰는 테이블이 외부 세계 에 노출되는 정도를 제한 할 수 있습니다.


답변

VIEWS는 조인 할 다른 선택 / 쿼리에 포함될 수있는 SELECT / CODE의 재사용 가능한 섹션으로 사용할 수 있으며 매번 전체 SELECT를 다시 만들지 않고도 다양한 필터를 사용할 수 있습니다.

또한 로직을 단일 위치에 배치하므로 코드베이스 전체에서이를 변경할 필요가 없습니다.

보세요

저장 프로 시저, 함수, 뷰, 트리거, 인라인 SQL 중에서 선택

뷰의 주요 장점은 대부분의 상황에서 테이블처럼 사용할 수 있지만 테이블과 달리 매우 복잡한 계산과 일반적으로 사용되는 조인을 캡슐화 할 수 있다는 것입니다. 또한 저장 프로 시저를 제외하고 db의 거의 모든 개체를 사용할 수 있습니다. 뷰는 요약 계산 필드 등을 얻기 위해 Order Detail이있는 Order라고하는 동일한 테이블 집합을 항상 조인해야 할 때 가장 유용합니다.


답변

뷰는 추상화 계층이며, 데이터베이스 스키마를 캡슐화하고 내부 구현 세부 정보를 변경하는 결과로부터 사용자를 보호하는 등 좋은 추상화 계층이 수행하는 작업을 수행합니다.

인터페이스입니다.


답변

다음은 몇 가지 기준에 따라 엔터티를 제한하기 위해 뷰를 사용하는 매우 일반적인 사용입니다.

표 : USERS에는 모든 사용자가 포함됩니다.

보기 : ACTIVE_USERS에는 일시 중지, 차단, 활성화 대기 중이며 향후 활성 요구 사항의 일부로 정의 할 수있는 기준을 충족하지 않는 사용자를 제외한 모든 사용자가 포함됩니다. 이렇게하면 ACTIVE_USERS가 항상 원하지 않는 행을 숨길 수 있기 때문에 원하지 않는 행을 숨길 수 있으므로 원하지 않는 경우 USERS 테이블에서 행을 삭제할 필요가 없습니다.

이렇게하면 사용자 관리 페이지에서 테이블을 사용할 수 있지만 나머지 응용 프로그램은 프로세스를 실행하고 데이터에 액세스 / 수정할 수있는 유일한 사용자 일 수 있으므로 ACTIVE_USERS를 사용할 수 있습니다.


답변

뷰를 사용하면 여러 다른 테이블의 데이터를 결합하고 형식을 지정할 수 있습니다 (필드 결합, 더 의미있는 필드 이름 제공 등). 최종 사용자가 더 쉽게 사용할 수 있습니다. 이것은 데이터베이스 모델의 추상화입니다. 또한 사용자에게 테이블 자체에 대한 직접 액세스 권한을 부여하지 않고 테이블의 데이터에 대한 액세스 권한을 부여하는 데 사용할 수도 있습니다.