Khóa học
Các quản trị viên và người dùng cơ sở dữ liệu đối mặt với hai thách thức: viết truy vấn SQL phức tạp và bảo mật truy cập cơ sở dữ liệu. Đôi khi truy vấn SQL trở nên phức tạp do sử dụng nhiều phép join, truy vấn lồng và GROUP BY trong cùng một truy vấn.
Để đơn giản hóa các truy vấn như vậy, bạn có thể dùng một lớp trung gian (proxy) trên bảng gốc. Ngoài ra, đôi khi về mặt bảo mật, quản trị viên cơ sở dữ liệu muốn hạn chế truy cập trực tiếp vào cơ sở dữ liệu. Ví dụ, nếu một bảng có nhiều cột nhưng người dùng chỉ cần ba cột dữ liệu, DBA sẽ tạo một bảng ảo chỉ gồm ba cột. Cho cả hai mục đích này, bạn có thể dùng view. View có thể hoạt động như một proxy hoặc bảng ảo. View giúp giảm độ phức tạp của truy vấn SQL và cung cấp quyền truy cập an toàn vào các bảng bên dưới.
View là gì?
View là một phiên bản đặc biệt của bảng trong SQL. Chúng cung cấp một môi trường bảng ảo cho nhiều thao tác phức tạp. Bạn có thể chọn dữ liệu từ nhiều bảng, hoặc chọn dữ liệu cụ thể dựa trên các tiêu chí nhất định trong view. View không lưu trữ dữ liệu thực; nó chỉ lưu định nghĩa của view trong từ điển dữ liệu.

View là một truy vấn được lưu trong từ điển dữ liệu, người dùng có thể truy vấn lên đó giống như với các bảng. Nó không dùng bộ nhớ vật lý, chỉ có truy vấn được lưu trong từ điển dữ liệu. View được tính toán động mỗi khi người dùng thực hiện truy vấn lên nó. Các thay đổi được thực hiện tại bất kỳ thời điểm nào trên view sẽ được phản ánh vào bảng gốc thực tế.
View chủ yếu có hai mục đích:
- Đơn giản hóa các truy vấn SQL phức tạp.
- Hạn chế người dùng truy cập dữ liệu nhạy cảm.

Các loại View
- Simple View: View dựa trên một bảng duy nhất, không chứa mệnh đề
GROUP BYvà bất kỳ hàm nào. -
Complex View: View dựa trên nhiều bảng, có chứa mệnh đề
GROUP BYvà các hàm. -
Inline View: View dựa trên một truy vấn con trong mệnh đề
FROM, truy vấn con đó tạo một bảng tạm và đơn giản hóa truy vấn phức tạp. -
Materialized View: View lưu cả định nghĩa lẫn dữ liệu. Nó tạo bản sao dữ liệu bằng cách lưu trữ vật lý.

Simple View

Complex View


Inline View
Inline view là một câu lệnh SELECT trong mệnh đề FROM của một câu lệnh SELECT khác để tạo một bảng tạm có thể được tham chiếu bởi câu lệnh SELECT. Inline view được dùng để viết các truy vấn SQL phức tạp mà không cần các phép join và truy vấn lồng. Gọi là bảng tạm vì bản sao dữ liệu do truy vấn con lưu trữ trả về không được lưu trong cơ sở dữ liệu. Trong Oracle và cộng đồng Postgres, bảng tạm này được gọi là inline view. Nó cũng được gọi là subselect.

Materialized View
Materialized view sao chép vật lý dữ liệu đã truy xuất. Dữ liệu đã sao chép này có thể được tái sử dụng mà không cần thực thi lại view. Loại view này còn được gọi là "SNAPSHOTS". Materialized view giúp giảm thời gian xử lý để tái tạo toàn bộ dữ liệu. Nó giúp người dùng từ xa sao chép dữ liệu cục bộ và cải thiện hiệu năng truy vấn. Phần khó ở đây là đồng bộ các thay đổi giữa materialized view và các bảng nền tảng của nó.


So sánh giữa View và Materialized View

Tạo và xóa view trong SQL
View có thể được tạo mới và thay thế bằng CREATE VIEW và REPLACE VIEW.

View có thể bị xóa bằng lệnh DROP VIEW.

Ưu và nhược điểm của View
View có thể được sử dụng như một tập con của dữ liệu thực để thực hiện một số thao tác nhất định. Nó giúp chúng ta cung cấp một lớp trừu tượng cho nhiều người dùng hoặc ẩn đi sự phức tạp đối với người dùng đang truy cập dữ liệu từ bảng. Ví dụ, một người dùng có quyền truy cập vào các cột dữ liệu cụ thể thay vì toàn bộ bảng. Nó có thể giúp đơn giản hóa truy vấn phức tạp thành đơn giản hơn. Nó cũng đơn giản hóa việc truy cập dữ liệu từ nhiều bảng đã join. View có thể được dùng như các bảng tổng hợp bằng các thao tác group by. View có thể phục vụ mục đích bảo mật hoặc bổ sung giá trị từ góc độ bảo mật. Nó không chiếm dung lượng vì chỉ có định nghĩa trong từ điển dữ liệu, không có bản sao dữ liệu thực.
Bên cạnh nhiều ưu điểm, view cũng có một số nhược điểm như phụ thuộc vào cấu trúc bảng gốc, thời gian tính toán và các hạn chế. View phụ thuộc vào cấu trúc bảng. Nếu bạn thay đổi cấu trúc bảng, bạn phải thay đổi định nghĩa view tương ứng.
Kết luận
Chúc mừng bạn đã đi đến cuối hướng dẫn này!
Trong hướng dẫn này, bạn đã tìm hiểu rất nhiều về View. Bạn đã biết View là gì, các loại View, Simple View, Complex View, Inline View, Materialized View, cú pháp tạo và xóa view, cùng ưu và nhược điểm của View.
Giờ hãy áp dụng khái niệm View để phân tích các bộ dữ liệu của riêng bạn. Cảm ơn bạn đã đọc hướng dẫn!
Nếu muốn học thêm về SQL, hãy tham gia khóa học Introduction to Relational Databases in SQL của chúng tôi.