SqlD나 데이터베이스를 공부하다 보면 뷰(view)에 대해 다룬 내용을 마주할 때가 있으리라 생각됩니다.
대부분 뷰가 그냥 SELECT문을 날려서 보여주는 테이블 정도로만 이해하하고 넘어가시는 분도 계시지만 조금 구체적으로(?) 뷰와 뷰의 특징은 어떻게 되는지 한번 알아보겠습니다.
우선 뷰는 한 번 생성해 놓으면 테이블이라고 생각해도 될 정도로 테이블과 거의 동일한 개체로 여겨집니다.
그렇기 때문에 사용자가 SELECT 문을 통해 쿼리를 실행하면, 그것에 대한 결과값으로 보여지는 테이블이 뷰 테이블이라고 할 수 있습니다.
그럼 일반 테이블이랑 뭐가 다른 것이냐?
'읽기 전용'으로 많이 사용되는 것이 다르다고 할 수 있습니다. 하지만 뷰를 통해 원 테이블의 데이터를 수정할 수도 있습니다. 이 부분에 대해서 다르다고 말하기는 힘들 것 같습니다.
하지만 뷰만의 장점이 있습니다
1. 보안에 도움이 된다
간단한 예를 들어보겠습니다.
아래는 userTbl이라는 유저 테이블의 기록을 모두 불러온 쿼리의 결과 입니다.
만약에 아르바이트 생을 고용해서 회원의 이름과 주소를 확인하는 작업을 시킨다고 가정해보죠.
이러한 경우에 아르바이트생에게 아래의 그림처럼 userTbl 테이블에 접근하도록 한다면 사용자의 중요 개인 정보(키, 전화번호 등)까지 모두 노출이 되겠죠.
이를 방지하기 위해서 테이블의 데이터를 열로 분할하여 관리할 수 있겠지만, 데이터의 일관성 및 관리가 무척이나 복잡해질 수 있습니다.
이런 경우에 뷰 VIEW를 활용하여 아르바이트 생에게 userTbl은 접근할수 없도록 권한을 제한하고, 뷰에만 접근 권한을 주면 해결할 수 있습니다.
2. 복잡한 쿼리를 단순화 할 수 있다
만약에 조인트 테이블의 결과를 자주 확인해야한다면, 뷰 테이블을 생성하면 쿼리를 단순화할 수 있습니다.
뷰로 생성해놓고, 해당 뷰만 접근하면 편하기 때문이죠.
아래 그림을 보겠습니다.
유저의 정보가 있는 유저테이블과 구매 내역이 기록된 구매 테이블을 연결하여 출력한 결괏값입니다.
이를 뷰로 생성해둔다면, 사용자는 해당 뷰만 접근하면 간단한 쿼리를 통해 원하는 데이터에 접근할 수 있습니다.
아래 그림을 확인해보면, view를 생성함으로써 단순히 마지막 SELECT문 하나로 두 테이블의 정보를 가져올 수 있습니다.
'SQL > MariaDB' 카테고리의 다른 글
[sql] 클러스터형 인덱스와 보조 인덱스 특징 (0) | 2023.01.03 |
---|