🎯 Mục tiêu bài Quiz
Kiểm tra kiến thức của bạn qua các câu hỏi trắc nghiệm và bài tập thực hành!
✅ 18 câu hỏi trắc nghiệm (6 phần)
✅ 3 bài tập thực hành
✅ Yêu cầu: Hoàn thành bài 1-12
Thời gian: 30 phút | Độ khó: Tổng hợp | Đạt yêu cầu: ≥ 13/18 câu đúng
| Phần | Chủ đề | Số câu |
|---|---|---|
| 1 | ERD và Thiết kế CSDL | 3 |
| 2 | Chuẩn hóa và Khóa | 3 |
| 3 | Index và Hiệu năng | 3 |
| 4 | Stored Procedures và Views | 3 |
| 5 | Transaction và Bảo mật | 3 |
| 6 | Data Warehouse và Nâng cao | 3 |
| 7 | Bài tập thực hành | 3 |
Quy tắc:
- Mỗi câu hỏi trắc nghiệm có 4 đáp án, chỉ 1 đáp án đúng.
- Đọc kỹ câu hỏi và giải thích sau khi trả lời để củng cố kiến thức.
- Phần bài tập thực hành yêu cầu viết SQL hoặc phân tích thiết kế.
Phần 1: ERD & Thiết kế CSDL
Phần 2: Chuẩn hóa & Khóa
Phần 3: Index & Hiệu năng
Phần 4: Stored Procedures & Views
Phần 5: Transaction & Bảo mật
Phần 6: Data Warehouse & Nâng cao
Phần 7: Bài tập thực hành
Bài tập 1: Thiết kế ERD và tạo bảng
Thiết kế ERD và viết câu lệnh SQL tạo bảng cho hệ thống Quản lý Thư viện gồm các thực thể: Sách, Độc giả, Phiếu mượn. Yêu cầu:
- Xác định đúng các entity, attribute, và relationship.
- Định nghĩa Primary Key, Foreign Key, và các ràng buộc (NOT NULL, CHECK, DEFAULT).
- Thể hiện quan hệ N-M giữa Sách và Độc giả thông qua bảng Phiếu mượn.
1CREATE TABLE Sach (2 MaSach INT PRIMARY KEY,3 TenSach NVARCHAR(200) NOT NULL,4 TacGia NVARCHAR(100),5 NhaXuatBan NVARCHAR(100),6 NamXuatBan INT CHECK (NamXuatBan > 1900),7 SoLuongTon INT DEFAULT 0 CHECK (SoLuongTon >= 0)8);910CREATE TABLE DocGia (11 MaDocGia INT PRIMARY KEY,12 HoTen NVARCHAR(100) NOT NULL,13 Email VARCHAR(100) UNIQUE,14 SoDienThoai VARCHAR(15),15 NgayDangKy DATE DEFAULT GETDATE()16);1718CREATE TABLE PhieuMuon (19 MaPhieu INT PRIMARY KEY,20 MaDocGia INT NOT NULL,21 MaSach INT NOT NULL,22 NgayMuon DATE NOT NULL DEFAULT GETDATE(),23 NgayTraDuKien DATE NOT NULL,24 NgayTraThucTe DATE,25 TrangThai NVARCHAR(20) DEFAULT N'Đang mượn'26 CHECK (TrangThai IN (N'Đang mượn', N'Đã trả', N'Quá hạn')),27 FOREIGN KEY (MaDocGia) REFERENCES DocGia(MaDocGia),28 FOREIGN KEY (MaSach) REFERENCES Sach(MaSach)29);Bài tập 2: Chuẩn hóa dữ liệu
Cho bảng chưa chuẩn hóa sau:
| MaDH | NgayDH | MaKH | TenKH | DiaChiKH | MaSP | TenSP | DonGia | SoLuong |
|---|---|---|---|---|---|---|---|---|
| DH01 | 2025-01-15 | KH01 | Nguyễn Văn A | HCM | SP01 | Laptop | 15000000 | 2 |
| DH01 | 2025-01-15 | KH01 | Nguyễn Văn A | HCM | SP02 | Chuột | 200000 | 3 |
| DH02 | 2025-01-16 | KH02 | Trần Thị B | HN | SP01 | Laptop | 15000000 | 1 |
Yêu cầu: Chuẩn hóa bảng trên lên 3NF và viết câu lệnh SQL tạo các bảng đã chuẩn hóa.
Tách thành 4 bảng:
1-- Bảng KhachHang (loại bỏ phụ thuộc bắc cầu)2CREATE TABLE KhachHang (3 MaKH VARCHAR(10) PRIMARY KEY,4 TenKH NVARCHAR(100) NOT NULL,5 DiaChiKH NVARCHAR(200)6);78-- Bảng SanPham (loại bỏ phụ thuộc bắc cầu)9CREATE TABLE SanPham (10 MaSP VARCHAR(10) PRIMARY KEY,11 TenSP NVARCHAR(100) NOT NULL,12 DonGia DECIMAL(15,2) CHECK (DonGia > 0)13);1415-- Bảng DonHang (loại bỏ phụ thuộc một phần)16CREATE TABLE DonHang (17 MaDH VARCHAR(10) PRIMARY KEY,18 NgayDH DATE NOT NULL,19 MaKH VARCHAR(10) NOT NULL,20 FOREIGN KEY (MaKH) REFERENCES KhachHang(MaKH)21);2223-- Bảng ChiTietDonHang (bảng trung gian)24CREATE TABLE ChiTietDonHang (25 MaDH VARCHAR(10),26 MaSP VARCHAR(10),27 SoLuong INT CHECK (SoLuong > 0),28 PRIMARY KEY (MaDH, MaSP),29 FOREIGN KEY (MaDH) REFERENCES DonHang(MaDH),30 FOREIGN KEY (MaSP) REFERENCES SanPham(MaSP)31);Bài tập 3: Stored Procedure và Transaction
Viết Stored Procedure cho thao tác Mượn sách với yêu cầu:
- Kiểm tra sách còn trong kho (SoLuongTon > 0).
- Tạo phiếu mượn mới trong bảng PhieuMuon.
- Giảm SoLuongTon trong bảng Sach đi 1.
- Sử dụng Transaction để đảm bảo tính toàn vẹn dữ liệu (nếu bất kỳ bước nào thất bại, ROLLBACK toàn bộ).
1CREATE PROCEDURE sp_MuonSach2 @MaDocGia INT,3 @MaSach INT,4 @NgayTraDuKien DATE5AS6BEGIN7 SET NOCOUNT ON;8 BEGIN TRY9 BEGIN TRANSACTION;1011 -- Kiểm tra sách còn trong kho12 DECLARE @SoLuong INT;13 SELECT @SoLuong = SoLuongTon14 FROM Sach WHERE MaSach = @MaSach;1516 IF @SoLuong IS NULL17 BEGIN18 RAISERROR(N'Mã sách không tồn tại.', 16, 1);19 RETURN;20 END2122 IF @SoLuong <= 023 BEGIN24 RAISERROR(N'Sách đã hết, không thể mượn.', 16, 1);25 RETURN;26 END2728 -- Tạo phiếu mượn29 INSERT INTO PhieuMuon (MaDocGia, MaSach, NgayMuon, NgayTraDuKien, TrangThai)30 VALUES (@MaDocGia, @MaSach, GETDATE(), @NgayTraDuKien, N'Đang mượn');3132 -- Giảm số lượng tồn33 UPDATE Sach34 SET SoLuongTon = SoLuongTon - 135 WHERE MaSach = @MaSach;3637 COMMIT TRANSACTION;38 PRINT N'Mượn sách thành công!';39 END TRY40 BEGIN CATCH41 IF @@TRANCOUNT > 042 ROLLBACK TRANSACTION;43 THROW;44 END CATCH45END;📊 Đánh giá kết quả
Phần trắc nghiệm (18 câu)
| Số câu đúng | Đánh giá |
|---|---|
| 16-18 | 🌟 Xuất sắc! Bạn nắm vững kiến thức |
| 13-15 | 👍 Tốt! Cần ôn lại một số chủ đề |
| 10-12 | 📚 Cần học thêm, xem lại các bài |
| dưới 10 | 🔄 Nên học lại từ đầu |
Phần bài tập thực hành (3 bài)
| Tiêu chí | Điểm tối đa | Mô tả |
|---|---|---|
| Bài 1: Thiết kế ERD | 10 | Xác định đúng entity/attribute (3đ), relationship và cardinality (3đ), SQL tạo bảng với đầy đủ constraints (4đ) |
| Bài 2: Chuẩn hóa | 10 | Nhận diện đúng vi phạm NF (3đ), tách bảng đúng 3NF (4đ), SQL tạo bảng với PK/FK chính xác (3đ) |
| Bài 3: Stored Procedure | 10 | Logic kiểm tra hợp lệ (3đ), sử dụng Transaction đúng (3đ), xử lý lỗi với TRY-CATCH (2đ), code rõ ràng và chạy được (2đ) |
Tổng kết
| Thành phần | Tỷ trọng |
|---|---|
| Trắc nghiệm (18 câu) | 60% |
| Bài tập thực hành (3 bài) | 40% |
🎓 Hoàn thành khóa học!
Tóm tắt kiến thức đã kiểm tra
- ERD và Thiết kế CSDL: Entity, Attribute, Relationship, Cardinality
- Chuẩn hóa và Khóa: 1NF, 2NF, 3NF, BCNF, Primary/Foreign/Composite/Candidate Key
- Index và Hiệu năng: B-tree, Hash, Clustered, Non-clustered Index
- Stored Procedures và Views: Function vs Procedure, View vs Materialized View, Trigger
- Transaction và Bảo mật: ACID, Concurrency Control, Dirty Read, Roles và Privileges
- Data Warehouse và Nâng cao: Star/Snowflake Schema, Constraints, Query Optimization
🎉 Tuyệt vời! Bạn đã hoàn thành Quiz tổng hợp khóa học Database Design & Administration!
Tiếp theo: Xem lại các câu trả lời sai, đọc kỹ phần giải thích, và thực hành viết SQL trên môi trường thực tế!
Bạn đã hoàn thành khóa học Database Design & Administration!
Kiến thức thiết kế CSDL này sẽ là nền tảng quan trọng cho:
- 🗄️ Database Administration
- 📊 Data Analysis
- 🏗️ System Architecture
- 🔧 Backend Development
Next steps:
- Thực hành viết SQL trên SQL Server, PostgreSQL, MySQL
- Áp dụng kiến thức vào các dự án thực tế
- Làm mini project của khóa học
