Mô hình dữ liệu quan hệ - chuẩn hóa dạng chuẩn 3.... Bảng, kiểu dữ liệu và rang buộc.... Thiết lập các rang buộc toàn vẹn..... Trong một khoa có nhiều chuyênngành.. Mỗi sinh viên ch
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO
ĐỀ TÀI MÔN CƠ SỞ DỮ LIỆU XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ ĐIỂM
SINH VIÊN THEO HỆ TÍN CHỈ
GIẢNG VIÊN HƯỚNG DẪN : LƯU NGUYỄN KỲ THƯ Thực hiện đề tài :
Nguyễn Thái Hải – N15DCCN033 – D15CQCN01-N
TPHCM - Tháng 10, 2017
Trang 2MỤC LỤC
MỤC LỤC 2
I Yêu cầu đề tài: 3
II Xác định thực thể: 5
III ERD: 6
IV Mô hình dữ liệu quan hệ - chuẩn hóa dạng chuẩn 3 7
V Diagram 8
VI Bảng, kiểu dữ liệu và rang buộc 9
VII Thiết lập các rang buộc toàn vẹn 14
1 Ràng buộc toàn vẹn miền giá trị: 14
2 Ràng buộc toàn vẹn liên thuộc tính: 18
3 Ràng buộc toàn vẹn liên bộ: 19
4 Ràng buộc toàn vẹn liên thuộc tính - liên quan h : ệ: 25
5 Ràng buộc toàn vẹn khóa ngoại 25
6 Ràng buộc toàn vẹn liên b - liên quan h : ộ - liên quan hệ: ệ: 29
VIII TRUY VẤN 32
Trang 3I Yêu cầu đề tài:
- Trường có nhiều khoa, mỗi khoa có mã khoa để phân biệt các khoa với nhau và tên khoa.Mỗi khoa được quản lý bởi 1 trưởng khoa tại 1 thời điểm nhất định
- Mỗi khoa quản lý nhiều lớp, mỗi lớp chỉ thuộc 1 khoa Trong một khoa có nhiều chuyênngành Mỗi sinh viên chỉ thuộc 1 chuyên ngành, trong 1 chuyên ngành có nhiều sinh viên
- Mỗi chuyên ngành có kế hoạch giãng xác định, học kỳ nào sẽ học những môn nào đã đượclên kế hoạch trước
- Mỗi lớp có mã lớp dùng để phân biệt các lớp và tên lớp Một sinh viên thì ở 1 lớp
- Thông tin về sinh viên gồm có mã sinh viên để phân biệt các sinh viên, họ tên sinh viên,phái, địa chỉ, ngày sinh, khóa học
- Lớp tín chỉ là lớp do trường đã lên kế hoạch mở trong 1 học kỳ thuộc 1 năm Lớp này cócác thông tin học buổi nào, thứ mấy, môn gì, giảng viên nào giảng để cho sinh viên có thểđăng ký học Số sv đăng ký phải từ số sv tối thiểu trở lên thì mới tổ chức dạy, ngược lại nhàtrường sẽ hủy Thông tin về lớp tín chỉ : mă lớp tín chỉ, số sv tối thiểu
- Thông tin về giảng viên gồm mã giảng viên dùng để phân biệt các giảng viên, họ tên giảngviên, học vị, học hàm, chuyên môn Một giảng viên chỉ thuộc duy nhất 1 khoa
- Thông tin về môn học gồm mã môn học dùng để phân biệt các môn học, tên môn học, sốtiết lý thuyết, số tiết thực hành Một giảng viên có thể giảng được nhiều môn và 1 môn cóthể được giảng dạy bởi nhiều giảng viên
- Sinh viên thi môn học nào thì có 1 kết quả Số lần thi cho 1 môn tối đa 1 lần
- Nếu sinh viên thi không đạt, thì sinh viên đăng ký học lại với lớp khóa sau và thi cùng vớilớp đó
- Sau khi thi và có điểm của các môn thi Điểm của các môn thi được chuyển tới phòng giáo
vụ của từng khoa, nhiệm vụ của phòng là nhập điểm của từng môn học đó vào cơ sở dữ liệu
Thang điểm tối đa của mỗi môn học là thang điểm 10 Sau mỗi kỳ học thì giáo vụkhoa sẽ tiến hành sắp xếp phân loại sinh viên
Trang 4- Cuối khóa, trường sẽ lọc ra các sv làm đồ án tốt nghiệp hoặc học 2 môn thay thế SV làmĐATN sẽ nhận luận văn, GVHD, và sẽ ra Hội đồng báo cáo Điểm chấm LVTN có 7 cộtđiểm : điểm HD, điểm PB, điểm 5 thành viên trong hội đồng.
Yêu cầu:
1 Thiết kế sơ đồ ERD cho cơ sở dữ liệu quản lý điểm sinh viên
2 Chuyển sơ đồ ERD trên thành mô hình dữ liệu quan hệ sao cho đạt dạng chuẩn 3
3 Thiết lập các ràng buộc toàn vẹn của cơ sở dữ liệu
4 Viết các Stored Procedure thực hiện các việc sau :
a/ Liệt kê danh sách sinh viên đã đăng ký học của lớp tín chỉ @malopTC (tên môn,họ tên GV, mã SV, họ tên SV, mã lớp)
b/ Liệt kê điểm thi lớn nhất các môn của sinh viên có mã @masv (họ tên, tên lớp, học kỳ, tên môn, số lần thi, điểm) Danh sách in theo thứ tự học kỳ, tênmôn
c/ Liệt kê kế hoạch giảng của chuyên ngành @machuyennganh đang áp dụng trongnăm @nam Kết xuất: học kỳ, tên môn, số tín chỉ
Trang 5II Xác định thực thể:
- Môn học (+ID, +TenMH, +SoTietLyThuyet, +SoTietThucHanh, +SoTinChi,
+ThiTotNghiep)
- Giảng viên (+ID, +Ho, +Ten, +HocVi, +HocHam, +ChuyenMon)
- Khoa ( +ID, +Ten)
- Lớp ( +ID, +Ten)
- Chuyên ngành ( +ID, +Ten)
- Sinh viên ( +ID, +Ho, +Ten, +Phai, +DiaChi, +NgaySinh, + KhoaHoc, +XetLVTN)
- Lớp tín chỉ ( +ID, +Nhom, +NienKhoa, +HocKy, +SoSVToiTieu, +SoSVToiDa,
+NgayBatDau, +NgayKetThuc )
- Hội đồng báo cáo ( +ID, +Ten, Nam)
- Luận văn tốt nghiệp ( +ID, +DiemHuongDan, +DiemPhanBien, +DiemThanhVien1,
+DiemThanhVien2, +DiemThanhVien3, +DiemThanhVien4, +DiemThanhVien5)
- Tiểu ban ( +ID, +Ten)
- Loại điểm ( +ID, +Ten)
Trang 6III ERD:
Trang 7IV.Mô hình dữ liệu quan hệ - chuẩn hóa
dạng chuẩn 3
Khóa Chính: in đậm và gạch chân
Khóa Ngoại: in đậm và màu vàng
Khóa Ngoại và Khóa Chính: in đậm, màu đỏ và gạch chân
Khóa tương đương với khóa chính: in đậm và in nghiêng
CHUYÊN NGÀNH (MãCN, TênCN, Mã khoa )
KHOA ( MãKhoa , TênKhoa, MãTrKhoa)
TRƯỞNG KHOA ( MãTrKhoa ,Ngày )
GIẢNG VIÊN (MãGV, TênGV, MãKhoa, Học Vị, Học hàm,
Chuyên môn) MÔN HỌC (MãMH, TênMH, Số tiết LT, Số tiết TH, Số tín
chỉ, Thay thế tốt nghiệp) LỚP (MãLớp, TênLớp, Mã Khoa )
KẾ HOẠCH GIẢNG (MãNgành, MãMôn ,Ngày áp dụng , Học kỳ,
Năm ) LỚP TÍN CHỈ ( MãLớpTC , MãGV, MãMH, Nhóm, Niên
khóa, Học kỳ, Số lượng SV TT, Số lượng SV
TĐ, Ngày bắt đầu, Ngày kết thúc) LOẠI ĐIỂM (Mã loại, Tên,%)
CHI TIẾT % ĐIỂM (MãLoạiĐiểm, LopTinChiID ) ,
CT Lịch học (LopTinChiID , buổi, thứ , phòng, tiết bắt đầu,
số tiết)
KHẢ NĂNG DẠY HỌC (MãMH, MãGV )
ĐĂNG KÝ MÔN (MãSV, MãLớpTC)
Chi tiết điểmSV (MãLoạiĐiểm,SinhViênID, LopTinChiID điểm)
SINH VIÊN (MãSV, MãCN, MãLớp, Họ, Tên, Phái, Địa chỉ,
Ngày sinh, Khóa học, Xet_LV_TT ) LUẬN VĂN TN (MãLV, MãSV, MãGVHD, Mã GVPB, điểm
HD, điểm PB, nội dung ) HỘI ĐỒNG BÁO CÁO ( MãHĐ, Tên, Năm, MãKhoa )
CHI TIẾT TIỂU BAN (MãChiTiếtTB, MãGV, MãTB)
CHẤM (MãChiTiếtTB, MãLV, điểm )
TIỂU BAN (MãTB, TênTB, MãHĐ,Mã chuyên ngành)
Trang 8V Diagram
Trang 9VI.Bảng, kiểu dữ liệu và rang buộc
1 Table MonHoc
check( SoTietLyThuyet >=0 )
check(SoTietThucHanh >=0 )
and 10), default: SoTinChi=2
2 Table GiangVien
3 Table TruongKhoa
GETDATE()
4 Table Khoa
5 Table ChuyenNganh
Trang 106 Table Lop
7 Table KeHoachGiang
9 Table SinhVien
check( Phai =“NAM” or Phai =“NỮ”)
YEAR(GETDATE())
(XetLVTN IS NULL OR XetLVTN = 0 OR
XetLVTN =1)
Trang 1110.Table LopTinChi
(NgayKetThuc >
NgayBatDau)
11.Table ChiTietLichHoc
Check (Buoi = 'S' OR Buoi
= 'C')
>=2 AND Thu <= 7)
Check( TietBatDau >=1 andTietBatDau <= 10)
CHECK (SoTiet BETWEEN 1 AND 5)
Trang 1212 Table DangKy
13.Table HoiDongBaoCao
YEAR(GETDATE())
14.Table LuanVanTN
NULL OR DiemHuongDanBETWEEN 0 AND 10)
NULL OR DiemPhanBien BETWEEN 0 AND 10)
15.Table TieuBan
ChuyenNganhID varchar(10) Not null, Foreign key
Trang 1316.Table CTTieuBan
17.Table ChamLVTN
AND 10)
18 Table LoaiDiem
19 Table CTPhanTramDiemLopTC
20.Table CTDiemSv
Trang 14VII Thiết lập các rang buộc toàn vẹn
1 Ràng buộc toàn vẹn miền giá trị:
Ràng buộc 1:
- Bối cảnh: MonHoc
- Mô tả: Số tiết lý thuyết, thực hành phải lớn hơn hoặc bằng 0
Số tín chỉ nằm trong khoảng từ 1 đến 10
- Nội dung: d MonHoc / d.SoTietLyThuyet >= 0
d MonHoc / d.SoTietThucHanh >= 0 d MonHoc / d.SoTinChi [1,10]
- Mô tả: Ngày nhận chức phải lớn hơn hoặc bằng ngày hiện tại
- Nội dung: d TruongKhoa / d.Ngay >= Ngày hiện tại
- Mô tả: Ngày thực hiện phải lớn hơn hoặc bằng ngày hiện tại
1 năm chỉ có học kì 1,2
- Nội dung: d KeHoachGiang / d.Ngay >= 0
Trang 15 Ràng buộc 4:
- Bối cảnh: SinhVien
- Mô tả: Phái có 2 trị là Nam và Nữ
Xét LVTN chỉ có chưa xác định,không có luận văn và có
- Nội dung: d SinhVien / d.Phai {‘Nam’,’Nữ’}Nam’,’Nữ’}
d SinhVien / d.XetLVTN {0,1,NULL}
- Mô tả: 1 năm chỉ có học kì 1,2,3
Nhóm phải lớn hơn 0
Số sinh viên tối thiểu, tối đa lớn hơn 0Ngày bắt đầu phải hơn hơn ngày hiện tạiPhần trăm chuyên cần, bài tập lớn hơn hoặc bằng 0 và bé hơn hoặcbằng 30
Phần trăm cuối kỳ phải lớn hơn hoặc bằng 30 và bé hơn hoặc bằng 100Khóa học phải lớn hơn năm sinh của sinh viên
- Nội dung: d LopTinChi / d.HocKy [1,3]
Trang 16- Mô tả: Buổi có 2 buổi Sáng hoặc Chiều
Ngày học chỉ có thứ 2 tới thứ 7Tiết bắt đầu từ 1 tới 10
Số tiết học trong 1 buổi từ 1 đến 5
- Nội dung: d ChiTietLichHoc / d.Buoi {‘Nam’,’Nữ’}S’,’C’}
- Mô tả: Năm thành lập hội đồng báo cáo phải lớn hơn hoặc bằng năm hiện tại
- Nội dung: d HoiDongBaoCao / d.Nam >= YEAR(GETDATE())
- Tầm ảnh hưởng:
Trang 17 Ràng buộc 8:
- Bối cảnh: LuanVanTN
- Mô tả: Điểm hướng dẫn phải nằm trong khoảng từ 0 đến 10
Điểm phản biện phải nằm trong khoảng từ 0 đến 10
- Nội dung: d LuanVanTN / d.DiemHuongDan [0,10]
- Mô tả: Điểm nằm trong đoạn từ 0 đến 10
- Nội dung: d ChamLVTN / d.Diem [0,10]
- Mô tả: Phần trăm điểm của cột diểm phải lớn hơn 0% và nhỏ hơn 100%
- Nội dung: d LopTinChi/ d.PhanTram [0,100]
- Mô tả: Điểm số của mỗi điểm phải nằm trong khoảng từ 0 đến 10
- Nội dung: d CTDiemSv / d Diem [0,10]
Trang 18- Bối cảnh: SinhVien
- Mô tả: Khóa học của sinh viên phải lớn hơn năm sinh của sinh viên đó
- Nội dung: sv SinhVien / sv KhoaHoc > sv YEAR(NgaySinh)
- Tầm ảnh hưởng:
SinhVien + - +( KhoaHoc, NgaySinh)
Ràng buộc 13:
- Bối cảnh: LopTinChi
- Mô tả:
Ngày kết thúc phải sau ngày bắt đầu học
Số sinh viên tối đa nhiều hơn hoặc bẳng số sinh viên tối thiểu
- Nội dung: d LopTinChi/ d.NgayBatDau < d.NgayKetThuc
d LopTinChi/ d.SoSVToiThieu < d SoSVToiDa
Trang 19- Bối cảnh: LuanVanTN
- Mô tả: Giáo viên hướng dẫn và phản biện phải khác nhau
- Nội dung: d LuanVanTN / d GVHD_ID <> d.GVPB_ID
- Tầm ảnh hưởng:
3 Ràng buộc toàn vẹn liên bộ:
Ràng buộc 16:
- Bối cảnh: MonHoc
- Mô tả: Các môn học có mã và tên môn học khác nhau
- Nội dung: mh1,mh2 MonHoc / mh1.ID <> mh2.ID
mh1,mh2 MonHoc / mh1.Ten <> mh2.Ten
- Mô tả: Cac giảng viên có mã để phân biệt
- Nội dung: gv1,gv2 GiangVien / gv1.ID <> gv2.ID
- Mô tả: 1 giảng viên có thể có nhiều ngày nhậm chức khác nhau
- Nội dung: gv1,gv2 TruongKhoa / gv1.ID <> gv2.ID or gv1. NgayNhanChuc
Trang 20 Ràng buộc 19:
- Bối cảnh: Khoa
- Mô tả: Các khoa có mã và tên khác nhau
- Nội dung: k1,k2 Khoa / k1.ID <> k2.ID
k1,k2 Khoa / k1.Ten <> k2.Ten
- Mô tả: Các chuyên ngành có mã và tên khác nhau
- Nội dung: k1,k2 ChuyenNganh / k1.ID <> k2.ID
k1,k2 ChuyenNganh / k1.Ten <> k2.Ten
- Mô tả: Các chuyên ngành có mã và tên khác nhau
- Nội dung: k1,k2 Lop / k1.ID <> k2.ID
k1,k2 Lop / k1.Ten <> k2.Ten
- Nội dung: k1,k2 KeHoachGiang / k1.MonHocID <> k2.MonHocID or
k1.ChuyenNganhID <> k2.ChuyenNganhID or k1.Ngay <> k2.Ngay
- Tầm ảnh hưởng:
Trang 21Quan hệ Thêm Xóa Sửa
- Mô tả: 1 giảng viên dạy các môn học khác nhau
- Nội dung: k1,k2 KhaNangDayHoc / k1.MonHocID <> k2.MonHocID OR
- Mô tả: Sinh viên khác nhau có mã sinh viên khác nhau
- Nội dung: sv1,sv2 SinhVien / sv1.ID <> sv2.ID
- Mô tả: Lớp tín chỉ khác nhau sẽ có mã lớp tín chỉ khác nhau
Giảng viên dạy một môn học cho một nhóm tại một học kỳ trong mộtniên khóa chỉ được phép dạy ở một lớp tín chỉ
- Nội dung: tc1,tc2 LopTinChi / tc1.ID <> tc2.ID
tc1,tc2 LopTinChi / tc1 GiangVienID<> tc2 GiangVienID or tc1.MonHocID <> tc2 MonHocID or tc1 Nhom <> tc2 Nhom or tc1.NienKhoa <> tc2 HocKy or tc1 NienKhoa <> tc2 HocKy
Trang 22 Ràng buộc 26:
- Bối cảnh: ChiTietLichHoc
- Mô tả: Các chi tiết lịch học không được phép đồng thời có cùng Mã lớp tín chỉ, buổi
học và thứ
- Nội dung: ct1,ct2 ChiTietLichHoc /ct1 GiangVienID<> ct2 GiangVienID
or ct1 MonHocID <> ct2 MonHocID or ct1 Nhom <> ct2 Nhom or ct1 NienKhoa
<> ct2 HocKy or ct1 NienKhoa <> ct2 HocKy
- Mô tả: Mỗi sinh viên chỉ được phép đăng ký một lớp tín chỉ 1 lần duy nhất
Mỗi sinh viên chỉ được đăng ký tối đa 2 môn thay thế tốt nghiệp
- Nội dung: dk1,dk2 DangKy / dk1 SinhVienID <> dk2.SinhVienID or
Mỗi sinh viên chỉ phép làm 1 LVTN
- Nội dung: lv1,lv2 LuanVanTN / lv1.ID <> lv2.ID
lv1,lv2 LuanVanTN / lv1 SinhVienID <> lv2 SinhVienID
- Tầm ảnh hưởng:
Trang 23 Ràng buộc 29:
- Bối cảnh: HoiDongBaoCao
- Mô tả: Mỗi hội đồng báo cáo có 1 mã số riêng biệt để phân biệt với các hộiđồng báo cáo khác, đồng thời tên của mỗi hội đồng báo cáo là duy nhất
- Nội dung: hd1,hd2 HoiDongBaoCao / hd1.ID <> hd2.ID
hd1,hd2 HoiDongBaoCao / hd1.Ten <> hd2 Ten
- Nội dung: tb1,tb2 TieuBan / tb1.ID <> tb2.ID
tb1,tb2 TieuBan / tb1.Ten <> tb2 Ten
- Mô tả: 1 giảng viên chỉ được phép xuất hiện trong 1 tiểu ban duy nhất 1 lần
- Nội dung: tb1,tb2 CTTieuBan / tb1 GiangVienID <> tb2 GiangVienID OR tb1.TieuBanID <> tb2 TieuBanID
- Tầm ảnh hưởng:
Ràng buộc 32:
- Bối cảnh: ChamLVTN
- Mô tả: 1 luận văn tốt nghiệp chỉ được chấm bởi 1 tiểu ban
- Nội dung: lv1, lv2 ChamLVTN / lv1 LuanVanID <> lv2 LuanVanID OR tb1.CTTieuBanID <> tb2 CTTieuBanID
- Tầm ảnh hưởng:
Trang 24Quan hệ Thêm Xóa Sửa
Ràng buộc 33:
- Bối cảnh: LoaiDiem
- Mô tả: Mỗi điểm có mã và tên riêng biệt
- Nội dung: lv1, lv2 LoaiDiem / lv1 ID <> lv2 ID
lv1, lv2 LoaiDiem / lv1 Ten <> lv2 Ten
- Mô tả: Các loại điểm trong cùng 1 lớp tín chỉ phải khác nhau
Tổng phần trăm các cột điểm cùng 1 lớp tín chỉ phải = 100
- Nội dung: lv1, lv2 CTPhanTramDiemLopTC / lv1. LoaiDiemID <> lv2.LoaiDiemID OR lv1 LopTC_ID <> lv2.LopTC_ID
lv1, lv2 CTPhanTramDiemLopTC / sum( lv1.PhanTram,lv2.PhanTram) = 100
- Tầm ảnh hưởng:
CTDiemSv + - +( LoaiDiemID, DangKyID)
Trang 254 Ràng buộc toàn vẹn liên thuộc tính - liên quan hệ:
- Bối cảnh: GiangVien, Khoa
- Mô tả: Mỗi giảng viên chỉ thuộc một khoa
- Nội dung: g GiangVien, k Khoa / g.KhoaID = k.ID
- Bối cảnh: Lop, Khoa
- Mô tả: Mỗi lớp chỉ thuộc một khoa
- Nội dung: l Lop,k Khoa / l.KhoaID = k.ID
- Bối cảnh: ChuyenNganh, Khoa
- Mô tả: Mỗi chuyên ngành chỉ thuộc một khoa
- Nội dung: l ChuyenNganh, k Khoa / l.KhoaID = k.ID
Trang 26- Mô tả: Mỗi sinh viên chỉ thuộc một chuyên ngành.
- Nội dung: l SinhVien, k ChuyenNganh / l.ChuyenNganhID = k ID
- Mô tả: Mỗi sinh viên chỉ thuộc 1 lớp học phần
- Nội dung: l SinhVien, k Lop / l.LopID = k ID
- Mô tả: Trưởng khoa là 1 giảng viên
- Nội dung: l TruongKhoa, k GiangVien / l.ID = k ID
- Mô tả: 1 môn học và 1 chuyên ngành phải xác định
- Nội dung: k KeHoachGiang, c ChuyenNganh, m MonHoc /k.MonHocID = m.ID AND k.ChuyenNganhID = c.ID
- Tầm ảnh hưởng: