1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo bài tập lớn môn hệ quản trị cơ sở dữ liệu Đề tài quản lý các Đề tài tốt nghiệp của sinh viên

51 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Quản Lý Các Đề Tài Tốt Nghiệp Của Sinh Viên
Tác giả Nguyễn Anh Dũng
Người hướng dẫn Nguyễn Thị Tâm
Trường học Trường Đại Học Mở Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 51
Dung lượng 5,7 MB

Cấu trúc

  • I. Mô tả bài toán (3)
  • II. Các đối tượng (3)
  • III. Các mối liên kết (3)
  • IV. Mô hình thực thể liên kết (4)
  • V. Tạo database và chèn dữ liêu (5)
  • VI. Truy vấn dữ liêu (12)
    • 1. Truy vấn dữ liệu (12)
    • 2. Các view (0)
    • 3. Các stored procedures (19)
    • 4. Các trigger (36)
    • 5. Tạo các tài khoản và cấp quyền (47)
    • 6. Phân tán (49)
  • VII. Tài liệu tham khảo (51)

Nội dung

Mô tả bài toán Trường quản lý khoa bằng các thông tin: mã khoa, tên khoa, số điện thoai, địa chỉ Một khoa có thể có nhiều sinh viên.. Thông tin sinh viên gồm: mã sinh viên, tên sinh viê

Mô tả bài toán

Trường quản lý khoa bằng các thông tin: mã khoa, tên khoa, số điện thoai, địa chỉ

Một khoa có thể có nhiều sinh viên Thông tin sinh viên gồm: mã sinh viên, tên sinh viên, ngày sinh, giới tính, số điện thoại, địa chỉ

Các đề tài tốt nghiệp được quản lý bằng các thông tin: mã đề tài, tên đề tài, thời gian bắt đầu, thòi gian kết thúc

Giảng viên được quản lý thông qua các thông tin như mã giảng viên, tên, số điện thoại, học vị, chuyên ngành và địa chỉ Để tiến hành chấm các đề tài, cần có hội đồng bảo vệ, bao gồm các thông tin như mã hội đồng, thời gian và địa chỉ.

Khi sinh viên thực hiện đề tài thì ghi lại điểm số và chức vụ của giảng viên cho điểm đó

Một đề tài có thể có nhiều sinh viên cùng thực hiên nhưng một sinh viên chỉ thực hiện một đề tài

Một giảng viên có thể hướng dẫn nhiều đề tài nhưng 1 đề tài chỉ do 1 giảng viên hướng dẫn

Một hội đồng có nhiều giảng viên tham gia chấm điểm cho nhiều sinh viên trên đề tài mỗi sinh viên thực hiện

Các đối tượng

SINH VIÊN (maSV, tenSV, gioiTinh, ngaySinh, SDT, diaChi)

GIẢNG VIÊN (maGV, tenGV, SDT, hocVi, chuyenNganh, diaChi) ĐỀ TÀI (maDT, tenDT, TGBD, TGKT)

KHOA (maK, tenK, SDT, diaChi)

HỘI ĐỒNG (maHD, thoiGian, diaChi)

Các mối liên kết

SINH VIÊN THỰC HIỆN ĐỀ TÀI: 1-n

GIẢNG VIÊN THUỘC HỘI ĐỒNG: n-n

GIẢNG VIÊN CHẤM ĐIỂM SINH VIÊN: n-1

GIẢNG VIÊN HƯỚNG DẪN ĐỀ TÀI: n-1

Mô hình thực thể liên kết

IV Mô hình cơ sở dữ liệu quan hệ

B1: Chuyển kiểu thực thể mạnh

R1: SINH VIÊN (maSV, tenSV, diaChiSV, gioiTinh, SDT, ngay, thang, nam)

R2: GIẢNG VIÊN (maGV, tenGV, diaChiGV, hocVi, chuyenNganh, SDT)

R3: ĐỀ TÀI (maDT, tenDT, TGBD, TGKT)

R4: HỘI ĐỒNG (maHD, thuKi, thoiGian, diaChiHD)

R5: KHOA (maK, tenK, SDT, diaChiK)

B2: Chuyển liển kết một – nhiều

R1 SINH VIÊN (maSV , tenSV, diaChiSV, gioiTinh, SDT, ngay, thang, nam, maK) R1.1 B3: Chuyển liên kết có bậc lớn hơn 2

+Giảng viên thuộc Hội đồng đánh giá Sinh viên trên Đề tài

R6: DanhGia(maHD, maGV, maDT, maSV, chucVuGV, diem)

R1.1: SINH VIÊN (maSV , tenSV, diaChiSV, gioiTinh, SDT, ngay, thang, nam, maK) R2: GIẢNG VIÊN (maGV, tenGV, diaChiGV, hocVi, chuyenNganh, SDT)

R3: ĐỀ TÀI (maDT, tenDT, TGBD, TGKT)

R4: HỘI ĐỒNG (maHD, thuKi, thoiGian, diaChiHD)

R5: KHOA (maK, tenK, SDT, diaChiK)

R6: DanhGia(maHD, maGV, maDT, maSV, chucVuGV, diem)

Tạo database và chèn dữ liêu

Tạo bảng create table KHOA

( maK varchar(10) primary key, tenK nvarchar(50),

( maSV varchar(10) primary key, tenSV nvarchar(30), ngaySinh datetime, gioiTinh nvarchar(5),

SDT varchar(10), diaChi nvarchar(50), maK varchar(10)

) alter table SINHVIEN add constraint FK_SINHVIEN_maK foreign key(maK) references KHOA(maK) create table GIANGVIEN

( maGV varchar(10) primary key, tenGV nvarchar(30),

SDT varchar(10), hocVi nvarchar(20), chuyenNganh nvarchar(30), diaChi nvarchar(50),

( maHD varchar(10), thoiGian datetime, diaChi nvarchar(50), constraint PK_HOIDONG_maHD primary key(maHD)

( maDT varchar(10) primary key, tenDT nvarchar(30),

) alter table DETAI add constraint CK_DETAI_thoigian check(TGBD @DiemHuongDan AND chucVuGV = N'Hướng dẫn'

19 Tạo thủ tục cho biết danh sách giảng viên của 1 hội đồng có tham số truyền vào là mã hội đồng create PROCEDURE DSGVTHEOHD

DISTINCT GIANGVIEN.maGV,tenGV,SDT,hocVi,chuyenNganh,GIANGVIEN.diaChi FROM

GIANGVIEN.maGVhGia.maGV AND HOIDONG.maHDhGia.maHD and HOIDONG.maHD=@maHD

20 Tạo thủ tục cho biết danh sách sinh viên của 1 hội đồng có tham số truyền vào là mã hội đồng

DISTINCT SINHVIEN.maSV,tenSV,ngaySinh,gioiTinh,SDT,SINHVIEN.diaChi,maK FROM

SINHVIEN.maSVhGia.maSV AND HOIDONG.maHDhGia.maHD and HOIDONG.maHD=@maHD

1 Tao trigger khi thêm giảng viên trong bảng DanhGia nếu là GVHD hoặc GVPB thì nhập mã hội đồng là 0 create trigger KtraMaHD on DanhGia for insert as begin

(chucVuGV = N'Hướng dẫn' AND maHD != '0') OR

(chucVuGV = N'Phản biện' AND maHD != '0')

RAISERROR (N'Giảng viên hướng dẫn/phản biện vui lòng nhập mã hội đồng là 0!', 16, 1); (hiện báo lỗi -có thể dùng print thay thế )

INSERT INTO DanhGia (maHD, maGV, maDT, maSV, chucVuGV, diemBV)

('0', 'GV01', 'DT01', 'SV01', N'Hướng dẫn', 9),

('0', 'GV02', 'DT02', 'SV02', N'Phản biện', 8);

INSERT INTO DanhGia (maHD, maGV, maDT, maSV, chucVuGV, diemBV)

('HD03', 'GV01', 'DT01', 'SV03', N'Hướng dẫn', 8), Lỗi

('HD04', 'GV02', 'DT02', 'SV04', N'Phản biện', 7); Lỗi

2 Tạo trigger kiểm tra tính hợp lệ của dữ liệu khi thêm: thoiGianHD>tgkt đề tài khi thêm create trigger KtraTgianHD on DanhGia for insert as begin

FROM inserted,HOIDONG,DETAI,DanhGia

WHERE DanhGia.maHD=HOIDONG.maHD and DanhGia.maDTAI.maDT and HOIDONG.thoiGian thời gian kết thúc và vai trò không phải GVHD hoặc GVPB

IF (@tg2 > @tg1 AND @chucVu NOT IN ('Hướng dẫn', 'Phản biện'))

INSERT INTO DanhGia (maHD, maGV, maDT, maSV, chucVuGV, diemBV)

VALUES (@maHD, @maGV, @maDT, @maSV, @chucVu, @diemBV);

ELSE IF (@tg2 < @tg1 AND @chucVu NOT IN ('Hướng dẫn', 'Phản biện'))

PRINT N'Đề tài đó chưa kết thúc Thời gian kết thúc đề tài (TGKT): ' +

CONVERT(nvarchar, @tg1) + N', Thời gian hội đồng (TGHD): ' + CONVERT(nvarchar,

Điều kiện 2: Vai trò là "Hướng dẫn" hoặc "Phản biện" và mã hội đồng là '0'

IF (@chucVu IN ('Hướng dẫn', 'Phản biện') AND @maHD = '0')

INSERT INTO DanhGia (maHD, maGV, maDT, maSV, chucVuGV, diemBV)

VALUES (@maHD, @maGV, @maDT, @maSV, @chucVu, @diemBV);

ELSE IF (@chucVu IN ('Hướng dẫn', 'Phản biện') AND @maHD != '0')

PRINT N'GVHD hoặc GVPB vui lòng nhập mã HD là 0';

END; exec themDG 'HD01','GV05','DT01','SV01','Ủy viên',8

EXEC themDG 'HD001','GV001','DT001','SV001',N'Hướng dẫn', 8.5

2 Tạo thủ tục có tham số truyền vào là mã sinh viên cho biết đề tài mà sinh viên đó thực hiện

-có thể dùng begin hoặc select luôn

Kiểm tra xem mã sinh viên có tồn tại không

IF NOT EXISTS (SELECT 1 FROM SINHVIEN WHERE maSV = @maSV) BEGIN

PRINT N'Mã sinh viên không tồn tại';

RETURN; Dừng thủ tục nếu mã sinh viên không tồn tại

DECLARE @maDT varchar(10), @tenDT nvarchar(30);

Lấy mã đề tài của sinh viên

Lấy tên đề tài từ bảng DETAI

PRINT N'Đề tài của sinh viên ' + @maSV + N' là: ' + @maDT + N' - ' + @tenDT; END; drop PROCEDURE xemDeTaiBangMaSV exec xemDeTaiBangMaSV'SV00'

The procedure "thongKeSinhVienTheoMaHD" is designed to generate statistics on the number of students associated with each council code (maHD) It accomplishes this by selecting the council code and counting the number of student IDs (maSV) from the "DanhGia" table, grouping the results by the council code To execute this procedure, simply run the command "exec thongKeSinhVienTheoMaHD" to obtain the desired statistics.

4 Thông kê sinh viên của hội đồng theo mã hội đồng nhập vào create procedure thongKeSinhVienTheoMaHDNhapVao

Kiểm tra xem mã có tồn tại không

IF NOT EXISTS (SELECT 1 FROM HOIDONG WHERE maHD = @maHD)

PRINT N'Mã hội đồng không tồn tại';

RETURN; Dừng thủ tục nếu mã không tồn tại

The SQL query retrieves distinct student information, including their ID, name, project title, and evaluation score, by joining the SINHVIEN, DETAI, and DanhGia tables based on specific conditions The procedure "thongKeSinhVienTheoMaHDNhapVao" is executed with the parameter 'HD01' to analyze student data associated with that particular ID.

5 Cập nhật điểm của sinh viên theo tham số truyền vào là mã giảng viên, chức vụ, mã sinh viên và điểm create procedure capNhatDiemSV

@maGV varchar(10), @chucVuGV nvarchar(50),@maSV varchar(10),@diemBV float as

WHERE @maGV=maGV and @chucVuGV=chucVuGV and @maSV=maSV exec capNhatDiemSV'GV02',N'Chủ tịch','SV01',8 trước:

6 Tạo thủ tục có tham số truyền vào là năm cho biết các hội đồng trong năm đó create procedure truyenThamSoLaNam

@year Int as select HOIDONG.maHD,diaChi from HOIDONG where YEAR(thoiGian)=@year exec truyenThamSoLaNam 2023

The procedure TKSoLuongDeTai is designed to generate statistics on the number of projects supervised by each lecturer It selects the lecturer's ID (maGV), name (tenGV), and counts the number of projects (maDT) associated with them The data is retrieved from the GIANGVIEN and DanhGia tables, grouping the results by the lecturer's ID and name Executing this procedure will provide a comprehensive overview of the project distribution among faculty members.

8 Tạo thủ tục thêm dữ liệu cho bảng SINHVIEN theo các tham số truyền vào create procedure ThemSinhVien

To insert a new student record into the SINHVIEN table, use the following SQL command: `INSERT INTO SINHVIEN (maSV, tenSV, ngaySinh, gioiTinh, SDT, diaChi, maK) VALUES (@maSV, @tenSV, @ngaySinh, @gioiTinh, @SDT, @diaChi, @maK)` For example, to add a student with ID 'SV06', name 'Nguyễn ANH Dung', birth date '2003-03-03', gender 'Male', phone number '0324025016', address 'Hà Nội', and class code 'K01', execute the command: `EXEC ThemSinhVien 'SV06', N'Nguyễn ANH Dung', '2003-03-03', N'Nam', '0324025016', N'Hà Nội', 'K01'`.

Tạo thủ tục DSDTtheoMaHD để liệt kê danh sách tên các đề tài do hội đồng đánh giá theo mã hội đồng trong một khoảng thời gian nhất định Thủ tục này nhận tham số đầu vào bao gồm mã hội đồng và thời gian để trả về kết quả chính xác.

@maHD varchar(10),@thang int ,@year int as begin

Kiểm tra xem mã có tồn tại không

IF NOT EXISTS (SELECT 1 FROM HOIDONG WHERE maHD = @maHD)

PRINT N'Mã hội đồng không tồn tại';

RETURN; Dừng thủ tục nếu mã không tồn tại

The SQL query retrieves specific details from the "DanhGia," "DETAI," and "HOIDONG" tables, filtering results based on the year and month specified by the user, as well as a particular committee ID The execution of the stored procedure "DSDTtheoMaHD" is demonstrated with parameters indicating the committee ID 'HD01' and the date set to May 2024.

10 Tạo thủ tục xóa bản ghi trong bảng DanhGia theo mã sinh viên được truyền vào

@masv varchar(10) as delete from DanhGia where maSV=@masv exec spxoadgtheomasv'SV01' select * from DanhGia trước:

11 Tạo thủ tục tính trung bình cộng điểm của khoa theo mã khoa được truyền vào create proc sptbcdiemkhoa

The SQL query retrieves the average rating (TBC) of departments by selecting the department ID (maK), name (tenK), phone number (SDT), and address (diaChi) from the KHOA table It joins the KHOA and SINHVIEN tables based on the department ID, while filtering results according to a specific department identifier (@makhoa) The results are grouped by department ID, name, phone number, and address to provide a comprehensive overview of each department's average rating.

12 Thủ tục cho biết điểm thành phần của sinh viên (tham số truyền vào là mã sinh viên) create proc spdiemtheomsv

@masv varchar(10) as select distinct SINHVIEN.maSV,tenSV,ngaySinh,gioiTinh,SDT,SINHVIEN.diaChi,maK, diemBV from SINHVIEN,DanhGia where SINHVIEN.maSVhGia.maSV and SINHVIEN.maSV=@masv

13 Tạo thủ tục có tham số truyền vào là mã giảng viên cho biết các đề tài mà giảng viên đó hướng dẫn create PROCEDURE DeTaiGiangVienHuongDan

SELECT distinct DETAI.maDT,tenDT

WHERE DETAI.maDThGia.maDT and DanhGia.maGV = @MaGV; END exec DeTaiGiangVienHuongDan 'GV01'

14 Kiểm tra xem đề tài đó có hay chưa

IF EXISTS (SELECT 1 FROM DETAI WHERE maDT = @MaDT) BEGIN

PRINT N'Đề tài tồn tại';

PRINT N'Đề tài không tồn tại';

15 Cập nhật tgkt của đề tài do1 giảng viên hướng dẫn theo magv truyền vào,maDT truyền vào, tgkt mới create PROCEDURE CapNhatThoiGianKetThucDeTai

WHERE DETAI.maDT = DanhGia.maDT AND DanhGia.maGV = @MaGV and DETAI.maDT=@MaDT

16 Xóa đề tài theo sinh viên theo mã sinh viên

WHERE DETAI.maDT = DanhGia.maDT and DanhGia.maSV = @MaSV );

17.Thống kê số lượng sinh viên của 1 đề tài

DETAI.maDT,tenDT,COUNT(SINHVIEN.maSV) AS SoluongSV

DETAI.maDThGia.maDT and DanhGia.maDT = @MaDT andSINHVIEN.maSVhGia.maSV

GROUP BY DETAI.maDT,tenDT

END exec SOLUONGSV1DETAI 'DT03'

18 Tạo thủ tục có tham số truyền vào là điểm hướng dẫn và cho biết các sinh viên có điểmHD trên 9

SINHVIEN.maSV,tenSV,chucVuGV,diemBV

DanhGia.maSV=SINHVIEN.maSV AND diemBV > @DiemHuongDan AND chucVuGV = N'Hướng dẫn'

19 Tạo thủ tục cho biết danh sách giảng viên của 1 hội đồng có tham số truyền vào là mã hội đồng create PROCEDURE DSGVTHEOHD

DISTINCT GIANGVIEN.maGV,tenGV,SDT,hocVi,chuyenNganh,GIANGVIEN.diaChi FROM

GIANGVIEN.maGVhGia.maGV AND HOIDONG.maHDhGia.maHD and HOIDONG.maHD=@maHD

20 Tạo thủ tục cho biết danh sách sinh viên của 1 hội đồng có tham số truyền vào là mã hội đồng

DISTINCT SINHVIEN.maSV,tenSV,ngaySinh,gioiTinh,SDT,SINHVIEN.diaChi,maK FROM

SINHVIEN.maSVhGia.maSV AND HOIDONG.maHDhGia.maHD and HOIDONG.maHD=@maHD

Các trigger

1 Tao trigger khi thêm giảng viên trong bảng DanhGia nếu là GVHD hoặc GVPB thì nhập mã hội đồng là 0 create trigger KtraMaHD on DanhGia for insert as begin

(chucVuGV = N'Hướng dẫn' AND maHD != '0') OR

(chucVuGV = N'Phản biện' AND maHD != '0')

RAISERROR (N'Giảng viên hướng dẫn/phản biện vui lòng nhập mã hội đồng là 0!', 16, 1); (hiện báo lỗi -có thể dùng print thay thế )

INSERT INTO DanhGia (maHD, maGV, maDT, maSV, chucVuGV, diemBV)

('0', 'GV01', 'DT01', 'SV01', N'Hướng dẫn', 9),

('0', 'GV02', 'DT02', 'SV02', N'Phản biện', 8);

INSERT INTO DanhGia (maHD, maGV, maDT, maSV, chucVuGV, diemBV)

('HD03', 'GV01', 'DT01', 'SV03', N'Hướng dẫn', 8), Lỗi

('HD04', 'GV02', 'DT02', 'SV04', N'Phản biện', 7); Lỗi

2 Tạo trigger kiểm tra tính hợp lệ của dữ liệu khi thêm: thoiGianHD>tgkt đề tài khi thêm create trigger KtraTgianHD on DanhGia for insert as begin

FROM inserted,HOIDONG,DETAI,DanhGia

WHERE DanhGia.maHD=HOIDONG.maHD and DanhGia.maDTAI.maDT and HOIDONG.thoiGian

Ngày đăng: 05/01/2025, 08:49

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w