Thay đổi quyền người dùng

Một phần của tài liệu Bài giảng hệ quản trị cơ sở dữ liệu (Trang 60)

XI. QUẢN LÝ BẢO MẬT NGƯỜI DÙNG

4.Thay đổi quyền người dùng

• Mở rộng mục Users

• Kích phải chuột

mỗi học phần.

• Kích nút để thay đổi quyền truy cập trên các đối tượng trên CSDL

Database user: Người được cấp quyền.

Object: Đối tượng được cấp quyền.

Select: Quyền chọn (nhìn thấy)

Insert: Quyền chèn thêm

Update: Quyền cập nhật

Delete: Quyền xóa bỏ

Exec: Quyền thực hiện SP

• không cấp quyền

• được cấp quyền trên tất cả các cột

• cấm quyền này trên tất cả các cột • cấp quyền trên một số cột • cấm quyền trên một số cột • cấp và cấm quyền trên một số cột

• Cấp quyền Select trên 3 cột

• Cấp quyền Update trên cột TenLop

• Cấm quyền Update trên cột MaKhoa và

mỗi học phần.

PHẦN 3: BÀI THỰC HÀNH SQL SERVER 2005

Tập trung vào các vấn đề: Quản lý người sử dụng Tạo CSDL theo yêu cầu

Gán quyền truy cập theo yêu cầu

Sử dụng các Trigger, Stored Procedures, User Defined Functions Bảo trì CSDL bằng lệnh Backup, Restore, Import data, Export data...

Tài liệu học tập và tham khảo :

[1] Tự học Microsoft SQL Server 2000, Nguyễn Ngọc Minh- Hoàng Đức Hải, NXB Lao động - Xã hội, 2002.

[2] SQL Server 2000 Lập trình T-SQL (tập 6B), Dương Quang Thiện, NXB Văn hóa Sài gòn, 2007

Hình thức thi báo cáo thực hành trực tiếp tên Projector:

Thực hành các công việc sau:

- Đăng nhập với 1 User và Password cho trước.

- Tạo CSDL gồm có Table, View, Trigger, Stored Procedures, User Defined Functions theo yêu cầu

- Cấp quyền sử dụng phù hợp yêu cầu cho một số User Hoặc Thi thực hành tại phòng máy

alter PROCEDURE SP_ChonKiemTra @K int=0 (adsbygoogle = window.adsbygoogle || []).push({});

With ENCRYPTION

AS BEGIN if @K =10

update BD6706 set Chon=null

else begin

Declare @C int,@SL int,@MaSV varchar(8),@D1 int,@D2 int Select @SL=count(*),@D1=Max(Chon) From BD6706

if isnull(@D1,0)<@SL

begin

Select @C=cast(@SL*rand() as int)+1

Select @D2=count(*) From BD6706 where TT=@C and Chon

is null

while isnull(@D2,0) <> 1

begin

Select @C=cast(@SL*rand() as int)+1

Select @D2=count(*) From BD6706 where TT=@C and

Chon is null

end

update BD6706 set Chon=isnull(@D1,0)+1 where TT=@C

end

Select N'Chúc mừng người thứ '+cast(isnull(@D1,0)+1 as varchar) as Thu,TT,MaSV,

(Select HoLot+' '+Ten From LLSV where

MaSV=BD6706.MaSV) as HoTen

From BD6706 where TT=@C

--Select * From BD6706

end END

mỗi học phần.

NỘI DUNG KIỂM TRA VÀ THI

(Vấn đáp thực hành)

1. Tạo CSDL tên abc

2. Import/Export data từ/đến CSDL cho trước 3. Điều chỉnh/tạo mới Table theo yêu cầu

a. Điều chỉnh Table DiemRL theo qui định (chú ý field DiemQD, XepLoai) b. Tạo và nhập Table Buoi như sau (adsbygoogle = window.adsbygoogle || []).push({});

BuoiID TenBuoi 1 Sáng 2 Chiều 3 Tối 4. Tạo 2 User tên U1 và U2 như sau

User Tạo và sửa Table Backup database

U1 X 0

U2 0 X

5. Tạo View/T_SQL theo yêu cầu

a. Xóa bangdiem những SV không phải ngành 103 (CNTT)

b. Tạo Table LLSV_103 gồm những SV lớp Tin10. Thêm DS SV Tin09 vào Table LLSV_103

6. Tạo Store Procedure theo yêu cầu 7. Tạo Function theo yêu cầu

8. Tạo Trigger theo yêu cầu 9. Backup CSDL theo yêu cầu 10. Restore CSDL theo yêu cầu

THI Thêm phần

NỘI DUNG KIỂM TRA NHÓM 1

(Vấn đáp thực hành)

1. Tạo CSDL tên <MaSV> (0.5) 2. Import data từ CSDL Tin10 (0.5)

3. Điều chỉnh Table DiemRL theo qui định (chú ý field DiemQD) (1đ) 4. Tạo 2 User tên U1 và U2 như sau (1đ)

User Tạo và sửa Table Backup database

U1 X 0

U2 0 X

5. Tạo View V_Tin10 hiện BangDiem của lớp TinK10 (1đ) 7. Tạo Function theo yêu cầu

- Hiện tên ngành khi biết MaSV (1đ)

- Thống kê DiemRL theo khoa theo dạng (1đ)

T

T MaLop Tên lớp SL XS Tốt Khá TB khá TB Yếu Kém 1 091011 SP Toán K09 59 3 55 0 0 0 0 1 2 091021 SP Vật lý K09 65 24 40 0 0 0 0 1

6. Tạo Store Procedure theo yêu cầu

- Chèn danh sách SV 1 lớp vào table DiemRL (1đ) - Thống kê DiemRL của trường (1đ)

T

T Mã khoa Tên khoa SL XS Tốt Khá TB khá TB Yếu Kém 1 1 KHOA Y DƯỢC 1235 354 810 0 0 0 0 71 2 2 KHOA NL 1736 263 1066 288 23 1 0 95

8. Tạo Trigger chỉ cho phép cập nhật field DiemRL và lưu tên người cập nhật điểm RL vào field US (2đ)

mỗi học phần.

NỘI DUNG KIỂM TRA NHÓM 2

(Vấn đáp thực hành) (adsbygoogle = window.adsbygoogle || []).push({});

1. Tạo CSDL tên <MaSV> (0.5) 2. Import data từ CSDL Tin10 (0.5) 3. Tạo và nhập Table Buoi như sau(1đ)

BuoiID TenBuoi 1 Sáng 2 Chiều 3 Tối 4. Tạo 2 User tên U1 và U2 như sau (1đ)

User Tạo và sửa Table Backup database

U1 X 0

U2 0 X

5. Tạo View V_BD hiện BangDiem của các lớp sinh viên ngành CN Tin và ngành SP Toán (1đ)

6. Tạo Function theo yêu cầu

- Hiện tên ngành khi biết MaSV (1đ) - Thống kê DiemRL của trường (1đ)

T

T Mã khoa Tên khoa SL XS Tốt Khá TB khá TB Yếu Kém 1 1 KHOA Y DƯỢC 1235 354 810 0 0 0 0 71 2 2 KHOA NL 1736 263 1066 288 23 1 0 95

7. Tạo Store Procedure theo yêu cầu

- Chèn danh sách SV 1 lớp vào table DiemRL (1đ) - Thống kê DiemRL theo khoa theo dạng (1đ)

T

T MaLop Tên lớp SL XS Tốt Khá TB khá TB Yếu Kém 1 091011 SP Toán K09 59 3 55 0 0 0 0 1 2 091021 SP Vật lý K09 65 24 40 0 0 0 0 1

8. Tạo Trigger chỉ cho phép cập nhật field DiemRL và lưu tên người cập nhật điểm RL vào field US (2đ)

NỘI DUNG KIỂM TRA NHÓM 3

(Vấn đáp thực hành)

1. Tạo CSDL tên <MaSV> (0.5) 2. Import data từ CSDL Tin10 (0.5) 3. Tạo và nhập Table Buoi như sau(1đ)

BuoiID TenBuoi

1 Sáng 2 Chiều 3 Tối 4. Tạo 2 User tên U1 và U2 như sau (1đ)

User Tạo và sửa Table Backup database

U1 X 0

U2 0 X

5. Tạo View V_BD hiện BangDiem của các lớp sinh viên khoa KHTN&CN và khoa Ngoại ngữ (1đ)

6. Tạo Function theo yêu cầu

- Hiện DiemRL học kỳ khi biết MaSV,học kỳ và năm học (1đ) - Thống kê DiemRL năm học của lớp (1đ)

T

T Mã SV Tên SV HK1 HK2 Năm học

1 10103001 …. 89 91 0.9

2 10103002 … 99 90 1 (adsbygoogle = window.adsbygoogle || []).push({});

7. Tạo Store Procedure theo yêu cầu

- Chèn danh sách SV 1 lớp vào table DiemRL (1đ) - Thống kê DiemRL năm học của khoa theo dạng (1đ)

T

T MaLop Tên lớp SL XS Tốt Khá TB khá TB Yếu Kém 1 091011 SP Toán K09 59 3 55 0 0 0 0 1 2 091021 SP Vật lý K09 65 24 40 0 0 0 0 1

8. Tạo Trigger chỉ cho phép cập nhật field DiemRL và lưu tên người cập nhật điểm RL vào field US (2đ)

mỗi học phần.

NỘI DUNG KIỂM TRA NHÓM 4

(Vấn đáp thực hành)

1. Tạo CSDL tên <MaSV> (0.5) 2. Import data từ CSDL Tin10 (0.5) 3. Tạo và nhập Table Buoi như sau(1đ)

BuoiID TenBuoi

1 Sáng 2 Chiều 3 Tối 4. Tạo 2 User tên U1 và U2 như sau (1đ)

User Tạo và sửa Table Backup database

U1 X 0

U2 0 X

5. Tạo View V_BD hiện BangDiem của các lớp sinh viên không phải khoa KHTN&CN và khoa Ngoại ngữ (1đ)

6. Tạo Function theo yêu cầu

- Hiện Điểm học bổng học kỳ khi biết MaSV, học kỳ và năm học (1đ) - Thống kê Kết quả học kỳ của lớp (1đ)

T

T Mã SV Tên SV TCDK TCTL HK TBC HK TBC HB

1 10103001 …. 16 14 2.15 0

2 10103002 … 21 21 3.2 3.2

7. Tạo Store Procedure theo yêu cầu

- Hiện danh sách các học phần có thể đăng ký trong học kỳ của MaSV theo dạng (1đ) TT, Lớp HP, TenHP,TinChi,TenLop

- Thống kê khả năng học bổng của khoa trong học kỳ theo dạng (1đ)

T

T MaLop Tên lớp SL A B C Còn lại

1 091011 SP Toán K09 59 3 7 10 39 2 091021 SP Vật lý K09 65 2 6 12 45

8. Tạo Trigger chỉ cho phép chèn vào BangDiem học phần có thể đăng ký trong học kỳ

NỘI DUNG CÁC BÀI THỰC HÀNH

Buổi 1: (adsbygoogle = window.adsbygoogle || []).push({});

Sinh viên đã có CSDL TinK11, Tạo mới CSDL tên <MaSV>, tạo 2 table theo yêu cầu, import dữ liệu phù hợp từ CSDL TinK11 vào CSDL mới tạo. 2 Table như sau:

DiemRL(ID,MaSV,HK,NH,Diem,DiemQD,XL)

BangDiem(ID,MaSV,KeHoachID,MaHP,D1,D2,Dmax,Dchu,Dso).

Buổi 2:

1. SP_BangDiem_Insert(KeHoachID)

Chèn DSSV của lớp có KeHoachID vào BangDiem có cập nhật LanHoc và HocPhi.

Gợi ý: Xác định LanHoc thông qua MaSV và MaHP; Sử dụng FC_HocPhi1(BangDiemID) cập nhật HocPhi thông qua Trigger Insert hoặc sử dụng FC_HocPhi2(MaSV,MaHP,LanHoc) cập nhật HocPhi trong Store Procedure. 2. SP_BangDiem_Insert_Lop(MaLop,HocKy,NamHoc)

Chèn DSSV tất cả các KeHoachHT của lớp trong HocKy chỉ định vào BangDiem.

Gợi ý: Sử dung vòng lặp các KeHoachID của lớp trong HocKy để gọi Store Procedure ở câu 1.

Buổi 3:

1. Cấm Thêm, xóa bảng điểm, cấm sửa điểm BoPhan nếu XNBP=1. XNBP=0 thì cho phép thêm, xóa BangDiem, cho sửa điểm BoPhan; Ghi nhận vào USBP người, thời gian, địa điểm người sửa. Tương tự cho Thi1, Thi2 với field XN1, XN2. 2. Ghi nhận XNBP 0->1: Ghi nhận tổng điểm BP vào TongBP; 1->0: ghi nhận ai sửa

vào GhiChu; Tương tự cho XN1 và XN2.

3. Trả lời Khi nào sửa và sửa như thế nào đối với 2 field: Diem1 và Diem2. Biết rằng:

Diem1=(Diểm BP x Tỉ lệ BP+Điểm Thi1 x Tỉ lệ Thi)/100. Diem2=(Diểm BP x Tỉ lệ BP+Điểm Thi2 x Tỉ lệ Thi)/100.

Buổi 4:

1. Dùng SP hoặc FC để hiện các yêu cầu: Hiện DSSV 1 KeHoachID (TT,MaSV, HoTen, NS) Tất cả và Đã nộp HP.

2. Dùng SP hoặc FC để hiện các yêu cầu: Hiện DSSV 1 KeHoachID (TT,MaSV, HoTen, NS) Tất cả và Đã nộp HP thi lại.

Buổi 5:

1.SP,FC (MaLop) để được điểm RL toàn khóa

2. Dùng SP,FC TKDiemRL(MaKhoa,HK,NH) Thống kê DiemRL của khoa theo dạng trong 1 học kỳ

T

T MaLop Tên lớp SL XS Tốt Khá TB khá TB Yếu Kém 1 091011 SP Toán K09 59 3 55 0 0 0 0 1 2 091021 SP Vật lý K09 65 24 40 0 0 0 0 1

mỗi học phần.

Tổng cộng ? ? ? ? ? ? ? ?

3. Dùng SP, FC ThongKeHK(MaLop,HK,NH) Thống kê Kết quả học kỳ của lớp

T

T Mã SV Tên SV TCDK TCTL HK TBC HK TBC HB

1 10103001 …. 16 14 2.15 0

2 10103002 … 21 21 3.2 3.2

4. Dùng SP,FC TKHocBong(MaKhoa,HK,NH) Thống kê khả năng học bổng của khoa trong học kỳ theo dạng. (adsbygoogle = window.adsbygoogle || []).push({});

T

T MaLop Tên lớp SL A B C Còn lại

1 091011 SP Toán K09 59 3 7 10 39 2 091021 SP Vật lý K09 65 2 6 12 45

Tổng cộng ? ? ? ? ?

5. Tạo SP,FC DiemToanKhoa(MaSV) để có được

TT MaHP Tên HP Tín chỉ Điểm L1 Thi lại Chính thức

… … KC213612 Hệ QTCSDL 3/1 3 8 8 Tổng cộng ? ĐTBC? 6. Tạo SP,FC ThongKeDiemRL(HK,NH) T T Mã Tên SL XS Tốt Khá TB khá TB Yếu Kém 1 1 KHOA Y DƯỢC 1235 354 810 0 0 0 0 71 2 2 KHOA NL 1736 263 1066 288 23 1 0 95 TTN Tổng cộng ? ? ? ? ? ? ? ?

Một phần của tài liệu Bài giảng hệ quản trị cơ sở dữ liệu (Trang 60)