JSP Servlet
Xây dựng hệ thống Quản Lý Ghi Chú - Khoá Học JSP/Servlet
Mô tả bài toán
Xây dựng cơ sở dữ liệu cho một ứng dụng quản lý ghi chú cá nhân.
Người dùng có thể tạo nhiều danh mục và trong mỗi danh mục có nhiều ghi chú.
Hệ thống cần quản lý:
- Danh mục ghi chú
- Ghi chú
- Thời gian tạo/cập nhật
- Trạng thái ghi chú
Yêu cầu chức năng
1. Quản lý danh mục
Mỗi danh mục gồm:
- Mã danh mục
- Tên danh mục
- Mô tả
- Ngày tạo
Chức năng:
- Thêm danh mục
- Sửa danh mục
- Xóa danh mục
- Hiển thị danh sách danh mục
2. Quản lý ghi chú
Mỗi ghi chú gồm:
- Mã ghi chú
- Tiêu đề
- Nội dung
- Ngày tạo
- Ngày cập nhật
-
Trạng thái:
- Hoạt động
- Đã lưu trữ
Mỗi ghi chú thuộc:
- 1 danh mục
Chức năng:
- Thêm ghi chú
- Sửa ghi chú
- Xóa ghi chú
- Tìm kiếm ghi chú theo tiêu đề
- Hiển thị ghi chú theo danh mục
Yêu cầu SQL
Thực hiện các công việc sau:
- Tạo database
- Tạo bảng
- Khai báo khóa chính, khóa ngoại
- Thêm dữ liệu mẫu
-
Viết truy vấn:
- Hiển thị toàn bộ ghi chú
- Hiển thị ghi chú theo danh mục
- Tìm ghi chú theo từ khóa
- Đếm số ghi chú trong từng danh mục
- Sắp xếp ghi chú mới nhất
-- Tạo database
CREATE DATABASE QuanLyGhiChu;
GO
USE QuanLyGhiChu;
GO
-- =========================
-- Bảng DanhMuc
-- =========================
CREATE TABLE DanhMuc (
MaDanhMuc INT PRIMARY KEY IDENTITY(1,1),
TenDanhMuc NVARCHAR(100) NOT NULL,
MoTa NVARCHAR(255),
NgayTao DATETIME DEFAULT GETDATE()
);
-- =========================
-- Bảng GhiChu
-- =========================
CREATE TABLE GhiChu (
MaGhiChu INT PRIMARY KEY IDENTITY(1,1),
TieuDe NVARCHAR(200) NOT NULL,
NoiDung NVARCHAR(MAX),
NgayTao DATETIME DEFAULT GETDATE(),
NgayCapNhat DATETIME DEFAULT GETDATE(),
TrangThai NVARCHAR(50) CHECK (TrangThai IN (N'Hoạt động', N'Đã lưu trữ')),
MaDanhMuc INT,
CONSTRAINT FK_GhiChu_DanhMuc
FOREIGN KEY (MaDanhMuc)
REFERENCES DanhMuc(MaDanhMuc)
);
-- =========================
-- Thêm dữ liệu mẫu
-- =========================
INSERT INTO DanhMuc (TenDanhMuc, MoTa)
VALUES
(N'Học tập', N'Ghi chú liên quan học tập'),
(N'Công việc', N'Ghi chú công việc'),
(N'Cá nhân', N'Ghi chú cá nhân');
INSERT INTO GhiChu (TieuDe, NoiDung, TrangThai, MaDanhMuc)
VALUES
(
N'Học SQL',
N'Học CREATE TABLE và SELECT',
N'Hoạt động',
1
),
(
N'Lịch họp',
N'Họp team lúc 9h sáng',
N'Hoạt động',
2
),
(
N'Mua sắm',
N'Mua sách và bút',
N'Đã lưu trữ',
3
);
-- =========================
-- Truy vấn
-- =========================
-- 1. Hiển thị toàn bộ ghi chú
SELECT * FROM GhiChu;
-- 2. Hiển thị ghi chú theo danh mục
SELECT
gc.MaGhiChu,
gc.TieuDe,
dm.TenDanhMuc
FROM GhiChu gc
JOIN DanhMuc dm
ON gc.MaDanhMuc = dm.MaDanhMuc;
-- 3. Tìm ghi chú theo từ khóa
SELECT *
FROM GhiChu
WHERE TieuDe LIKE N'%SQL%';
-- 4. Đếm số ghi chú trong từng danh mục
SELECT
dm.TenDanhMuc,
COUNT(gc.MaGhiChu) AS SoLuongGhiChu
FROM DanhMuc dm
LEFT JOIN GhiChu gc
ON dm.MaDanhMuc = gc.MaDanhMuc
GROUP BY dm.TenDanhMuc;
-- 5. Sắp xếp ghi chú mới nhất
SELECT *
FROM GhiChu
ORDER BY NgayTao DESC;