[DataBase] 데이터 베이스 View란? - view의 정의와 특징, 사용 방법

728x90

데이터베이스 공부하면 테이블 생성, 조회, 수정, 삭제를 먼저 배웁니다. 그 다음부터는 더 최적화하는 것을 배웁니다. 그 부분에서 View와 인덱스 등이 나오는 것이죠.

View에 대해 정리해보겠습니다.

 

💡View란?

데이터베이스에서 뷰(View)란 한개 이상의 테이블에서 파생된 가상의 테이블 입니다. 

뷰는 기본 테이블의 데이터를 저장하지 않으며, 실제로는 물리적인 공간을 차지하지 않습니다. 대신 뷰는 기본 테이블의 데이터에 대한 논리적인 뷰를 제공하며, SQL 쿼리를 사용하여 생성됩니다.

 

 

📌뷰( View )의 특징

1. 뷰는 실제 데이터를 저장하지 않습니다. 대신, 기존 테이블의 데이터를 참조하며, 사용자게에 보여지는 데이터는 쿼리에 의해 결정됩니다.

2. 뷰느 데이터를 필터링하거나 정렬하는 데 사용될 수 있습니다. 이를 통해 사용자는 필요한 데이터만을 선택적으로 볼 수 있습니다.

3. 뷰는 데이터의 보안을 강화하는 데 도움이 될 수 있습니다. 뷰를 통해 사용자는 허용된 데이터만 볼 수 있으며, 민감한 데이터는 수길 수 있습니다.

4. 뷰는 복잡한 쿼리를 단순화하는 데 도움이 됩니다. 뷰를 사용하면 여러 테이블에 걸쳐있는 복잡한 조인, 서브쿼리, 계산된 컬럼 등을 간단한 형태로 표현할 수 있습니다.

 

 

 

🍀뷰( View )의 장단점

장점

1. 복잡한 쿼리를 간소화

뷰는 복잡한 쿼리를 단일 테이블처럼 보이게 하여 사용자의 데이터 접근을 단순화할 수 있습니다.

2. 데이터 보안 강화

뷰를 사용하면 사용자에게 필요한 데이터만 표시하고, 민감한 정보를 숨길 수 있습니다.

3. 데이터 독립성

뷰는 기본 테이블의 구조가 변경되더라도 사용자에게 영향을 주지 않습니다. 이는 데이터를 조작하는 응용 프로그램이 데이터베이스의 물리적 구조에 의존하지 않도록 해줍니다.

 

 

단점

1. 성능 저하

뷰는 실제 데이터를 저장하지 않으므로, 뷰를 통해 데이터를 조회할 때마다 기본 테이블에서 매번 데이터를 가져와야 합니다. 이로 인해 성능 저하가 발생할 수 있습니다.

2. 데이터 갱신 제한

뷰는 기본 테이블의 데이터를 갱신하는 데 제한이 있을 수 있습니다. 예를 들어, 여러 테이블로부터 파생된 뷰에서는 데이터 갱신이 불가능할 수 있습니다.

 

 

즉 뷰는 기본적으로 읽기 전용이며 일부 경우에는 업데이트(Insert, Update, Delete)가 가능합니다. 

뷰는 실제 데이터를 저장하지않고 기본 테이블의 데이터를 참조합니다.

뷰를 사용하면 특정 사용자가 접그할 수 있는 데이터를 제한하거나 민감한 데이터를 숨길 수 있습니다.

뷰의 정의를 변경하려면 뷰를 삭제하고 다시 생성해야합니다. Drop과 Create의 SQL문을 다시 생성해야하는 것입니다.

 

 

 

🖊️View 생성 방법 및 코드

예시 1

CREATE VIEW StudentView AS
SELECT name, age
FROM student
WHERE age >= 20;

'student'테이블에서 'age'가 20 이상인 학생들의 'name'과 'age'만을 선택해서 'StudentView'라는 뷰를 생성함

 

예시 2

CREATE VIEW HighGradeStudents AS
SELECT name, grade
FROM student
WHERE grade = 'A';

'student' 테이블에서 'grade'가 'A'인 학생들의 'name'과 'grade' 만을 선택해서

'HighGradeStudents'라는 뷰를 생성합니다.

 

 

🦴 뷰( View )와 인덱스( Index )의 차이점

뷰에 대해 정리하다 보니 인덱스와의 차이점을 잘 모르겠더라구요! 가상 테이블인건 알겠는데 조회하는 특징도 같고 참조하는 것도 같으니까 헷갈렸습니다. 그래서 찾아봤답니당

뷰와 인덱스는 역할과 특성이 매우 다릅니다.

뷰는, 

하나 이상의 테이블에서 파생된 가상의 테이블입니다. 필요한 데이터만 선택적으로 보여주거나 복잡한 쿼리를 단순화하는 데 사용됩니다.

인덱스는,

데이터베이스에서 데이터 검색 속도를 높이기 위한 자료구조입니다. 특정 테이블의 하나이상의 열에 대해 생성되며, 테이블의 데이터를 빠르게 검색하거나 정렬하는 데 사용합니다. 인덱스는 추가적인 저장공간이 필요하며, 데이터를 추가하거나 수정할 때 오버헤드가 발생할 수 있습니다.

 

즉, 뷰는 데이터의 논리적인 표현이며, 사용자가 데이터를 보고 이해하기 쉽게 만드는 역할을 합니다. 

인덱스는 데이터의 물리적인 구조와 관련이 있으며, 데이터의 검색 성능을 향상시키는 역할을 합니다.

데이터 베애스의 사용성과 성능을 높이는 데 기여합니다.

 

 

이렇게 되면 뷰를 가지고 여러 테이블을 합쳐 view 테이블을 생성한다음 인덱스를 만들어도 되나? 

라는 생각을 하게 되었습니다.

하지만, 틀렸습니다.

실제 데이터를 저장하지 않고, 기본 데이터를 참조하기 때문에 조회만 가능하지 생성할 수 없습니다.

인덱스는 생성된 테이블의 데이터를 빠르게 검색할 때 사용합니다.

 

 

728x90