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

Môn cơ sở dữ liệu bài tập thực hành 5 ngôn ngữ định nghĩa dữ liệu

21 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 đề Môn Cơ sở dữ liệu Bài tập thực hành 5 Ngôn ngữ định nghĩa dữ liệu
Tác giả Nguyễn Hoàng Vũ
Người hướng dẫn Nguyễn Ngọc Quí
Trường học Đại học Quốc gia Thành phố Hồ Chí Minh, Trường Đại học Công nghệ Thông tin, Khoa Hệ thống Thông tin
Chuyên ngành Cơ sở dữ liệu
Thể loại Bài tập thực hành
Năm xuất bản 2023
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 21
Dung lượng 774,54 KB

Nội dung

Nếu điều kiện nàykhông được đáp ứng, thì câu lệnh chèn hoặc cập nhật dữ liệu trong bảng sẽ bị từ chối.Câu 2:Học viên thi một môn tối đa 3 lần.- Input: Bảng KETQUATHI- Output: Ràng buộc l

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA HỆ THỐNG THÔNG TIN

MÔN CƠ SỞ DỮ LIỆU BÀI TẬP THỰC HÀNH 5

GVHD: Nguyễn Ngọc QuíSinh viên thực hiện: Nguyễn Hoàng Vũ

Trang 2

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

……., ngày…… tháng……năm 2023

Người nhận xét

(Ký tên và ghi rõ họ tên)

Trang 3

MỤC LỤC

I Ngôn ngữ định nghĩa dữ liệu: 5

1 Kết quả thi là “Dat” nếu điểm từ 5 đến 10 và “Khong dat” nếu điểm nhỏ hơn 5 5

2 Học viên thi một môn tối đa 3 lần 5

3 Học kỳ chỉ có giá trị từ 1 đến 3 5

4 Học vị của giáo viên chỉ có thể là “CN”, “KS”, “Ths”, “TS”, “PTS” 6

5 Lớp trưởng của một lớp phải là học viên của lớp đó 6

6 Trưởng khoa phải là giáo viên thuộc khoa và có học vị “TS” hoặc “PTS” 7

7 Học viên ít nhất là 18 tuổi 8

8 Giảng dạy một môn học ngày bắt đầu (TUNGAY) phải nhỏ hơn ngày kết thúc (DENNGAY).8 9 Giáo viên khi vào làm ít nhất là 22 tuổi 9

10 Tất cả các môn học đều có số tín chỉ lý thuyết và tín chỉ thực hành chênh lệch nhau không quá 3 9

11 Học viên chỉ được thi một môn học nào đó khi lớp của học viên đã học xong môn học này 10 12 Mỗi học kỳ của một năm học, một lớp chỉ được học tối đa 3 môn 11

13 Sỉ số của một lớp bằng với số lượng học viên thuộc lớp đó 11

14 Trong quan hệ DIEUKIEN giá trị của thuộc tính MAMH và MAMH_TRUOC trong cùng một bộ không được giống nhau (“A”, “A”) và cũng không tồn tại hai bộ (“A”, “B”) và (“B”, “A”) 14

15 Các giáo viên có cùng học vị, học hàm, hệ số lương thì mức lương bằng nhau 14

16 Học viên chỉ được thi lại (lần thi >1) khi điểm của lần thi trước đó dưới 5 15

17 Ngày thi của lần thi sau phải lớn hơn ngày thi của lần thi trước (cùng học viên, cùng môn học) 16

18 Học viên chỉ được thi những môn mà lớp của học viên đó đã học xong 17

19 Khi phân công giảng dạy một môn học, phải xét đến thứ tự trước sau giữa các môn học (sau khi học xong những môn học phải học trước mới được học những môn liền sau) 17

Trang 5

NỘI DUNG BÀI LÀM

Câu 1:Kết quả thi là “Dat” nếu điểm từ 5 đến 10 và “Khong dat” nếu điểm nhỏ hơn 5

- Input: Bảng KETQUATHI

-Output: Ràng buộc kết quả thi điểm từ 5-10 là “Dat” và nhỏ hơn 5 là “Khong dat”.

- Hướng giải thuật :

 Ràng buộc CHECK này xác định rằng nếu giá trị của cột DIEM nằm trong khoảng từ 5đến 10 và giá trị của cột KQUA là 'Dat', hoặc nếu giá trị của cột DIEM nhỏ hơn 5 và giátrị của cột KQUA là 'Khong Dat', thì ràng buộc này sẽ được đáp ứng Nếu điều kiện nàykhông được đáp ứng, thì câu lệnh chèn hoặc cập nhật dữ liệu trong bảng sẽ bị từ chối

Câu 2:Học viên thi một môn tối đa 3 lần

- Input: Bảng KETQUATHI

- Output: Ràng buộc lần thi của học viên chỉ được nhỏ hơn hoặc bằng 3.

- Hướng giải thuật:

 Đầu tiên, chúng ta cần sử dụng câu lệnh ALTER TABLE để thêm ràng buộc kiểm tra(CHECK constraint) vào bảng KETQUATHI

 Ràng buộc sẽ kiểm tra giá trị của cột LANTHI (số lần thi) và đảm bảo rằng giá trị nàykhông vượt quá 3

 Khi thêm mới hoặc cập nhật dữ liệu trong bảng KETQUATHI, ràng buộc này sẽ đượckiểm tra để đảm bảo tính hợp lệ của số lần thi

 Nếu số lần thi vượt quá 3, thao tác thêm mới hoặc cập nhật dữ liệu sẽ bị từ chối

Câu 3:Học kỳ chỉ có giá trị từ 1 đến 3

Trang 6

- Input: Bảng GIANGDAY

- Output: Ràng buộc học kỳ chỉ được giá trị từ 1 đến 3.

- Hướng giải thuật:

 Sử dụng câu lệnh ALTER TABLE để thêm ràng buộc kiểm tra vào bảng GIANGDAY

 Ràng buộc CK_HOCKY sẽ kiểm tra giá trị của cột HOCKY và đảm bảo rằng giá trị nàynằm trong khoảng từ 1 đến 3

 Khi thêm mới hoặc cập nhật dữ liệu trong bảng GIANGDAY, ràng buộc này sẽ đượckiểm tra để đảm bảo tính hợp lệ của dữ liệu về học kỳ

Câu 4:Học vị của giáo viên chỉ có thể là “CN”, “KS”, “Ths”, “TS”, “PTS”

- Input: Bảng GIANGDAY

- Output: Ràng buộc học vị của một giáo viên chỉ có thể nằm trong “CN”, “KS”, “Ths”,

“TS”, “PTS”

- Hướng giải thuật:

 Sử dụng câu lệnh ALTER TABLE để thêm ràng buộc kiểm tra vào bảng GIAOVIEN

 Ràng buộc CK_HOCVI sẽ kiểm tra giá trị của cột HOCVI và đảm bảo rằng giá trị nàychỉ nằm trong danh sách học vị cho phép là "CN", "KS", "ThS", "TS", hoặc "PTS"

 Khi thêm mới hoặc cập nhật dữ liệu trong bảng GIAOVIEN, ràng buộc này sẽ được kiểmtra để đảm bảo tính hợp lệ của học vị

Câu 5:Lớp trưởng của một lớp phải là học viên của lớp đó

Trang 7

- Input: Bảng LOP

- Output: Ràng buộc để lớp trưởng của một lớp thì phải là học viên của lớp đó.

- Hướng giải thuật:

 Khi có sự cập nhật dữ liệu trên bảng LOP, trigger này sẽ được kích hoạt

 Trigger sử dụng bảng INSERTED để lấy dữ liệu về lớp sau khi cập nhật (tức là lớp saukhi thay đổi) Đồng thời, nó sẽ lấy mã lớp của học viên tương ứng từ bảng HOCVIEN

 Trigger sẽ so sánh xem mã lớp của lớp trưởng hiện tại sau khi cập nhật có khớp với mãlớp của học viên trong bảng HOCVIEN hay không

 Nếu mã lớp của lớp trưởng không khớp với mã lớp của học viên, trigger sẽ thực hiệnROLLBACK để hủy bỏ các thay đổi và in ra thông báo "TRGLOP CUA 1 LOP PHAI

LA HOCVIEN CUA LOP DO"

 Nếu mã lớp của lớp trưởng khớp với mã lớp của học viên, trigger sẽ in ra thông báo

"SUCCESSFUL"

Câu 6:Trưởng khoa phải là giáo viên thuộc khoa và có học vị “TS” hoặc “PTS”

Trang 8

- Input: Bảng KHOA

- Output: Ràng buộc để trưởng khoa nhập vào phải là giáo viên thuộc khoa và có học vị “TS”

hoặc “PTS”

- Hướng giải thuật:

 Trigger UPDATE_KHOA_C6 kiểm tra xem trưởng khoa (TRGKHOA) của khoa đã cậpnhật có phải là giáo viên thuộc khoa đó hay không Nếu không, trigger sẽ thực hiệnROLLBACK và in ra thông báo lỗi "ERROR! TRGKHOA PHAI LA GIAOVIENTHUOC KHOA" Nếu TRGKHOA là giáo viên thuộc khoa, trigger sẽ kiểm tra học vị củagiáo viên đó, nếu không phù hợp, trigger sẽ thực hiện ROLLBACK và in ra thông báo lỗi

"ERROR! TRGKHOA PHAI CO HOCVI='TS' HOAC HOCVI='PTS'"

 Khi có sự cập nhật dữ liệu trên bảng KHOA hoặc GIAOVIEN, các trigger sẽ được kíchhoạt

Câu 7:Học viên ít nhất là 18 tuổi

Trang 9

- Input: Bảng HOCVIEN

- Output: Ràng buộc để học viên bắt buộc phải đủ ít nhất là 18 tuổi

- Hướng giải thuật:

 Thực hiện câu lệnh ALTER TABLE để thêm ràng buộc kiểm tra vào bảng HOCVIEN

 Ràng buộc này có tên là CHECK_TUOI

 Sử dụng hàm YEAR(GETDATE()) để lấy năm hiện tại và hàm YEAR(NGSINH) để lấynăm sinh của học viên

 Chênh lệch giữa năm hiện tại và năm sinh được tính toán, và sau đó kiểm tra xem chênhlệch này có lớn hơn hoặc bằng 18 không

 Nếu chênh lệch tuổi không đạt 18, ràng buộc sẽ ngăn chặn thao tác thêm mới hoặc cậpnhật dữ liệu

Câu 8:Giảng dạy một môn học ngày bắt đầu (TUNGAY) phải nhỏ hơn ngày kết thúc(DENNGAY)

- Input: Bảng GIANGDAY

- Output: Ràng buộc ngày bắt đầu giảng dạy 1 môn học phải nhỏ hơn ngày kết thúc môn học

đó

- Hướng giải thuật:

 Chúng ta sử dụng câu lệnh ALTER TABLE để thêm ràng buộc kiểm tra (CHECKconstraint) vào bảng GIANGDAY

 Ràng buộc này sẽ kiểm tra xem giá trị của cột TUNGAY (ngày bắt đầu) có nhỏ hơn giátrị của cột DENNGAY (ngày kết thúc) không

 Khi thêm mới hoặc cập nhật dữ liệu trong bảng GIANGDAY, ràng buộc này sẽ đượckiểm tra để đảm bảo tính chặt chẽ của ngày bắt đầu và ngày kết thúc

 Nếu ngày bắt đầu lớn hơn hoặc bằng ngày kết thúc, thao tác thêm mới hoặc cập nhật dữliệu sẽ bị từ chối

Câu 9:Giáo viên khi vào làm ít nhất là 22 tuổi

Trang 10

- Input: Bảng GIAOVIEN

- Output: Ràng buộc để giáo viên phải đạt ít nhất là 22 tuổi.

- Hướng giải thuật:

 Sử dụng câu lệnh ALTER TABLE để thêm ràng buộc kiểm tra (CHECK constraint) vàobảng GIAOVIEN

 Trong ràng buộc này, chúng ta sử dụng hàm YEAR để lấy năm từ cột NGVL (ngày bắtđầu làm việc) và từ cột NGSINH (ngày sinh) để tính tuổi khi vào làm việc

 Ràng buộc sẽ kiểm tra xem sự chênh lệch về tuổi khi vào làm việc có lớn hơn hoặc bằng

- Output: Ràng buộc để số TCLT và số TCTH có chênh lệch không vượt quá 3.

- Hướng giải thuật:

 Sử dụng câu lệnh ALTER TABLE để thêm ràng buộc kiểm tra (CHECK constraint) vàobảng MONHOC

 Trong ràng buộc này, chúng ta sử dụng hàm ABS để lấy giá trị tuyệt đối của hiệu số giữaTCLT (số tín chỉ lý thuyết) và TCTH (số tín chỉ thực hành)

 Ràng buộc này sẽ kiểm tra xem sự chênh lệch giữa số tín chỉ lý thuyết và số tín chỉ thựchành có lớn hơn 3 đơn vị không

 Nếu sự chênh lệch không vượt quá 3, thì thao tác thêm mới hoặc cập nhật dữ liệu trongbảng MONHOC sẽ được chấp nhận

Câu 11:Học viên chỉ được thi một môn học nào đó khi lớp của học viên đã học xongmôn học này

Trang 11

- Input: Bảng KETQUATHI

- Output: Ràng buộc để học sinh chỉ được thi nếu lớp của học viên đã học viên đã học xong

môn học này

- Hướng giải thuật:

 Trigger sử dụng các biến @NGTHI và @DENNGAY để lưu trữ giá trị của NGTHI vàDENNGAY từ bảng INSERTED

 Trigger lấy dữ liệu từ bảng INSERTED để so sánh thông tin về học viên (MAHV), lớphọc (MALOP), và môn học (MAMH)

 Sau đó, trigger kiểm tra xem thời gian thi (@NGTHI) có lớn hơn thời gian kết thúc họcmôn học đó (@DENNGAY) hay không Nếu có, trigger in ra thông báo "SUCCESSFUL!KETQUATHI HOP LE."

 Trong trường hợp không, trigger sẽ thực hiện ROLLBACK và in ra thông báo lỗi

"ERROR! LOP CUA HV CHUA HOC XONG MON NAY"

 Khi có sự thêm mới hoặc cập nhật dữ liệu vào bảng KETQUATHI, trigger sẽ được kíchhoạ

Câu 12:Mỗi học kỳ của một năm học, một lớp chỉ được học tối đa 3 môn

Trang 12

- Input: Bảng GIANGDAY

- Output: Ràng buộc để trong mỗi học kì của một năm thì một lớp học chỉ được học tối đa 3

môn

- Hướng giải thuật:

 Khi có sự thêm mới hoặc cập nhật dữ liệu vào bảng GIANGDAY, trigger này sẽ đượckích hoạ

 Trigger sử dụng một biến @SL_MONHOC để lưu trữ số lượng môn học của mỗi lớptrong cùng học kỳ và cùng năm học

 Sử dụng câu lệnh SELECT để đếm số môn học (sử dụng COUNT) và lưu vào biến

@SL_MONHOC, dựa trên điều kiện MALOP, HOCKY và NAM tương ứng giữa bảngGIANGDAY và bảng INSERTED sau khi thêm mới hoặc cập nhật dữ liệu

 Nếu số lượng môn học vượt quá 3, trigger sẽ thực hiện ROLLBACK để hủy bỏ các thayđổi và in ra thông báo lỗi "ERROR! LOP NAY DA HOC HON 3 MON TRONG CUNGHOCKY, NAM"

Câu 13:Sỉ số của một lớp bằng với số lượng học viên thuộc lớp đó

Trang 13

- Input: Bảng HOCVIEN, LOP

Trang 15

Câu 14: Trong quan hệ DIEUKIEN giá trị của thuộc tính MAMH vàMAMH_TRUOC trong cùng một bộ không được giống nhau (“A”, “A”) và cũngkhông tồn tại hai bộ (“A”, “B”) và (“B”, “A”).

- Input: Bảng DIEUKIEN

- Output: Ràng buộc để thuộc tính MAMH và MAMH_TRUOC trong quan hệ DIEUKIEN ở

cùng 1 bộ thì không được giống nhau và cũng không tồn tại 2 bộ ví dụ như (“A”, “B”), (“B”,

“A”)

- Hướng giải thuật:

 Khi có sự thêm mới hoặc cập nhật dữ liệu vào bảng DIEUKIEN, trigger này sẽ được kíchhoạ

 Trigger sử dụng các biến @MAMH và @MAMH_TRC để lưu trữ giá trị của MAMH vàMAMH_TRUOC từ bảng INSERTED

 Trigger kiểm tra xem giá trị của MAMH có bằng với giá trị của MAMH_TRUOC haykhông Nếu có, trigger sẽ in ra thông báo lỗi và thực hiện ROLLBACK để hủy bỏ cácthay đổi

 Nếu giá trị của MAMH không bằng với giá trị của MAMH_TRUOC, trigger sẽ kiểm traxem đã tồn tại bộ dữ liệu có giá trị MAMH_TRUOC là MAMH và MAMH_TRUOC làMAMH hay không Nếu tồn tại, trigger sẽ in ra thông báo lỗi và thực hiện ROLLBACK

 Nếu không có trường hợp nào trên, trigger sẽ in ra thông báo "THANH CONG"

Câu 15:Các giáo viên có cùng học vị, học hàm, hệ số lương thì mức lương bằng nhau

Trang 16

- Input: Bảng GIAOVIEN

- Output: Ràng buộc để các giáo viên có cùng học vị, học hàm thì mức lương bằng nhau.

- Hướng giải thuật:

 Trigger này được kích hoạt sau mỗi lần có thay đổi hoặc thêm mới giáo viên (FORINSERT, UPDATE)

 Trigger sử dụng biến @MUCLUONG để lưu mức lương và biến @MAGV để lưu mãgiáo viên

 Trigger sau đó lấy thông tin mức lương (@MUCLUONG) từ bảng GIAOVIEN và mãgiáo viên (@MAGV) từ bảng INSERTED (bảng ảo chứa dữ liệu mới được thêm hoặc cậpnhật trong bảng GIAOVIEN)

 Trigger sử dụng DISTINCT để chọn các bản ghi duy nhất trong bảng GIAOVIEN vàINSERTED dựa trên các tiêu chí học vị, học hàm và hệ số lương tương đồng nhau

 Trigger sau đó cập nhật mức lương của các giáo viên có thông tin tương tự nhau để chắcchắn rằng họ sẽ có cùng mức lương

Câu 16:Học viên chỉ được thi lại (lần thi >1) khi điểm của lần thi trước đó dưới 5

Trang 17

- Input: Bảng KETQUATHI

- Output: Ràng buộc để học sinh chỉ được thi lại nếu lần thi trước đó có điểm dưới 5.

- Hướng giải thuật:

 Trigger này được kích hoạt sau khi có sự thêm mới hoặc cập nhật dữ liệu trong bảngKETQUATHI (FOR INSERT, UPDATE)

 Trigger sử dụng biến @LANTHI để lưu trữ số lần thi và @DIEM để lưu trữ điểm

 Trigger sau đó lấy số lần thi (@LANTHI) từ bảng INSERTED (bảng chứa dữ liệu mớiđược thêm hoặc cập nhật trong bảng KETQUATHI)

 Nếu số lần thi lớn hơn 1 (lần thi > 1), trigger sẽ tiến hành kiểm tra điểm của lần thi trướcđó

 Trigger lấy điểm (@DIEM) của lần thi trước đó và kiểm tra xem điểm có đạt từ 5 trở lênhay không Nếu có, trigger sẽ thực hiện ROLLBACK TRANSACTION và in ra thôngbáo "HV NAY DA THI DAT"

 Trong trường hợp điểm không đạt, trigger tiếp tục thực hiện việc xóa các kết quả thi có sốlần thi lớn hơn số lần thi hiện tại

Câu 17:Ngày thi của lần thi sau phải lớn hơn ngày thi của lần thi trước (cùng học viên,

Trang 18

- Input: Bảng KETQUATHI

- Output: Ràng buộc để ngày thi của lần thi sau sẽ lớn hơn ngày thi của lần thi trước.

- Hướng giải thuật:

 Khi có sự thêm mới hoặc cập nhật dữ liệu trong bảng KETQUATHI, trigger này sẽ đượckích hoạt (FOR INSERT, UPDATE)

 Trigger sử dụng biến @MAHV để lưu trữ mã học viên, @MAMH để lưu trữ mã môn học,

@LANTHI để lưu trữ số lần thi, và @NGTHI để lưu trữ ngày thi

 Sau đó, trigger lấy thông tin về số lần thi, mã học viên, mã môn học, và ngày thi từ bảngINSERTED và bảng KETQUATHI

 Trigger kiểm tra xem ngày thi của lần thi hiện tại có lớn hơn ngày thi của lần thi tiếp theocủa học viên đó không Nếu không thỏa mãn, trigger sẽ thực hiện ROLLBACKTRANSACTION

Câu 18:Học viên chỉ được thi những môn mà lớp của học viên đó đã học xong

Trang 19

- Input: Bảng HOCVIEN

- Output: Ràng buộc để học viên chỉ thi được những môn mà lớp học viên đó đã học xong.

- Hướng giải thuật:

 Khi có sự cập nhật thông tin của học viên trong bảng HOCVIEN, trigger này sẽ đượckích hoạt (AFTER UPDATE)

 Trigger sử dụng biến @MAHV để lưu trữ mã học viên và @MALOP để lưu trữ mã lớphọc sau khi có sự cập nhật thông tin

 Sau đó, trigger kiểm tra xem học viên có thi môn học mà lớp của học viên chưa học xongkhông, thông qua việc so sánh dữ liệu trong bảng KETQUATHI và GIANGDAY

 Nếu phát hiện rằng học viên đó thi môn mà lớp của học viên chưa học xong, hoặc thi vàothời gian không phù hợp, trigger sẽ thực hiện ROLLBACK TRANSACTION

 Ngược lại, nếu học viên thỏa mãn điều kiện, trigger sẽ in ra thông báo "THANH CONG"

Câu 19:Khi phân công giảng dạy một môn học, phải xét đến thứ tự trước sau giữa cácmôn học (sau khi học xong những môn học phải học trước mới được học những

Trang 20

- Input: Bảng GIANGDAY

- Output: Ràng buộc để muốn học những môn học tiếp theo phải xem có môn học nào liền

trước đó không mới có thể học được

- Hướng giải thuật:

Câu 20:Giáo viên chỉ được phân công dạy những môn thuộc khoa giáo viên đó phụtrách

- Input: Bảng GIANGDAY

- Output: Ràng buộc để giáo viên chỉ được phân công dạy những môn thuộc khoa giao viên

đó phụ trách

- Hướng giải thuật:

 Trigger này được kích hoạt sau mỗi lần có sự thêm mới hoặc cập nhật dữ liệu trong bảngGIANGDAY (FOR INSERT, UPDATE)

 Trigger sử dụng biến @MAKHOA1 để lưu trữ mã khoa của môn học và @MAKHOA2

để lưu trữ mã khoa của giáo viên

Ngày đăng: 20/03/2024, 22:00

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

TÀI LIỆU LIÊN QUAN

w