SQL Server/MySQL

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
  • email
  • 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



Phản hồi từ học viên

5

Tổng 0 đánh giá

Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó