[SQL] 전망 좋은 무엇을 위해인가?
SQL전망 좋은 무엇을 위해인가?
난 그냥보기는 RDBMS에서의 사용 용도에 대한 일반적인 아이디어를 얻기 위해 노력하고있어. 즉 내가보기이며 어떻게 하나를 만드는 무엇인지, 말을하는 것입니다. 나는 또한 과거에 그들을 사용했습니다 것을 알고있다.
하지만 확실히 내가 철저한 뷰가 유용 무엇인지 이해하고 어떤 뷰가 유용하지 않아야을 만들고 싶어. 더 구체적으로:
(그리고 기록을 위해,이 질문의 일부는 의도적으로 순진하다. 이는 부분적으로 개념을 확인합니다.)
해결법
-
==============================
1.1)보기에 유용 무엇입니까?
1)보기에 유용 무엇입니까?
2) 당신이 하나를 사용하지 않아야 할 때보기를 사용하려면 유혹하는 어떤 상황이 있습니까?
3) 왜 반대 테이블 반환 함수 또는 그 같은 대신에 뷰를 사용해야합니까?
4)보기가 먼저 눈에 식별 할 수없는이 유용 할 수 있다는 어떤 상황이 있습니까?
-
==============================
2.어떤면에서, 뷰는 인터페이스 같다. 당신은 당신이 원하는 모든 기본 테이블 구조를 변경할 수는 있지만 변경할 필요가 없습니다에 뷰는 코드에 대한 방법을 제공합니다.
어떤면에서, 뷰는 인터페이스 같다. 당신은 당신이 원하는 모든 기본 테이블 구조를 변경할 수는 있지만 변경할 필요가 없습니다에 뷰는 코드에 대한 방법을 제공합니다.
뷰는 보고서 작성자에 뭔가 간단한을 제공하는 좋은 방법입니다. 비즈니스 사용자가 Crystal Reports를 같은에서 데이터에 액세스하려면, 당신은 그들에게 데이터를 간단하게 자신의 계정에서 일부 전망을 제공 할 수 있습니다 - 어쩌면 그들을 위해 그것을 비정규.
-
==============================
3.뷰는 보안을 제공 할 수 있습니다 (예 : 사용자는 테이블의 특정 컬럼에 액세스 뷰에 액세스 할 수 있습니다) 뷰 않는 한 (등 업데이트, 삽입, 조회수는 별칭 열 이름에 대한 방법을 제공하기위한 추가 보안을 제공 할 수 있습니다, SP의)하지만 전망은 더 실제 테이블에서 고립입니다.
뷰는 보안을 제공 할 수 있습니다 (예 : 사용자는 테이블의 특정 컬럼에 액세스 뷰에 액세스 할 수 있습니다) 뷰 않는 한 (등 업데이트, 삽입, 조회수는 별칭 열 이름에 대한 방법을 제공하기위한 추가 보안을 제공 할 수 있습니다, SP의)하지만 전망은 더 실제 테이블에서 고립입니다.
-
==============================
4.어떤 의미에서 전망은 비정규. 비정규은보다 의미있는 방식으로 데이터를 제공하기 위해 때때로 필요하다. 이 응용 프로그램의 많은 해당 개체의 도메인 모델링의 방법으로 어쨌든 할 것입니다. 그들은 더 밀접는 비즈니스 '관점과 일치하는 방식으로 데이터를 표시 도움이됩니다.
어떤 의미에서 전망은 비정규. 비정규은보다 의미있는 방식으로 데이터를 제공하기 위해 때때로 필요하다. 이 응용 프로그램의 많은 해당 개체의 도메인 모델링의 방법으로 어쨌든 할 것입니다. 그들은 더 밀접는 비즈니스 '관점과 일치하는 방식으로 데이터를 표시 도움이됩니다.
-
==============================
5.뷰는 데이터베이스의 복잡성을 숨 깁니다. 그들은 많은 이유를 위해 중대하다 및 많은 상황에서 유용하지만 당신은 자신의 쿼리 및 보고서를 작성할 수있는 사용자가 있다면, 당신은 확실히 그들이 심하게 설계 제출하지 않을 수 있도록 안전 장치로 사용할 수 있습니다 불쾌한 데카르트와 쿼리는 데이터베이스 서버 다운이 걸릴 합류했다.
뷰는 데이터베이스의 복잡성을 숨 깁니다. 그들은 많은 이유를 위해 중대하다 및 많은 상황에서 유용하지만 당신은 자신의 쿼리 및 보고서를 작성할 수있는 사용자가 있다면, 당신은 확실히 그들이 심하게 설계 제출하지 않을 수 있도록 안전 장치로 사용할 수 있습니다 불쾌한 데카르트와 쿼리는 데이터베이스 서버 다운이 걸릴 합류했다.
-
==============================
6.다른 사람이 언급 한 내용 외에도, 뷰는 응용 프로그램에서 더 많은 complecated SQL 쿼리를 제거하는데 유용 할 수 있습니다.
다른 사람이 언급 한 내용 외에도, 뷰는 응용 프로그램에서 더 많은 complecated SQL 쿼리를 제거하는데 유용 할 수 있습니다.
예를 들어, 대신 응용 프로그램이 일에 :
당신 수 추상적 그 뷰에 :
앱 코드에서, 단순히 있습니다 :
데이터 구조가 이제까지 변경하는 경우 또한, 당신은 응용 프로그램 코드를 재 컴파일 및 재배포를 변경할 필요가 없습니다. 당신은 단지 dB에서보기를 변경합니다.
-
==============================
7.이보기를 사용하도록 유혹 할 수있는 상황이 있다면 영업 물었다하지만 적절한 아니에요.
이보기를 사용하도록 유혹 할 수있는 상황이 있다면 영업 물었다하지만 적절한 아니에요.
당신은 무엇을보기를 사용하지 않는 것은 복잡한 조인을 대신합니다. 즉, 작은 조각 몇 가지 뷰를 사용으로 당신을 이끌로 아래로 문제를 깨는의 절차 적 프로그래밍 습관을하지 않는 것은 함께 결합 대신에 하나의 큰 가입. 그것은 본질적으로 오히려 하나의 큰 하나보다 여러 별도의 쿼리를하고있어 이후 이렇게하면 데이터베이스 엔진의 효율성을 죽일 것이다.
예를 들어, 당신이 함께 테이블 A, B, C 및 D에 가입해야 가정 해 봅시다. 당신은 테이블 A & B와 C & D의보기 밖으로의 전망을 만들어 다음 함께 두 개의 뷰에 가입하도록 유혹 할 수있다. 그것은 단지 하나 개의 쿼리에서 A, B, C 및 D에 가입하는 것이 훨씬 낫다.
-
==============================
8.뷰는 중앙 집중화 또는 데이터를 통합 할 수 있습니다. 나는에있어 우리는 어디에서 몇 가지 연결된 서버에 서로 다른 데이터베이스의 번호를 가지고있다. 각 데이터베이스는 다른 응용 프로그램에 대한 데이터를 보유하고 있습니다. 이러한 데이터베이스의 부부는 서로 다른 응용 프로그램의 수에 relavent되는 정보를 보유. 우리가 그 상황에서 할 수 있습니다 우리가 작성하는 쿼리가 서로 다른 데이터베이스에서 가고있는 것처럼 보이지 않는 그래서, 단지 데이터가 실제로 저장되어있는 데이터베이스에서 데이터를 가져옵니다 것을 해당 응용 프로그램의 데이터베이스에보기를 만들 수 있습니다.
뷰는 중앙 집중화 또는 데이터를 통합 할 수 있습니다. 나는에있어 우리는 어디에서 몇 가지 연결된 서버에 서로 다른 데이터베이스의 번호를 가지고있다. 각 데이터베이스는 다른 응용 프로그램에 대한 데이터를 보유하고 있습니다. 이러한 데이터베이스의 부부는 서로 다른 응용 프로그램의 수에 relavent되는 정보를 보유. 우리가 그 상황에서 할 수 있습니다 우리가 작성하는 쿼리가 서로 다른 데이터베이스에서 가고있는 것처럼 보이지 않는 그래서, 단지 데이터가 실제로 저장되어있는 데이터베이스에서 데이터를 가져옵니다 것을 해당 응용 프로그램의 데이터베이스에보기를 만들 수 있습니다.
-
==============================
9.응답은 지금까지 올바른지 - 전망이 좋은, 데이터 모델 추상화 등 (완료 잘못된 경우 그 길 아래로 많은 고통이 있지만) 보안, 비정규을 제공하는
응답은 지금까지 올바른지 - 전망이 좋은, 데이터 모델 추상화 등 (완료 잘못된 경우 그 길 아래로 많은 고통이 있지만) 보안, 비정규을 제공하는
또한, 뷰는 일반적으로 비즈니스 로직을 (A 경과 사용자가 지난 40 일에 로그인하지 않은 사용자, 그런 일종)를 구현하는 데 사용됩니다.
-
==============================
10.뷰는 SQL 스크립트에서 반복 복잡한 가입 문의를 많이 저장합니다. 당신은 몇 가지 복잡한 일부 뷰에 가입하고 필요할 때마다 SELECT 문에 호출 캡슐화 할 수 있습니다. 이 때로는 정직하고, 편리하고, 모든 쿼리 문에 가입 작성하는 것보다 쉬울 것이다.
뷰는 SQL 스크립트에서 반복 복잡한 가입 문의를 많이 저장합니다. 당신은 몇 가지 복잡한 일부 뷰에 가입하고 필요할 때마다 SELECT 문에 호출 캡슐화 할 수 있습니다. 이 때로는 정직하고, 편리하고, 모든 쿼리 문에 가입 작성하는 것보다 쉬울 것이다.
-
==============================
11.뷰는 단순히 저장, 이름 SELECT 문입니다. 라이브러리 함수와 같은 전망을 생각하십시오.
뷰는 단순히 저장, 이름 SELECT 문입니다. 라이브러리 함수와 같은 전망을 생각하십시오.
-
==============================
12.내가보고 뷰의 사용을 강조하고 싶었다. 종종, 특히 데이터 (OLTP가 사용)을 편집 및 삽입, 성능을 향상하기 위해 데이터베이스 테이블을 정상화하고,보고 및 분석 (OLAP 사용)에 대한 쿼리 조인 테이블의 수를 줄이기 위해 비정규 사이에 충돌이 있습니다. 데이터 입력이 최적의 성능을 가지고 있어야하기 때문에 필요성, OLTP는 보통 이긴다. 뷰를 생성 한 후, 최적의보고 성능을 위해 사용자의 두 클래스 (데이터 입력 및 보고서 뷰어)를 충족하는 데 도움이 될 수 있습니다.
내가보고 뷰의 사용을 강조하고 싶었다. 종종, 특히 데이터 (OLTP가 사용)을 편집 및 삽입, 성능을 향상하기 위해 데이터베이스 테이블을 정상화하고,보고 및 분석 (OLAP 사용)에 대한 쿼리 조인 테이블의 수를 줄이기 위해 비정규 사이에 충돌이 있습니다. 데이터 입력이 최적의 성능을 가지고 있어야하기 때문에 필요성, OLTP는 보통 이긴다. 뷰를 생성 한 후, 최적의보고 성능을 위해 사용자의 두 클래스 (데이터 입력 및 보고서 뷰어)를 충족하는 데 도움이 될 수 있습니다.
-
==============================
13.나는 아주 오랫동안 기억 여러 조합을 포함하는 선택합니다. 각 UNION은 상당히 길고 하드 이해하기 그 자체였다 SELECT에 의해 즉석에서 생성 된 가격 테이블에 조인 포함되어 있습니다. 나는 가격 테이블을 생성 할 수있는 전망이 좋은 생각했을 것이다 생각합니다. 그것은 약 절반으로 전체 SELECT를 단축 한 것이다.
나는 아주 오랫동안 기억 여러 조합을 포함하는 선택합니다. 각 UNION은 상당히 길고 하드 이해하기 그 자체였다 SELECT에 의해 즉석에서 생성 된 가격 테이블에 조인 포함되어 있습니다. 나는 가격 테이블을 생성 할 수있는 전망이 좋은 생각했을 것이다 생각합니다. 그것은 약 절반으로 전체 SELECT를 단축 한 것이다.
나는 DB 번보기를 평가한다면 모르거나 할 때마다 한 번에이 호출되었습니다. 누구의 노하우? 전자의 경우, 뷰를 사용하면 성능이 개선 된 것이다.
-
==============================
14.당신이 필요로 언제든지 [my_interface]! = [user_interface].
당신이 필요로 언제든지 [my_interface]! = [user_interface].
예:
표 A :
표 A에 대한 VIEW :
이것은 당신이 한 번에 모두 이름을 고객으로부터 ID를 숨기고 더 자세한에 정보의 이름을 바꿀 수있는 방법입니다.
당신이 성능 저하, 선택 쿼리의 단지 더 나은 추상화를 볼 수 없습니다, 그래서보기, 기본 키 ID에 대한 기본 인덱스를 사용합니다.
from https://stackoverflow.com/questions/214132/what-are-views-good-for by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 임시 쿼리 나 저장 프로 시저 : 어느 것이 나은가? [닫은] (0) | 2020.04.23 |
---|---|
[SQL] MySQL은 - 모든 동일한 구조이지만 서로 다른 데이터를 여러 테이블에서 데이터를 선택 (0) | 2020.04.23 |
[SQL] 가장 최근의 행을 가입 MYSQL? (0) | 2020.04.23 |
[SQL] PostgreSQL의 : 어떤 데이터 유형은 환율에 사용되어야 하는가? (0) | 2020.04.23 |
[SQL] MySQL의 워크 벤치 : 살아 연결을 유지하는 방법 (0) | 2020.04.23 |