Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
13
Dung lượng
730,67 KB
Nội dung
9/18/2015 CHƯƠNG 4: LÀM VIỆC VỚI VIEW Trường Đại học Khoa học Tự nhiên Khoa Công nghệ Thông tin Bộ môn Hệ thống Thông tin NỘI DUNG Khái niệm view (Khung nhìn) Tạo khung nhìn Cập nhật, bổ sung xố liệu thơng qua khung nhìn Sửa đổi khung nhìn Xố khung nhìn 9/18/2015 Khái niệm view (Khung nhìn) • Các bảng sở liệu đóng vai trị đối tượng tổ chức lưu trữ liệu Như vậy, ta quan sát liệu sở liệu cách thực truy vấn bảng liệu • Ngồi ra, SQL cho phép quan sát liệu thơng qua việc định nghĩa khung nhìn • Một khung nhìn (view) xem bảng “ảo” sở liệu có nội dung định nghĩa thông qua truy vấn (câu lệnh SELECT) • Một khung nhìn trơng giống bảng với tên khung nhìn tập bao gồm dịng cột • Điểm khác biệt khung nhìn bảng khung nhìn khơng xem cấu trúc lưu trữ liệu tồn sở liệu Khái niệm view (Khung nhìn) • Khi khung nhìn định nghĩa, ta sử dụng câu lệnh SELECT để truy vấn liệu từ khung nhìn bảng • Câu lệnh sau tạo khung nhìn có tên DSSV định nghĩa thơng qua câu lệnh SELECT truy vấn liệu hai bảng SINHVIEN LOP: SELECT masv,hodem,ten, DATEDIFF(YY,ngaysinh,GETDATE()) AS tuoi, tenlop FROM sinhvien,lop WHERE sinhvien.malop=lop.malop 9/18/2015 Khái niệm view (Khung nhìn) Khái niệm view (Khung nhìn) • Việc sử dụng khung nhìn CSDL đem lại lợi ích sau: – Bảo mật liệu: Người sử dụng cấp phát quyền khung nhìn với phần liệu mà người sử dụng phép Điều hạn chế phần việc người sử dụng truy cập trực tiếp liệu – Đơn giản hoá thao tác truy vấn liệu: Một khung nhìn đóng vai trò đối tượng tập hợp liệu từ nhiều bảng khác vào “bảng” Nhờ vào đó, người sử dụng thực yêu cầu truy vấn liệu cách đơn giản từ khung nhìn thay phải đưa câu truy vấn phức tạp – Tập trung đơn giản hố liệu: Thơng qua khung nhìn ta cung cấp cho người sử dụng cấu trúc đơn giản, dễ hiểu liệu CSDL đồng thời giúp cho người sử dụng tập trung phần liệu cần thiết – Độc lập liệu: Một khung nhìn cho phép người sử dụng có nhìn liệu độc lập với cấu trúc bảng sở liệu cho dù bảng sở có bị thay đổi phần cấu trúc 9/18/2015 Khái niệm view (Khung nhìn) • Việc sử dụng khung nhìn tồn số nhược điểm sau: – Do hệ quản trị sở liệu thực việc chuyển đổi truy vấn khung nhìn thành truy vấn bảng sở nên khung nhìn định nghĩa truy vấn phức tạp dẫn đến chi phí mặt thời gian thực truy vấn liên quan đến khung nhìn lớn – Mặc dù thơng qua khung nhìn thực thao tác bổ sung cập nhật liệu cho bảng sở hạn chế khung nhìn đơn giản Đối với khung nhìn phức tạp thường khơng thực được; hay nói cách khác liệu khung nhìn đọc Tạo khung nhìn • Câu lệnh CREATE VIEW sử dụng để tạo khung nhìn có cú pháp sau: CREATE VIEW tên_khung_nhìn[(danh_sách_tên_cột)] AS câu_lệnh_SELECT • Ví dụ: Câu lệnh tạo khung nhìn có tên DSSV từ câu lệnh SELECT truy vấn liệu từ hai bảng SINHVIEN LOP CREATE VIEW dssv AS SELECT masv,hodem,ten, DATEDIFF(YY,ngaysinh,GETDATE()) AS tuoi,tenlop FROM sinhvien,lop WHERE sinhvien.malop=lop.malop 9/18/2015 Tạo khung nhìn • Và thực câu lệnh: SELECT * FROM dssv Ta kết sau: Tạo khung nhìn • Nếu câu lệnh CREATE VIEW, ta không định danh sách tên cột cho khung nhìn, tên cột khung nhìn tiêu đề cột kết câu lệnh SELECT • Trong trường hợp tên cột khung nhìn đươc định, chúng phải có số lượng với số lượng cột kết câu truy vấn • Ví dụ: Câu lệnh tạo khung nhìn từ câu truy vấn tương tự ví dụ có đặt tên cho cột khung nhìn: CREATE VIEW dssv(ma,ho,ten,tuoi,lop) AS SELECT masv,hodem,ten, DATEDIFF(YY,ngaysinh,GETDATE()),tenlop FROM sinhvien,lop 10 WHERE sinhvien.malop=lop.malop 9/18/2015 Tạo khung nhìn • câu lệnh: SELECT * FROM dssv trường hợp có kết sau: 11 Tạo khung nhìn • Khi tạo khung nhìn với câu lệnh CREATE VIEW, ta cần phải lưu ý số nguyên tắc sau: – Tên khung nhìn tên cột khung nhìn, giống bảng, phải tuân theo qui tắc định danh – Không thể qui định ràng buộc tạo mục cho khung nhìn – Câu lệnh SELECT với mệnh đề COMPUTE BY không sử dụng để định nghĩa khung nhìn – Phải đặt tên cho cột khung nhìn trường hợp sau đây: Trong kết câu lệnh SELECT có cột sinh biểu thức (tức là tên cột bảng sở) cột khơng đặt tiêu đề Tồn hai cột kết câu lệnh SELECT có tiêu đề 12 cột 9/18/2015 Tạo khung nhìn • Ví dụ: Câu lệnh câu lệnh sai cột thứ không xác định tên cột CREATE VIEW tuoisinhvien AS SELECT masv,hodem,ten, DATEDIFF(YY,ngaysinh,GETDATE()) FROM sinhvien 13 Cập nhật, bổ sung xố liệu thơng qua khung nhìn • Đối với số khung nhìn, ta tiến hành thực thao tác cập nhập, bổ sung xoá liệu Thực chất, thao tác chuyển thành thao tác tương tự bảng sở có tác động đến bảng sở • Về mặt lý thuyết, để thực thao tác bổ sung, cập nhật xố, khung nhìn phải thoả mãn điều kiện sau: – Trong câu lệnh SELECT định nghĩa khung nhìn khơng sử dụng từ khố DISTINCT, TOP, GROUP BY UNION – Các thành phần xuất danh sách chọn câu lệnh SELECT phải cột bảng sở Trong danh sách chọn khơng chứa biểu thức tính tốn, hàm gộp – Các thao tác thay đổi đến liệu thơng qua khung nhìn cịn phải đảm bảo thoả mãn ràng buộc bảng sở, tức đảm bảo tính tồn vẹn liệu 14 9/18/2015 Cập nhật, bổ sung xoá liệu thơng qua khung nhìn • Ví dụ: Xét định nghĩa hai bảng DONVI NHANVIEN sau: CREATE TABLE donvi ( madv INT PRIMARY KEY, tendv NVARCHAR(30) NOT NULL, dienthoai NVARCHAR(10) NULL) CREATE TABLE nhanvien ( manv NVARCHAR(10) PRIMARY KEY, hoten NVARCHAR(30) NOT NULL, ngaysinh DATETIME NULL, diachi NVARCHAR(50) NULL, madv INT FOREIGN KEY REFERENCES donvi(madv) ON DELETE CASCADE ON UPDATE CASCADE ) 15 Cập nhật, bổ sung xố liệu thơng qua khung nhìn • Giả sử hai bảng có liệu sau: 16 9/18/2015 Cập nhật, bổ sung xố liệu thơng qua khung nhìn • Câu lệnh định nghĩa khung nhìn NV1 cung cấp thông tin mã nhân viên, họ tên mã đơn vị nhân viên làm việc: CREATE VIEW nv1 AS SELECT manv,hoten,madv FROM nhanvien • Nếu ta thực câu lệnh INSERT INTO nv1 VALUES('NV04','Le Thi D',1) • Kết sau: 17 Cập nhật, bổ sung xố liệu thơng qua khung nhìn • Nếu ta thực câu lệnh: DELETE FROM nv1 WHERE manv='NV04' Thì ghi tương ứng với nhân viên có mã NV04 bị xố khỏi bảng NHANVIEN • Nếu danh sách chọn câu lệnh SELECT có xuất biểu thức tính tốn đơn giản, thao tác bổ sung liệu thơng qua khung nhìn khơng thể thực • Tuy nhiên, trường hợp thao tác cập nhật xố liệu có khả thực (hiển nhiên khơng thể cập nhật liệu cột có từ biểu thức tính tốn) 18 9/18/2015 Cập nhật, bổ sung xố liệu thơng qua khung nhìn • Ví dụ: Xét khung nhìn NV2 định nghĩa sau: CREATE VIEW nv2 AS SELECT manv,hoten,YEAR(ngaysinh) AS namsinh, madv FROM nhanvien • Câu lệnh sau khơng thể thực khung nhìn NV2 INSERT INTO nv2(manv,hoten,madv) VALUES('NV05','Le Van E',1) 19 Cập nhật, bổ sung xố liệu thơng qua khung nhìn • Nhưng câu lệnh: UPDATE nv2 SET hoten='Le Thi X' WHERE manv='NV04' • câu lệnh DELETE FROM nv2 WHERE manv='NV04' lại thực có tác động liệu bảng NHANVIEN • Trong trường hợp khung nhìn tạo từ phép nối (trong ngồi) nhiều bảng, ta thực thao tác bổ sung cập nhật liệu thao tác có tác động đến bảng sở (câu lệnh DELETE thực trường hợp này) 20 10 9/18/2015 Cập nhật, bổ sung xoá liệu thơng qua khung nhìn • Ví dụ: Với khung nhìn định nghĩa sau: CREATE VIEW nv3 AS SELECT manv,hoten,ngaysinh,diachi, nhanvien.madv AS noilamviec, donvi.madv,tendv,dienthoai FROM nhanvien FULL OUTER JOIN donvi ON nhanvien.madv=donvi.madv 21 Cập nhật, bổ sung xố liệu thơng qua khung nhìn • Câu lệnh: INSERT INTO nv3(manv,hoten,noilamviec) VALUES('NV05','Le Van E',1) bổ sung thêm vào bảng NHANVIEN ghi • Câu lệnh: INSERT INTO nv3(madv,tendv) VALUES(3,'P Ke toan') bổ sung thêm vào bảng DONVI ghi • Câu lệnh INSERT INTO nv3(manv,hoten,noilamviec,madv,tendv) VALUES('NV05','Le Van E',1,3,'P Ke toan') thực có tác động đến hai bảng sở 22 11 9/18/2015 Sửa đổi khung nhìn • Câu lệnh ALTER VIEW sử dụng để định nghĩa lại khung nhìn có khơng làm thay đổi quyền cấp phát cho người sử dụng trước • Câu lệnh sử dụng tương tự câu lệnh CREATE VIEW có cú pháp sau: ALTER VIEW tên_khung_nhìn [(danh_sách_tên_cột)] AS Câu_lệnh_SELECT 23 Sửa đổi khung nhìn • Ví dụ: Ta định nghĩa khung nhìn sau: CREATE VIEW viewlop AS SELECT malop,tenlop,tenkhoa FROM lop INNER JOIN khoa ON lop.makhoa=khoa.makhoa WHERE tenkhoa='Khoa Vật lý’ • định nghĩa lại khung nhìn câu lệnh: ALTER VIEW view_lop AS SELECT malop,tenlop,hedaotao FROM lop INNER JOIN khoa ON lop.makhoa=khoa.makhoa WHERE tenkhoa='Khoa Công nghệ thông tin' 24 12 9/18/2015 Xố khung nhìn • Khi khung nhìn khơng cịn sử dụng, ta xố khỏi sở liệu thơng qua câu lệnh: DROP VIEW tên_khung_nhìn • Nếu khung nhìn bị xố, tồn quyền cấp phát cho người sử dụng khung nhìn đồng thời bị xố Do đó, ta tạo lại khung nhìn phải tiến hành cấp phát lại quyền cho người sử dụng • Ví dụ: Câu lệnh xố khung nhìn VIEW_LOP khỏi sở liệu DROP VIEW view_lop 25 26 13 ... 9/18/2015 Khái niệm view (Khung nhìn) Khái niệm view (Khung nhìn) • Việc sử dụng khung nhìn CSDL đem lại lợi ích sau: – Bảo mật liệu: Người sử dụng cấp phát quyền khung nhìn với phần liệu mà người... lập với cấu trúc bảng sở liệu cho dù bảng sở có bị thay đổi phần cấu trúc 9/18/2015 Khái niệm view (Khung nhìn) • Việc sử dụng khung nhìn tồn số nhược điểm sau: – Do hệ quản trị sở liệu thực việc. .. nhân viên, họ tên mã đơn vị nhân viên làm việc: CREATE VIEW nv1 AS SELECT manv,hoten,madv FROM nhanvien • Nếu ta thực câu lệnh INSERT INTO nv1 VALUES('NV 04' ,'Le Thi D',1) • Kết sau: 17 Cập nhật,