| NenTang.vn |
Chương 8-Bài 3. Bài tập thiết kế Cơ sở dữ liệu Quản lý Giảng viên và Sinh viên |
||
| Tác giả: Dương Nguyễn Phú Cường | Ngày đăng: 12/12/2025, 5:14 | Lượt xem: 2194 |
1. Mô tả bài toán
Một trường Đại học cần xây dựng hệ thống cơ sở dữ liệu để quản lý thông tin về Giảng viên, Sinh viên, Khoa và Kết quả học tập. Các yêu cầu quản lý cụ thể như sau:
2. Thiết kế lược đồ (Schema)
Dựa trên mô tả, chúng ta xác định các bảng (Table) và mối quan hệ (Relationship) như sau:
3. Script tạo bảng và dữ liệu mẫu (SQL)Bạn hãy chạy đoạn mã SQL dưới đây để khởi tạo môi trường thực hành: -- Tạo Database
CREATE DATABASE DB_TruongHoc;
USE DB_TruongHoc;
-- 1. Tạo bảng Khoa
CREATE TABLE TBL_KHOA (
Makhoa CHAR(10) PRIMARY KEY,
Tenkhoa VARCHAR(50) NOT NULL,
Dienthoai VARCHAR(20)
);
-- 2. Tạo bảng Giảng Viên
CREATE TABLE TBL_GIANGVIEN (
Magv INT PRIMARY KEY,
Hoten VARCHAR(50) NOT NULL,
Luong DECIMAL(10,2),
Makhoa CHAR(10),
FOREIGN KEY (Makhoa) REFERENCES TBL_KHOA(Makhoa)
);
-- 3. Tạo bảng Sinh Viên
CREATE TABLE TBL_SINHVIEN (
Masv INT PRIMARY KEY,
Hoten VARCHAR(50) NOT NULL,
Namsinh INT,
Quequan VARCHAR(50),
Makhoa CHAR(10),
FOREIGN KEY (Makhoa) REFERENCES TBL_KHOA(Makhoa)
);
-- 4. Tạo bảng Môn Học
CREATE TABLE TBL_MONHOC (
Mamh CHAR(10) PRIMARY KEY,
Tenmh VARCHAR(50) NOT NULL,
Sotinchi INT
);
-- 5. Tạo bảng Kết Quả
CREATE TABLE TBL_KETQUA (
Masv INT,
Mamh CHAR(10),
Diemthi DECIMAL(4,1),
PRIMARY KEY (Masv, Mamh),
FOREIGN KEY (Masv) REFERENCES TBL_SINHVIEN(Masv),
FOREIGN KEY (Mamh) REFERENCES TBL_MONHOC(Mamh)
);
-- --- THÊM DỮ LIỆU MẪU ---
-- Thêm Khoa
INSERT INTO TBL_KHOA VALUES
('CNTT', 'Cong nghe thong tin', '0243888888'),
('TOAN', 'Toan tin', '0243999999'),
('SINH', 'Cong nghe Sinh hoc', '0243777777');
-- Thêm Giảng viên
INSERT INTO TBL_GIANGVIEN VALUES
(1, 'Tran Van A', 15000000, 'CNTT'),
(2, 'Nguyen Thi B', 12000000, 'CNTT'),
(3, 'Le Van C', 13000000, 'TOAN'),
(4, 'Pham Thi D', 11000000, 'SINH');
-- Thêm Sinh viên
INSERT INTO TBL_SINHVIEN VALUES
(101, 'Nguyen Van Hung', 2002, 'Ha Noi', 'CNTT'),
(102, 'Tran Thi Hoa', 2003, 'Nam Dinh', 'CNTT'),
(103, 'Le Van Nam', 2002, 'Nghe An', 'TOAN'),
(104, 'Pham Minh Tuan', 2003, 'Ha Noi', 'SINH');
-- Thêm Môn học
INSERT INTO TBL_MONHOC VALUES
('CSDL', 'Co so du lieu', 3),
('CTDL', 'Cau truc du lieu', 4),
('TRR', 'Toan roi rac', 3);
-- Thêm Kết quả
INSERT INTO TBL_KETQUA VALUES
(101, 'CSDL', 8.5),
(101, 'CTDL', 7.0),
(102, 'CSDL', 9.0),
(102, 'TRR', 6.5),
(103, 'TRR', 8.0),
(104, 'CSDL', 5.5);
4. Các câu hỏi thực hành (Query Exercise)Hãy viết câu lệnh SQL để thực hiện các yêu cầu sau: Phần A: Truy vấn cơ bản
Phần B: Truy vấn liên kết (JOIN)
Phần C: Truy vấn tính toán & Nhóm (Aggregate & Group By)
Phần D: Truy vấn nâng cao
Gợi ý giải (Solutions Hint)
Câu 4: SELECT sv.Masv, sv.Hoten, k.Tenkhoa FROM TBL_SINHVIEN sv JOIN TBL_KHOA k ON sv.Makhoa = k.Makhoa; Câu 6: SELECT k.Tenkhoa, COUNT(sv.Masv) as SoLuongSV FROM TBL_KHOA k LEFT JOIN TBL_SINHVIEN sv ON k.Makhoa = sv.Makhoa GROUP BY k.Tenkhoa; Câu 9: SELECT sv.Hoten, kq.Diemthi FROM TBL_KETQUA kq JOIN TBL_SINHVIEN sv ON kq.Masv = sv.Masv JOIN TBL_MONHOC mh ON kq.Mamh = mh.Mamh WHERE mh.Tenmh = 'Co so du lieu' ORDER BY kq.Diemthi DESC LIMIT 1;
|
| Sản phẩm của Nền tảng | NenTang.vn - Hành trang tới Tương lai |