Thiết kế CSDL quản lý sinh viên - nâng cao - phân 2 - lập trình sql server
🔹 1. Thiết kế các bảng
✅ Bảng SinhVien
Gồm các thuộc tính:
- rollNo (khóa chính)
- fullName
- age
- address
- phoneNumber
- gender
👉 Dùng để lưu thông tin sinh viên
✅ Bảng MonHoc
Gồm các thuộc tính:
- maMonHoc (khóa chính)
- tenMonHoc
👉 Dùng để lưu danh sách môn học
✅ Bảng Diem
Gồm các thuộc tính:
- diem
- rollNo (khóa ngoại → SinhVien)
- maMonHoc (khóa ngoại → MonHoc)
👉 Dùng để lưu điểm của sinh viên theo từng môn
✅ Bảng LopHoc
Gồm các thuộc tính:
- maLopHoc (khóa chính)
- tenLopHoc
👉 Dùng để quản lý lớp học
✅ Bảng QuanLyLopHoc
Gồm các thuộc tính:
- maLopHoc (khóa ngoại → LopHoc)
- rollNo (khóa ngoại → SinhVien)
👉 Khóa chính: (maLopHoc, rollNo)
👉 Dùng để quản lý sinh viên thuộc lớp nào
✅ Bảng PhongHoc
Gồm các thuộc tính:
- maPhongHoc (khóa chính)
- tenPhongHoc
- soBan
- soGhe
- diaChi
👉 Dùng để quản lý phòng học
✅ Bảng BookGioDay
Gồm các thuộc tính:
- maMonHoc (khóa ngoại → MonHoc)
- maLopHoc (khóa ngoại → LopHoc)
- maPhongHoc (khóa ngoại → PhongHoc)
- gioBatDau
- gioKetThuc
👉 Dùng để quản lý lịch dạy
🔹 2. Thêm dữ liệu
- Mỗi bảng thêm tối thiểu 5 bản ghi
-
Dữ liệu đảm bảo:
- Có nhiều sinh viên khác nhau
- Có sinh viên ở Nam Định
- Có lớp chứa “A8”
- Có dữ liệu điểm đầy đủ để join
🔹 3. Các yêu cầu truy vấn
✅ 1. Hiển thị tất cả các bảng
-
Lấy toàn bộ dữ liệu từ tất cả bảng:
- SinhVien
- MonHoc
- Diem
- LopHoc
- QuanLyLopHoc
- PhongHoc
- BookGioDay
✅ 2. Hiển thị sinh viên có quê ở Nam Định
-
Điều kiện:
- address = "Nam Định"
✅ 3. Hiển thị lớp học có chứa “A8”
-
Điều kiện:
- tenLopHoc LIKE '%A8%'
✅ 4. Hiển thị thông tin sinh viên tên "TRAN VAN A"
-
Hiển thị:
- rollNo
- fullName
- điểm
👉 Kết hợp:
- SinhVien + Diem
✅ 5. Hiển thị điểm của tất cả sinh viên
-
Hiển thị:
- rollNo
- fullName
- điểm
👉 Kết hợp:
- SinhVien + Diem
✅ 6. Hiển thị điểm + môn học
-
Hiển thị:
- rollNo
- fullName
- điểm
- tên môn học
👉 Kết hợp:
- SinhVien + Diem + MonHoc
🔹 4. Phần VIEW
View là bảng ảo giúp truy vấn nhanh và dễ sử dụng.
✅ View 1: Danh sách sinh viên
- Hiển thị toàn bộ bảng SinhVien
✅ View 2: Sinh viên Nam Định
- Lọc theo address = "Nam Định"
✅ View 3: Điểm sinh viên
-
Bao gồm:
- rollNo
- fullName
- điểm
👉 Kết hợp SinhVien + Diem
✅ View 4: Điểm + môn học
-
Bao gồm:
- rollNo
- fullName
- điểm
- tên môn học
👉 Kết hợp 3 bảng
✅ View 5: Lịch giảng dạy
-
Bao gồm:
- môn học
- lớp học
- phòng học
- giờ bắt đầu
- giờ kết thúc
🔹 5. Phần INDEX
Index giúp tăng tốc truy vấn dữ liệu.
✅ Index trên bảng SinhVien
- rollNo (khóa chính)
- fullName
👉 Tăng tốc tìm kiếm sinh viên
✅ Index trên bảng Diem
- rollNo
- maMonHoc
👉 Tăng tốc join và truy vấn điểm
✅ Index trên bảng LopHoc
- tenLopHoc
👉 Tăng tốc tìm lớp có chứa “A8”
✅ Index trên bảng QuanLyLopHoc
- (rollNo, maLopHoc)
👉 Index kết hợp (composite index)
✅ Index trên bảng BookGioDay
- maMonHoc
- maLopHoc
- maPhongHoc
👉 Tăng tốc truy vấn lịch học
