1. Chương 5: View
1. Khái niệm view
Views là một table ảo, được dùng để lưu trữ một truy vấn (query) đã định nghĩa
trước thành một đối tượng trong database và có thể dùng lại sau này. View là một cách
để che dấu những dữ liệu của một thiết kế database và cung cấp các thông tin mà không
đòi hỏi người dùng phải biết cách viết hoặc thực hiện các lệnh Transact-SQL. Chúng ta
có thể đặt tên và lưu trữ bất kỳ một lệnh SELECT nào thành một VIEW. Lệnh SELECT
này có thể được trích từ một hoặc nhiều table hoặc view có trước đó.
a) Lợi ích của view
Tập trung vào dữ liệu cần thiết
Views tạo ra một môi trường mà chỉ cho phép user truy xuất các thông tin trong
quyền hạn của user, còn các dữ liệu không cần thiết, hoặc cần bảo mật hoặc không phù
hợp với mục địch yêu cầu sử dụng sẽ bị che/ẩn. User có thể thao tác, sử dụng view như
là một table. Trong một số trường hợp thuộc quyền hạn cũng như một số hạn chế, Users
có thể thao tác (modify) dữ liệu mà view xuất ra.
Che dấu sự phức tạp của database
Views che đậy tính phức tạp của thiết kế database đối với user, qua đó, developers
có thể thay đổi thiết kế database mà không ảnh hưởng đến sự tương tác của user với
database. Các query phức tạp, ví dụ như các query được phân bố tới các dữ liệu hỗn
hợp, cũng có thể che đậy thông qua view, user truy vấn view thay vì phải viết và thực
hiện script.
Đơn giản hoá việc quản lý quyền
Thay vì phải gán quyền cho user để truy vấn đến một một số field nào đó trong các
table, chúng ta có thể gán quyền cho user truy vấn dữ liệu thông qua view.
views only.
2. Hoàn thiện tính thực hiện (Improve Performance)
Views cho phép chúng ta lưu trữ kết quả của một query phức tạp và các query
khác có thể dùng lại kết quả này . View cũng cung cấp cho chúng ta cách để chia dữ liệu
thành nhiều phần và các phần có thể được đặt trên các máy tính khác nhau.
Tổ chức dữ liệu để xuất ra cho các ứng dụng khác
Chúng ta có thể tạo view dựa trên một query phức tạp được kết nối từ hai hay nhiều
tables rồi xuất kết quả cho một ứng dụng khác.
b) Tạo view
Để tạo view chúng ta sử dụng lệnh CREATE VIEW theo cú pháp sau:
CREATE VIEW view_name [(column [,n ])]
[WITH {ENCRYPTION | SCHEMABINDING | VIEW_METADATA} [,n ]]
AS
select_statement
[WITH CHECK OPTION]
Trong đó,
column: là danh sách tên các field của view. Mỗi tên field cách nhau dấu phẩy.
WITH CHECK OPTION: ép buộc việc cậo nhật dữ liệ thông qua view phải thoả điều
kiện trong câu lệnh select của view.
WITH ENCRYPTION: Khi chúng ta tạo một view, đoạn mã lệnh (text) để tạo ra view
sẽ được lưu vào table syscomments. Khi chúng ta dùng tham số WITH ENCRYPTION
thì nội dung lưu vào table syscomments sẽ bị mã hoá.
SCHEMABINDING: Ràng buộc view với schema. Khi SCHEMABINDING được chỉ
định, lệnh select_statement phải bao gồm 2 phần tên (owner.object) của tables, views,
hoặc các user-defined functions mà view tham chiếu.
Các view hoặc table có tham gia trong view được tạo với tham số SCHEMABINDING
thì không thể bị xoá trừ khi view bị xoá hoặc thay đổi để không còn tham chiếu đến đối
tượng cần xoá nữa.
VIEW_METADATA: chỉ định rằng SQL Server sẽ trả về DBLIB, ODBC, và OLE DB
APIs các thông tin metadata về view.
2. Quản trị view
Cũng tương tư như các đối tượng khác trong database, để sửa và xoá view, chúng
ta cũng dùng lệnh Alter view và Drop view.
Cú pháp lệnh ALTER VIEW như sau:
ALTER VIEW view_name [(column[,...n])]
AS select_statement
3. [WITH {ENCRYPTION | SCHEMABINDING | VIEW_METADATA}]
[WITH CHECK OPTION ]
3. Những lưu ý khi tạo view
Chúng ta chỉ tạo được view trong database hiện hành mặc dù dữ liệu của view
được lấy từ các table hoặc view của các database khác.
Query trong định nghĩa view không thể chứa mệnh đề ORDER BY mà không có TOP,
COMPUTE, hoặc COMPUTE BY hoặc từ khoá INTO.
View không thể truy xuất đến dữ liệu của table tạm
Bình thường, view có thể được dùng để cập nhật (thêm, xoá và sửa) dữ liệu.