Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 5: Bảo mật và An toàn dữ liệu - Hồ Lê Thị Kim Nhung
View (khung nhìn) là một bảng ảo được định
nghĩa bởi một lệnh select
§ Đối với người dùng: view giống như một bảng thật
§ Dữ liệu của view là dữ liệu trong một hoặc nhiều
bảng thật (view không chứa dữ liệu thật sự)
üSự thay đổi dữ liệu tương ứng trong các bảng thật luôn
được phản ánh lên view
nghĩa bởi một lệnh select
§ Đối với người dùng: view giống như một bảng thật
§ Dữ liệu của view là dữ liệu trong một hoặc nhiều
bảng thật (view không chứa dữ liệu thật sự)
üSự thay đổi dữ liệu tương ứng trong các bảng thật luôn
được phản ánh lên view
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 5: Bảo mật và An toàn dữ liệu - Hồ Lê Thị Kim Nhung", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- bai_giang_he_quan_tri_co_so_du_lieu_chuong_05_bao_mat_va_an.pdf
Nội dung text: Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 5: Bảo mật và An toàn dữ liệu - Hồ Lê Thị Kim Nhung
- Nội dung 1 Khung nhìn - View 2 Trigger trên view 3 Bài tập trigger
- Mục đích vThể hiện dữ liệu ở dạng phù hợp với từng nhóm nghiệp vụ/ nhóm NSD (security). vChe dấu sự phức tạp của lược đồ CSDL. vTrình bày dữ liệu tổng hợp.
- Mục đích Sinh viên 001 Kết quả Bảo mật Môn học Sinh viên Khoa
- Mục đích Kết quả View – Thống kê môn học của sinh viên Sinh viên Select * From View Xem điểm Sinh viên trung bình
- Ví dụ Tạo view chứa thông tin sinh viên của sinh viên CREATE VIEW uv_ThongTinSV AS Sinh viên Select * From SinhVien Select * From uv_ThongTinSV
- Ví dụ CREATE VIEW uv_ThongTinSV(MaSV, Hoten, MaKH) With Schemabinding AS Select MaSV, HoTen, MaKhoa From dbo.SinhVien Sinh viên uv_ThongTinSV Select * From uv_ThongTinSV
- Lỗi tạo view CREATE VIEW uv_ThongTinSV (MaSV, Hoten, MaKH) With Schemabinding AS Select * From SinhVien Msg 1054, Level 15, State 6, Procedure uv_ThongTinSV, Line 4 Syntax '*' is not allowed in schema-bound objects. Msg 4512, Level 16, State 3, Procedure uv_ThongTinSV, Line 4 Cannot schema bind view 'uv_ThongTinSV' because name 'SinhVien' is invalid for schema binding. Names must be in two- part format and an object cannot reference itself.
- Lỗi tạo view Sinh viên uv_ThongTinSV Select * From uv_ThongTinSV Drop table SinhVien Msg 3729, Level 16, State 1, Line 1 Cannot DROP TABLE 'dbo.SinhVien' because it is being referenced by object ‘uv_ThongTinSV'.
- Lưu ý vLệnh select trong định nghĩa view không được chứa: § Order by, nếu có phải kèm với TOP § Compute/ compute by § Select into
- Lưu ý vLệnh select trong định nghĩa view không được chứa: § Order by, nếu có phải kèm với TOP § Compute/ compute by § Select into
- Compute by vĐặc điểm vTương tự như compute nhưng tách từng nhóm riêng. vCác thuộc tính sau by phải có trong Order by. vCú pháp ORDER BY ColName_1[ , n ] COMPUTE { { AV G | COUNT | MAX | MIN | SUM } ( Expression | ColName) } [ , n ] BY ColName_1[ , n ]
- Compute by
- Lưu ý vLệnh select trong định nghĩa view không được chứa: § Order by, nếu có phải kèm với TOP § Compute/ compute by § Select into
- Lưu ý vLệnh select trong định nghĩa view không được chứa: § Order by, nếu có phải kèm với TOP § Compute/ compute by § Select into vKhông thể gắn kết rule hay default vào view vKhông thể khai báo trigger for/after trên view (chỉ có thể khai báo trigger instead of) vMột view có thể được định nghĩa trên một view khác, nhưng không quá 32 cấp
- View – Cập nhật dữ liệu vView chỉ có thể được cập nhật (insert/ update/ delete) nếu: § Lệnh select định nghĩa view không chứa: • Các hàm tổng hợp (count, sum, avg, max, ) • Group by, Top, select distinct • Union (trừ partitioned view) § Trong mệnh đề from của lệnh select phải tham chiếu đến ít nhất một bảng ( hoặc view với dữ liệu được lấy từ bảng), và phải select ít nhất một cột từ dữ liệu.
- View – Lỗi cập nhật CREATE VIEW uv_DSLOP AS SELECT sv.*, l.SiSo FROM SinhVien sv, LopHoc l WHERE l.MaLop = sv.MaLop INSERT INTO uv_DSLOP (MaSV, HoTen, Malop) VALUES (‘0961233’, N’Trần Văn A’, ‘09CK1’)
- View – Lỗi cập nhật CREATE VIEW uv_DSLOP AS SELECT DISTINCT l.MaLop FROM SinhVien sv, LopHoc l WHERE l.MaLop = sv.MaLop INSERT INTO uv_DSLOP Msg 4403, Level 16, State 1, Line 2 Cannot update the view or function VALUES (‘09CK1’) 'uv_test12' because it contains aggregates, or a DISTINCT or GROUP BY clause, or PIVOT or UNPIVOT operator.
- Ví dụ vVí dụ: Các view định nghĩa như sau không thể cập nhật được: Create view UV_DSLop As Select MaLop, Count (*) SoSV From SinhVien Group by MaLop Create View UV_NhanVien As select MaNV, HoNV + ‘ ‘ + TenNV HoTen From NhanVien Có thể xóa
- Nội dung 1 Khung nhìn - View 2 Trigger trên view 3 Bài tập trigger
- Trigger trên View vCó thể dùng trigger instead of để cập nhật view § Tự xử lý thao tác cập nhật
- View vThay đổi cấu trúc view: Thay từ khóa create trong các lệnh tạo view bằng từ khóa alter vXóa view Drop view tên_view_cần _xóa [, n]
- Lược đồ CSDL SinhVien (MaSV, HoTen, DiemTB, MaLop, NamSinh, NamBD, NamKT, TinhTrang) LopHoc (MaLop, MaKhoa, SiSo) Khoa (MaKhoa, TenKhoa, NamThanhLap) MonHoc (MaMH, TenMonHoc, SoChi, MaKhoa) KetQua (MaSV, MaMH, LanThi, Diem)
- Bài tập 2 1. Tạo view lấy thông tin sinh viên, tuổi, mã lớp, số môn đã học của sinh viên. 2. Viết trigger chỉ cho phép cập nhật cho phép cập nhật tuổi và thông tin cá nhân của sinh viên, mã lớp. 3. Viết trigger cho phép thêm một sinh viên vào CSDL.
- Bài tập 4 1. Tạo view cho biết thông tin STT, mã lớp, tên lớp, sỉ số, số sinh viên còn nợ, số sinh viên đậu. 2. Viết trigger cho phép thêm một một lớp vào CSDL. 3. Viết trigger xóa 1 lớp (xóa tất các thông tin liên quan đến lớp sinh viên trong CSDL).