언제 그리고 왜 어떤 사람들은 데이터베이스에서 View를 만들어야한다고 결정합니까? 왜 일반 저장 프로 시저를 실행하거나 선택하지 않습니까?
답변
보기에는 몇 가지 이점이 있습니다.
1.보기는 복잡성을 숨길 수 있습니다
여러 테이블을 조인해야하거나 복잡한 논리 또는 계산이 필요한 쿼리가있는 경우 해당 논리를 모두 뷰로 코딩 한 다음 테이블처럼 뷰에서 선택할 수 있습니다.
2. 뷰는 보안 메커니즘으로 사용될 수 있습니다
뷰는 테이블에서 특정 열 및 / 또는 행과 기본 테이블 대신 뷰에 설정된 권한을 선택할 수 있습니다. 이를 통해 사용자가 볼 필요가있는 데이터 만 표면 처리 할 수 있습니다.
3. 뷰는 레거시 코드 지원을 단순화 할 수 있습니다
많은 코드를 손상시킬 수있는 테이블을 리팩토링해야하는 경우 테이블을 동일한 이름의보기로 바꿀 수 있습니다. 뷰는 원래 테이블과 정확히 동일한 스키마를 제공하지만 실제 스키마는 변경되었습니다. 이렇게하면 테이블을 참조하는 레거시 코드가 손상되지 않도록하여 여가 시간에 레거시 코드를 변경할 수 있습니다.
이들은 뷰가 어떻게 유용 할 수 있는지에 대한 많은 예 중 일부입니다.
답변
무엇보다도 보안에 사용될 수 있습니다. “고객”테이블이있는 경우 모든 영업 사원에게 이름, 주소, 우편 번호 등 필드에 액세스 할 수 있지만 credit_card_number는 액세스하지 못하게 할 수 있습니다. 액세스해야하는 열만 포함하는보기를 작성한 다음보기에 대한 액세스 권한을 부여 할 수 있습니다.
답변
뷰는 쿼리를 캡슐화 한 것입니다. 조회로 전환 된 쿼리는 복잡 해지는 경향이 있으며 재사용을위한 조회로 저장하는 것이 유리할 수 있습니다.
답변
일반적으로보고 목적으로 자주 사용되는 데이터를 비정규 화 및 / 또는 집계하기위한보기를 만듭니다.
편집하다
정교하게 말하면, 개인, 회사, 역할, 소유자 유형, 주문, 주문 세부 정보, 주소 및 전화 번호가있는 데이터베이스가 있어야합니다. 개인 테이블에는 직원과 연락처 및 주소가 모두 저장되어 있습니다. 전화 테이블에는 개인과 회사 모두의 전화 번호가 저장되어 있으며 개발 팀은 직원 별 판매, 고객 별 판매, 지역별 판매, 월별 판매와 같은 보고서를 생성하거나 개발자가 아닌 사람이보고 데이터에 액세스 할 수 있도록하는 업무를 맡았습니다. , 상태 별 고객 등 나는 실제 엔티티의보다 통합 된보기 (말장난 의도가 없음)를 사용할 수 있도록 데이터베이스 엔티티 간의 관계를 비정규 화하는보기 세트를 작성합니다. 다음과 같은 장점이 있습니다.
- 쿼리 작성시 중복성 감소
- 엔터티 관련 표준 설정
- 복잡한 계산 및 조인에 대한 성능을 평가하고 최대화 할 수있는 기회 제공 (예 : MSSQL의 스키마 바운드 뷰에서 인덱싱)
- 팀 구성원 및 비 개발자에게 데이터를보다 쉽게 액세스하고 직관적으로 제공
답변
몇 가지 이유 : 복잡한 조인이있는 경우 액세스 할 때마다 항상 조인이 올 바르고 개발자가 필요로하는 모든 테이블을 기억할 필요가 없도록보기를 갖는 것이 가장 좋습니다. 일반적으로 이는 모든 재무 보고서가 동일한 데이터 세트를 기반으로하는 것이 매우 중요한 재무 애플리케이션에 대한 것일 수 있습니다.
사용자가 볼 수있는 레코드를 제한하려는 경우 뷰를 사용하고 기본 테이블이 아닌 뷰에만 액세스 권한을 부여한 후 뷰를 조회 할 수 있습니다.
Crystal 보고서는 저장된 procs에 뷰를 사용하는 것을 선호하므로 많은 보고서 작성을하는 사람들은 많은 뷰를 사용하는 경향이 있습니다.
뷰는 데이터베이스를 리팩토링 할 때 매우 유용합니다. 변경 사항을 숨겨서 이전 코드가보기를 작성하여 변경 사항을 볼 수 없도록 할 수 있습니다. 리팩토링 데이터베이스를 읽으면 리팩토링하는 매우 강력한 방법이므로 이것이 어떻게 작동하는지 확인하십시오.
답변
저장 프로 시저에 비해 뷰의 주요 이점 중 하나는 테이블을 사용하는 것처럼 뷰를 사용할 수 있다는 것입니다. 즉, FROM
조회 절 에서 뷰를 직접 참조 할 수 있습니다 . 예, SELECT * FROM dbo.name_of_view
.
다른 모든 방법으로 저장 프로 시저가 더 강력합니다. 당신은 다음과 같은 매개 변수를 전달할 수 있습니다 out
당신이 할 수있는, 효과적으로 한 번에 여러 값을 반환 할 수 있도록 매개 변수 SELECT
, INSERT
, UPDATE
, 및 DELETE
운영, 등 등
FROM
절 내에서 View의 쿼리 기능을 원하지만 매개 변수를 전달하려는 경우에도 그렇게하는 방법이 있습니다. 이를 테이블 반환 함수라고합니다.
다음은이 주제에 대한 매우 유용한 기사입니다.
편집 : 그건 그렇고, 이런 종류의 질문은 테이블 뷰 함수에 비해 뷰가 어떤 이점을 가지고 있습니까? 나는 그것에 대한 좋은 대답이 없지만 뷰를 만드는 T-SQL 구문은 테이블 반환 함수보다 간단하며 데이터베이스 사용자는 뷰에 더 익숙 할 수 있습니다.
답변
ORM과 테이블 사이에 좋은 “중간자”역할을 할 수 있습니다.
예:
SomeColumn 열이 다른 테이블로 이동하고 일대 다 관계를 갖도록 구조를 변경해야하는 Person 테이블이있었습니다.
그러나 개인과 관련하여 대부분의 시스템은 SomeColumn을 단일 항목으로 사용했습니다. 우리는 뷰를 사용하여 SomeColumns를 모두 모아서 뷰에 넣었습니다.
이는 데이터 계층이 변경되었지만 비즈니스 요구 사항이 근본적으로 변경되지 않았기 때문에 작동했기 때문에 비즈니스 개체를 변경할 필요가 없었습니다. 비즈니스 객체가 변경되어야한다면 이것이 가능한 해결책이라고 생각하지는 않지만 뷰는 확실히 좋은 중간 지점으로 작동합니다.