Thực hành quản lý thông tin lab 6 LỚP IE103 M21 HỌ VÀ TÊN Nguyễn Thanh Hiếu MSSV 20521328 Dựa vào CSDL đã thiết kế ở BTTH số 2, hãy thực hiện các yêu cầu sau Câu 1 Liệt kê các thực thể có mặt trong CSDL trên Các thực thể có trong CSDL là SINHVIEN, DETAI, HOCVI, HOCHAM, GIAOVIEN, CHUYENNGANH, HOIDONG Câu 2 Mô tả lược đồ quan hệ cho CSDL trên Vẽ sơ đồ Diagram cho các quan hệ trên (sử dụng chức năng tạo Diagram trong SQL Server) Mô tả lược đồ quan hệ SINHVIEN(MSSV, TENSV, SODT, LOP, DIACHI) DETAI(.
Trang 1Thực hành quản lý thông tin lab 6
LỚP: IE103.M21
HỌ VÀ TÊN: Nguyễn Thanh Hiếu MSSV: 20521328
Dựa vào CSDL đã thiết kế ở BTTH số 2, hãy thực hiện các yêu cầu sau:
Câu 1: Liệt kê các thực thể có mặt trong CSDL trên
- Các thực thể có trong CSDL là: SINHVIEN, DETAI, HOCVI, HOCHAM, GIAOVIEN,
CHUYENNGANH, HOIDONG
Câu 2: Mô tả lược đồ quan hệ cho CSDL trên Vẽ sơ đồ Diagram cho các quan hệ trên
(sử dụng chức năng tạo Diagram trong SQL Server)
Mô tả lược đồ quan hệ:
- SINHVIEN(#MSSV, TENSV, SODT, LOP, DIACHI)
- DETAI(#MSDT, TENDT)
- HOCVI(#MSHV, TENHV)
- HOCHAM(#MSHH, TENHH)
- SV_DETAI(#MSSV, #MSDT)
- GIAOVIEN(#MSGV, TENGV, DIACHI, SODT, #MSHH, NAMHH)
- CHUYENNGANH(#MSCN, TENCN)
- GV_HV_CN(#MSGV, #MSHV, #MSCN, NAM)
- GV_HDDT(#MSGV, #MSDT, DIEM)
- GV_PBDT(#MSGV, #MSDT, DIEM)
- GV_UVDT(#MSGV, #MSDT, DIEM)
- HOIDONG(#MSHD, PHONG, TGBD, NGAYHD, TINHTRANG, #MSGV)
- HOIDONG_GV(#MSHD, #MSGV)
- HOIDONG_DT(#MSHD, #MSDT, QUYETDINH)
Trang 2Câu 3: Hiện thực các ràng buộc như sau Yêu cầu phát biểu ràng buộc, và vẽ bảng tầm ảnh hưởng, sau đó hiện thực trong SQL Server
3.1 Một sinh viên chỉ được tham gia một đề tài
Bảng tầm ảnh hưởng
CHUYENNGANH
MSCN TENCN
DETAI
MSDT TENDT
GIAOVIEN
MSGV TENGV DIACHI SODT MSHH
GV_HDDT
MSGV MSDT DIEM
GV_HV_CN
MSGV MSHV MSCN NAM
GV_PBDT
MSGV
MSDT
DIEM
GV_UVDT
MSGV MSDT DIEM
HOCHAM
MSHH TENHH
HOCVI
MSHV TENHV
HOIDONG
MSHD
PHONG
TGBD
NGAYHD
TINHTRANG
HOIDONG_DT
MSHD
MSDT
QUYETDINH
HOIDONG_GV
MSHD MSGV
MSSV TENSV SODT LOP
SV_DETAI
MSSV MSDT
Trang 3create trigger TG_THEMSV_thamgia1detai
on SV_DETAI FOR INSERT
AS
BEGIN
declare @sldt int , @msdt char ( 60 ), @mssv char ( )
select @mssv = MSSV from inserted
select @sldt = COUNT ( MSDT ) from SV_DETAI
where MSSV = @mssv
if ( @sldt > )
begin
print N'Loi, 1 sinh vien chi tham gia 1 de tai'
rollback transaction
end end
create trigger TG_SUASV_thamgia1detai
on SV_DETAI FOR UPDATE
AS
BEGIN
declare @sldt int , @msdt char ( 60 ), @mssv char ( )
select @mssv = MSSV from inserted
select @sldt = COUNT ( MSDT ) from SV_DETAI
where MSSV = @mssv
if ( @sldt > )
begin
print N'Loi, 1 sinh vien chi tham gia 1 de tai'
rollback transaction
end end
3.2 Một đề tài không có quá 3 sinh viên tham gia
Bảng tầm ảnh hưởng
create trigger TGTHEM_DTkhongqua3SV on SV_DETAI for INSERT
as
begin
if ( select count ( t1 mssv ) from SV_DETAI t1 , INSERTED t2
where t1 msdt = t2 msdt ) > 3
begin
print 'Khong the qua 3 tren 1 de tai'
rollback transaction end
end
create trigger TGSUA_DTkhongqua3SV on SV_DETAI for INSERT , UPDATE
as
Trang 4if ( select count ( t1 mssv ) from SV_DETAI t1 , INSERTED t2
where t1 msdt = t2 msdt ) > 3
begin
print 'Khong the qua 3 tren 1 de tai'
rollback transaction end
end
3.3 Điểm của đề tài trong thang điểm từ 0 đến 10
CHECK(0 <= DIEM AND DIEM <=10);
CHECK(0 <= DIEM AND DIEM <=10);
CHECK(0 <= DIEM AND DIEM <=10);
3.4 GV là chủ tịch hội đồng phải có học vị tiến sĩ
Bảng tầm ảnh hưởng
Câu 4: Viết các truy vấn xử lý thông tin như sau sử dụng Function, hoặc stored
procedured:
4.1 Tìm điểm trung bình của một đề tài
create function Tinh_DTB_cuaDT @MSDT char ( 10 ))
returns float
as
begin
declare @DTB float
select @DTB = (( SUM ( hd DIEM ) + SUM ( uv DIEM )+ SUM ( pb DIEM )) count ( hd DIEM ) +
count ( uv DIEM )+ count ( pb DIEM )))
from DETAI DT , GV_HDDT hd , GV_PBDT pb , GV_UVDT uv
where DT MSDT = hd MSDT and DT MSDT = pb MSDT and dt MSDT = uv MSDT and dt MSDT = @MSDT
return @DTB
end
4.2 In ra danh sách điểm trung bình của mỗi đề tài trong danh sách đề tài
Trang 5CREATE TABLE DETAI_DIEM
MSDT VARCHAR ( ) PRIMARY KEY ,
DIEM FLOAT
)
DECLARE p CURSOR FOR SELECT MSDT , dbo Tinh_DTB_cuaDT ( MSDT ) AS DIEM_TB FROM DETAI
OPEN p
DECLARE @MADT CHAR ( ), @DIEM FLOAT
FETCH NEXT FROM p INTO @MADT , @DIEM
WHILE ( @@FETCH_STATUS = )
BEGIN
UPDATE DETAI_DIEM
SET MSDT = @MADT , DIEM = ROUND ( @DIEM , )
FETCH NEXT FROM p INTO @MADT , @DIEM
END
CLOSE P
DEALLOCATE p
4.3 In ra danh sách giảng viên có phản biện đề tài
4.4 In ra danh sách các đề tài trong một hội đồng
Câu 5: Phân quyền, xác thực
5.1 Tạo ra 3 user: GIANGVIEN, GIAOVU và SINHVIEN, đặt mật khẩu tuỳ ý
create login gvien with password '12345'
create login gvu with password '12345'
create login svien with password '12345'
create user GIAOVIEN for login gvien
create user GIAOVU for login gvu
create user SINHVIEN for login svien
5.2 Phân quyền cho các user trên database như sau:
GIAOVU có quyền xem và chỉnh sửa trên tất cả các bảng
GRANT SELECT , UPDATE ON CHUYENNGANH TO GIAOVU
GRANT SELECT , UPDATE ON DETAI TO GIAOVU
GRANT SELECT , UPDATE ON GIAOVIEN TO GIAOVU
GRANT SELECT , UPDATE ON GV_HDDT TO GIAOVU
GRANT SELECT , UPDATE ON GV_HV_CN TO GIAOVU
GRANT SELECT , UPDATE ON GV_PBDT TO GIAOVU
GRANT SELECT , UPDATE ON GV_UVDT TO GIAOVU
GRANT SELECT , UPDATE ON HOCHAM TO GIAOVU
GRANT SELECT , UPDATE ON HOCVI TO GIAOVU
GRANT SELECT , UPDATE ON HOIDONG TO GIAOVU
GRANT SELECT , UPDATE ON HOIDONG_DT TO GIAOVU
GRANT SELECT , UPDATE ON HOIDONG_GV TO GIAOVU
GRANT SELECT , UPDATE ON SINHVIEN TO GIAOVU
GRANT SELECT , UPDATE ON SV_DETAI TO GIAOVU
GIANGVIEN có quyền xem trên các bảng liên quan đến thông tin giáo viên, thông tin học sinh, các đề tài mà GV hướng dẫn, phản biện hay làm uỷ viên,
Trang 6và xem thông tin hội đồng; GIANGVIEN có quyền cập nhật thông tin của giảng viên
GRANT SELECT , UPDATE ON GIAOVIEN TO GIAOVIEN
GRANT SELECT ON DETAI TO GIAOVIEN
GRANT SELECT ON GV_HV_CN TO GIAOVIEN
GRANT SELECT ON GV_HDDT TO GIAOVIEN
GRANT SELECT ON GV_PBDT TO GIAOVIEN
GRANT SELECT ON GV_UVDT TO GIAOVIEN
GRANT SELECT ON HOIDONG TO GIAOVIEN
GRANT SELECT ON SINHVIEN TO GIAOVIEN
GRANT SELECT ON SV_DETAI TO GIAOVIEN
SINHVIEN có quyền xem thông tin của sinh viên, của hội đồng và các đề tài hiện hữu trên hệ thống
GRANT SELECT ON SINHVIEN TO SINHVIEN
GRANT SELECT ON HOIDONG TO SINHVIEN
GRANT SELECT ON DETAI TO SINHVIEN
Tất cả người dùng đều không có quyền xoá thông tin
DENY DELETE ON DETAI TO GIAOVIEN , SINHVIEN , GIAOVU
DENY DELETE ON CHUYENNGANH TO GIAOVIEN , SINHVIEN , GIAOVU
DENY DELETE ON GIAOVIEN TO GIAOVIEN , SINHVIEN , GIAOVU
DENY DELETE ON GV_HDDT TO GIAOVIEN , SINHVIEN , GIAOVU
DENY DELETE ON GV_PBDT TO GIAOVIEN , SINHVIEN , GIAOVU
DENY DELETE ON GV_UVDT TO GIAOVIEN , SINHVIEN , GIAOVU
DENY DELETE ON GV_HV_CN TO GIAOVIEN , SINHVIEN , GIAOVU
DENY DELETE ON HOCHAM TO GIAOVIEN , SINHVIEN , GIAOVU
DENY DELETE ON HOCVI TO GIAOVIEN , SINHVIEN , GIAOVU
DENY DELETE ON HOIDONG TO GIAOVIEN , SINHVIEN , GIAOVU
DENY DELETE ON HOIDONG_DT TO GIAOVIEN , SINHVIEN , GIAOVU
DENY DELETE ON HOIDONG_GV TO GIAOVIEN , SINHVIEN , GIAOVU
DENY DELETE ON SINHVIEN TO GIAOVIEN , SINHVIEN , GIAOVU
DENY DELETE ON SV_DETAI TO GIAOVIEN , SINHVIEN , GIAOVU
Câu 6: Thiết kế report cho đề tài như sau:
a) Thông tin GV phản biện
Trang 7b) Thông tin hội đồng chấm đề tài
Trang 8c) Thông tin điểm đề tài (lưu ý: điểm làm tròn 2 chữ số)