Bối cảnh và vấn đề nghiên cứu
Đề tài "Xây dựng website chia sẻ kiến thức" được thực hiện bởi nhóm sinh viên Nguyễn Đình Phú và Võ Anh Huy, dưới sự hướng dẫn của ThS. Trần Công Tú tại Khoa Đào tạo Chất lượng cao, ngành Công nghệ thông tin (chuyên ngành Công nghệ phần mềm), Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh vào tháng 12 năm 2022.
Bối cảnh thực tiễn của nghiên cứu xuất phát từ sự phát triển mạnh mẽ của công nghệ thông tin và việc ứng dụng sâu rộng các giải pháp kỹ thuật vào lĩnh vực giáo dục. Nhu cầu tìm kiếm, học tập và trau dồi tri thức của con người ngày càng gia tăng ở mọi lúc, mọi nơi, đặc biệt trong bối cảnh đại dịch Covid-19 tạo ra nhiều cản trở đối với các phương thức học tập và trao đổi trực tiếp. Bên cạnh đó, nhịp sống hiện đại phát sinh nhiều khoảng thời gian chờ đợi nhàn rỗi (chẳng hạn như khi ngồi trên phương tiện công cộng như xe buýt, hoặc xếp hàng khám chữa bệnh). Nhóm nghiên cứu nhận thấy việc tiếp cận các bài viết ngắn gọn, súc tích trong những khoảng thời gian này là một giải pháp hữu ích nhằm tránh lãng phí thời gian và tăng cường tri thức. Mặc dù các nền tảng chia sẻ kiến thức trong nước và quốc tế đã xuất hiện nhiều, các hệ thống hiện hữu vẫn bộc lộ hạn chế về tính năng, mức độ tương tác hoặc giao diện chưa thật sự tối ưu cho trải nghiệm người dùng.
Mục tiêu chung của đề tài là xây dựng một trang web hoàn chỉnh hỗ trợ trao đổi, trau dồi kiến thức với giao diện thân thiện, vận hành linh hoạt và quản lý đơn giản dựa trên công nghệ Java - Spring Boot và ReactJS.
Căn cứ theo đề cương khóa luận, nhiệm vụ nghiên cứu được phân định thành 2 nhóm nội dung chính:
- Nghiên cứu cơ sở lý thuyết và công nghệ nền tảng:
- Tìm hiểu kiến trúc RESTful API.
- Tìm hiểu framework Spring Boot.
- Tìm hiểu công nghệ Spring Data JPA.
- Tìm hiểu thư viện giao diện ReactJS.
- Tìm hiểu nền tảng ảo hóa và đóng gói Docker.
- Thực hành xây dựng hệ thống chia sẻ bài viết kiến thức, phân quyền theo 4 nhóm tác nhân:
- Khách vãng lai: Xem danh sách, nội dung chi tiết bài viết, bình luận, điểm đánh giá và đăng ký tài khoản.
- Người dùng cơ bản: Thực hiện các tương tác đọc bài, viết bài mới, bình luận, chấm điểm đánh giá bài viết, gửi báo cáo vi phạm, chỉnh sửa hoặc xóa bài viết do chính mình sở hữu.
- Người kiểm duyệt: Kế thừa toàn bộ quyền của người dùng cơ bản, bổ sung quyền tiếp nhận danh sách báo cáo vi phạm và thực thi quyết định xóa bài viết vi phạm của người dùng khác.
- Quản trị viên: Nắm giữ quyền hạn cao nhất trong hệ thống; thực hiện toàn bộ chức năng của người kiểm duyệt, có quyền chỉnh sửa/xóa mọi bài viết, đồng thời quản lý danh sách tài khoản người kiểm duyệt (tạo mới, thay đổi mật khẩu, kích hoạt hoặc vô hiệu hóa tài khoản).
Đối tượng nghiên cứu của khóa luận là quy trình phân tích, thiết kế, triển khai và kiểm thử phần mềm ứng dụng web chia sẻ kiến thức. Phạm vi nghiên cứu về mặt thời gian kéo dài từ ngày 21/08/2022 đến ngày 19/12/2022; phạm vi không gian và triển khai thử nghiệm thực hiện tại môi trường máy chủ cục bộ và hệ thống quản trị của Trường Đại học Sư phạm Kỹ thuật TP.HCM.
Cơ sở lý thuyết và phương pháp
Để xây dựng hệ thống, nhóm tác giả đã áp dụng phương pháp nghiên cứu kỹ thuật phần mềm kết hợp khảo sát thực tế các nền tảng tương tự nhằm rút ra yêu cầu chức năng và tiêu chí thiết kế.
Khảo sát hiện trạng và phân tích ứng dụng liên quan
Nhóm tác giả đã tiến hành khảo sát và đánh giá 3 hệ thống thực tế đang hoạt động trên thị trường:
- Quantrimang.com: Hệ thống có ưu điểm là bố cục đơn giản, giao diện thân thiện, nội dung đa dạng và có hỗ trợ đánh giá bài viết. Tuy nhiên, nhược điểm lớn là mật độ quảng cáo dày đặc, khả năng tương tác của người dùng còn hạn chế và quy trình đăng tải bài viết phức tạp.
- Viblo.asia: Nền tảng sở hữu giao diện hiện đại, bố cục đơn giản, cung cấp đầy đủ chức năng cơ bản cho việc chia sẻ kiến thức, cho phép người dùng đăng bài, bình luận và đánh giá. Hạn chế ghi nhận là giao diện trang chủ ở mục bài viết mới nhất chưa cân đối và còn thiếu phân mục bài viết rõ ràng.
- Hệ thống Podcasts: Cung cấp nội dung kiến thức đa dạng qua định dạng âm thanh với giao diện dễ sử dụng. Nhược điểm là chỉ hỗ trợ âm thanh, thiếu tính năng tương tác hai chiều và chỉ có chủ kênh mới được quyền đăng tải nội dung.
| Hệ thống khảo sát |
Ưu điểm ghi nhận |
Nhược điểm ghi nhận |
| Quantrimang.com |
Giao diện thân thiện, nội dung phong phú, có đánh giá bài viết. |
Nhiều quảng cáo, tương tác kém, thao tác đăng bài phức tạp. |
| Viblo.asia |
Bố cục hiện đại, đầy đủ tính năng tạo bài, bình luận, đánh giá. |
Trang chủ chưa cân đối, thiếu phân loại danh mục bài viết. |
| Hệ thống Podcasts |
Đa dạng nội dung, hỗ trợ định dạng âm thanh tiện lợi. |
Không hỗ trợ tương tác, chỉ truyền thông tải 1 chiều từ chủ kênh. |
Từ kết quả khảo sát, nhóm nghiên cứu xác định các tiêu chí cần đạt: xây dựng nền tảng tập trung vào chức năng cốt lõi, loại bỏ nội dung thừa hoặc gây phiền toái, tổ chức bài viết theo danh mục khoa học, hỗ trợ tương tác đa chiều (bình luận, vote điểm, báo cáo) và tối ưu hóa thao tác đăng bài.
Khung công nghệ và nền tảng lý thuyết
Hệ thống được xây dựng trên mô hình Client - Server tách biệt giữa tầng giao diện và tầng logic dịch vụ:
- Java và Spring Boot: Java là ngôn ngữ lập trình hướng đối tượng độc lập nền tảng nhờ máy ảo JVM, có tính an toàn cao và quản lý bộ nhớ tốt. Spring Boot là module mở rộng của Spring Framework, cung cấp khả năng tự động cấu hình (Auto-configuration), máy chủ nhúng (Embedded Server) và quản lý phụ thuộc (Opinionated Dependencies), giúp đẩy nhanh tiến độ phát triển backend theo kiến trúc RESTful API.
- Spring Data JPA: Bản hiện thực tuân theo chuẩn Object Relational Mapping (ORM) trong Java. Công nghệ này cung cấp Entity Manager runtime, cho phép thao tác dữ liệu cơ sở dữ liệu quan hệ dưới dạng các đối tượng và thực thể Java thông qua ngôn ngữ truy vấn JPQL hoặc các phương thức dựng sẵn (Method query), giảm thiểu việc viết các câu lệnh SQL thuần và JDBC thủ công.
- MySQL: Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở, hoạt động theo mô hình client-server, đảm bảo tính toàn vẹn dữ liệu, hiệu năng ổn định và độ tin cậy cao.
- ReactJS: Thư viện JavaScript phát triển bởi Meta (Facebook) dành cho việc xây dựng giao diện người dùng (View). ReactJS áp dụng cấu trúc phân rã thành các Component viết bằng cú pháp JSX, tận dụng cơ chế Virtual DOM để tối ưu hóa tốc độ kết xuất dữ liệu và đồng bộ trạng thái (State, Props).
- Docker: Nền tảng ảo hóa mức hệ điều hành, cho phép đóng gói ứng dụng cùng môi trường thực thi vào các container độc lập. Nền tảng này giúp khởi động ứng dụng nhanh chóng, đảm bảo tính nhất quán giữa môi trường phát triển và môi trường vận hành trên nhiều hệ điều hành khác nhau (Linux, macOS, Windows).
Thiết kế và triển khai hệ thống
Phân tích yêu cầu chức năng nghiệp vụ
Hệ thống mô hình hóa yêu cầu chức năng theo từng nhóm đối tượng người dùng cụ thể:
| Nhóm tác nhân |
Chức năng tra cứu |
Chức năng lưu trữ / Nghiệp vụ tác động |
| Khách vãng lai |
Xem danh sách bài viết theo danh mục, xem nội dung chi tiết bài viết, xem danh sách bình luận, xem điểm đánh giá bài viết. |
Đăng ký tài khoản người dùng mới. |
| Người dùng cơ bản |
Toàn bộ quyền tra cứu của khách vãng lai. |
Đăng nhập, đăng xuất, đăng bài viết mới, chỉnh sửa bài viết sở hữu, xóa bài viết sở hữu, bình luận (không giới hạn), đánh giá bài viết (+1 điểm khi tốt, -1 điểm khi xấu; lưu lần thay đổi cuối cùng), gửi báo cáo vi phạm bài viết. |
| Người kiểm duyệt |
Toàn bộ quyền tra cứu của người dùng cơ bản; xem danh sách các báo cáo vi phạm bài viết. |
Toàn bộ quyền lưu trữ của người dùng cơ bản; thực thi quyền xóa bài viết vi phạm của người dùng khác. |
| Quản trị viên |
Xem danh sách báo cáo vi phạm bài viết; xem danh sách tài khoản người kiểm duyệt; toàn bộ quyền tra cứu hệ thống. |
Toàn bộ quyền thao tác của người kiểm duyệt; quyền chỉnh sửa bất kỳ bài viết nào; xóa bất kỳ bài viết nào; tạo mới tài khoản người kiểm duyệt, vô hiệu hóa/tái kích hoạt tài khoản kiểm duyệt, thay đổi mật khẩu người kiểm duyệt. |
Thiết kế cơ sở dữ liệu
Cơ sở dữ liệu của hệ thống được xây dựng trên hệ quản trị MySQL, bao gồm 18 bảng dữ liệu quan hệ để phục vụ việc lưu trữ thông tin tài nguyên, tài khoản, tương tác và báo cáo:
dir_user: Lưu trữ thông tin tài khoản người dùng (username, password, họ tên, email, trạng thái tài khoản).
dir_role: Định nghĩa các nhóm quyền và vai trò trong hệ thống (User, Moderator, Admin).
dir_user_role: Bảng liên kết trung gian xác định vai trò của từng người dùng.
app_fd_files: Quản lý thông tin và đường dẫn lưu trữ các tệp tin, hình ảnh tải lên hệ thống.
app_fd_category: Danh mục phân loại các chủ đề bài viết.
app_fd_article: Lưu trữ thông tin bài viết (tiêu đề, tóm tắt, nội dung, ngày tạo, trạng thái, tác giả).
app_fd_article_tag: Định nghĩa danh sách các thẻ phân loại gắn liền với nội dung bài viết.
app_fd_article_tag_rel: Bảng quan hệ nhiều - nhiều giữa bài viết và các thẻ tag.
app_fd_articles_for_home: Bảng tối ưu phục vụ hiển thị dữ liệu bài viết rút gọn trên trang chủ.
app_fd_comment: Quản lý nội dung bình luận của người dùng gắn liền với từng bài viết.
app_fd_user_vote_state: Lưu trữ trạng thái và giá trị đánh giá bài viết (+1 hoặc -1) của từng người dùng.
app_fd_interaction: Ghi nhận dữ liệu thống kê lượt tương tác đối với bài viết.
app_fd_report_category: Quản lý danh mục các tiêu chí vi phạm (tiêu chuẩn văn hóa, nội dung không hợp lệ).
app_fd_article_report: Lưu trữ thông tin các lượt báo cáo vi phạm bài viết từ người dùng.
app_fd_article_report_category_rel: Bảng quan hệ giữa báo cáo bài viết và danh mục phân loại vi phạm.
app_fd_comment_report: Lưu trữ các lượt báo cáo vi phạm đối với bình luận.
app_fd_comment_report_category_rel: Bảng quan hệ giữa báo cáo bình luận và danh mục vi phạm.
app_fd_user_report & app_fd_user_report_category_rel: Bảng lưu trữ báo cáo vi phạm trực tiếp đối với người dùng.
Lược đồ tuần tự và tương tác nghiệp vụ
Nhóm tác giả đã xây dựng các lược đồ Sequence nhằm mô hình hóa chi tiết dòng chảy dữ liệu giữa giao diện người dùng (Client ReactJS), bộ điều khiển trung gian (Backend Spring Boot Controller/Service) và tầng dữ liệu (Database MySQL):
- Đăng ký tài khoản: Hệ thống tiếp nhận biểu mẫu, kiểm tra tính duy nhất của username trên bảng
dir_user, mã hóa mật khẩu và tạo mới thực thể.
- Đăng nhập hệ thống: Xác thực định danh tài khoản, kiểm tra trạng thái kích hoạt và trả về token/thông tin phiên làm việc.
- Đăng bài viết: Tiếp nhận dữ liệu bài viết kèm tệp ảnh tải lên, phân rã danh mục (
app_fd_category), gán thẻ bài viết và lưu vào bảng app_fd_article.
- Chỉnh sửa bài viết: Kiểm tra quyền sở hữu của người dùng hoặc đặc quyền của quản trị viên trước khi cập nhật nội dung.
- Gửi báo cáo bài viết: Tiếp nhận thông tin phản ánh sai phạm từ người dùng, đối chiếu danh mục vi phạm và lưu vết vào bảng
app_fd_article_report để phục vụ ban kiểm duyệt.
Cài đặt và thử nghiệm
Quá trình kiểm thử phần mềm được tiến hành theo phương pháp kiểm thử chức năng (Functional Testing) trên các ca sử dụng chủ chốt:
- Kiểm thử chức năng đăng nhập: Kiểm tra với các trường hợp dữ liệu hợp lệ, để trống thông tin, sai mật khẩu, tài khoản không tồn tại và tài khoản bị vô hiệu hóa.
- Kiểm thử chức năng đăng bài viết: Đánh giá quá trình gửi biểu mẫu, tính toàn vẹn của dữ liệu văn bản và việc tải tệp hình ảnh tượng trưng.
- Kiểm thử chức năng bình luận: Kiểm thử việc thêm bình luận tức thời dưới bài viết và kiểm soát dữ liệu đầu vào.
- Kiểm thử chức năng quên mật khẩu và xác thực email: Kiểm thử tính chính xác của luồng gửi mã xác minh qua hòm thư điện tử.
- Kiểm thử chức năng đổi mật khẩu: Xác thực việc kiểm tra mật khẩu cũ, định dạng mật khẩu mới và đồng bộ cơ sở dữ liệu.
Nội dung chính theo từng chương
Chương 1: Khảo sát hiện trạng và xác định yêu cầu
Chương này tập trung phân tích thực trạng các hệ thống chia sẻ tri thức trực tuyến hiện hành (Quantrimang, Viblo, Podcasts) thông qua các tiêu chí về giao diện, tính năng và khả năng tương tác. Tác giả chỉ ra nhược điểm chung của các trang này là mật độ quảng cáo nhiều, phân cấp danh mục chưa rõ ràng hoặc giới hạn quyền tạo nội dung. Từ đó, chương xác định mục tiêu xây dựng một nền tảng chuyên biệt, loại bỏ nội dung rác và hỗ trợ giao diện thân thiện.
Chương 2: Cơ sở lý thuyết
Nội dung chương 2 trình bày tổng quan và lý do lựa chọn công nghệ phục vụ dự án. Tác giả phân tích chuyên sâu về hệ sinh thái Java, framework Spring Boot, cơ chế ánh xạ ORM thông qua Spring Data JPA, hệ quản trị cơ sở dữ liệu MySQL, thư viện giao diện người dùng ReactJS và giải pháp ảo hóa ứng dụng bằng Docker. Mỗi công nghệ đều được làm rõ định nghĩa, cấu trúc vận hành, ưu điểm và nhược điểm thực tế khi triển khai.
Chương 3: Xác định và mô hình hóa yêu cầu
Chương 3 lập danh sách chi tiết các yêu cầu chức năng nghiệp vụ, phân chia rõ ràng theo 4 nhóm tác nhân: khách vãng lai, người dùng cơ bản, người kiểm duyệt và quản trị viên. Toàn bộ các yêu cầu này được mô hình hóa bằng lược đồ tổng quan Use-Case diagram và đặc tả chi tiết cho từng ca sử dụng như: đăng ký, đăng nhập, đăng xuất, xem danh sách bài viết, xem chi tiết, bình luận, đánh giá điểm, đăng bài, sửa/xóa bài viết, quản lý tài khoản kiểm duyệt và kiểm soát báo cáo vi phạm.
Chương 4: Thiết kế hệ thống
Chương 4 hiện thực hóa các yêu cầu thành mô hình kỹ thuật chi tiết:
- Thiết kế cơ sở dữ liệu quan hệ với đặc tả chi tiết cấu trúc trường, kiểu dữ liệu, khóa chính và khóa ngoại của 18 bảng dữ liệu.
- Thiết kế giao diện với các màn hình mẫu: màn hình chính, màn hình danh mục bài viết, màn hình đăng bài, màn hình chi tiết bài viết, màn hình quản lý danh sách báo cáo, màn hình quản trị tài khoản người kiểm duyệt và màn hình phân loại bài viết.
- Thiết kế lược đồ tuần tự (Sequence Diagram) thể hiện luồng giao tiếp tương tác giữa người dùng, hệ thống API và cơ sở dữ liệu cho các tác vụ quan trọng.
Chương 5: Cài đặt và thử nghiệm
Chương 5 mô tả quy trình hiện thực hóa mã nguồn và cấu hình môi trường:
- Hướng dẫn cài đặt cơ sở dữ liệu MySQL, cài đặt và cấu hình backend Spring Boot, thiết lập frontend ReactJS.
- Trình bày kết quả kiểm thử chức năng qua các bảng ca kiểm thử (test case) cụ thể gồm: kiểm thử đăng nhập, kiểm thử đăng bài viết, kiểm thử bình luận, kiểm thử quên mật khẩu, kiểm thử xác thực email và kiểm thử đổi mật khẩu.
Kết quả và đóng góp
Kết quả chính đạt được
Khóa luận đã hoàn thành việc xây dựng một website chia sẻ kiến thức trực tuyến đúng theo mục tiêu ban đầu với các kết quả cụ thể:
- Xây dựng hoàn chỉnh kiến trúc ứng dụng web tách biệt hai tầng (Front-End và Back-End) tương tác qua chuẩn RESTful API.
- Thiết lập hệ thống cơ sở dữ liệu quan hệ MySQL chuẩn hóa gồm 18 bảng nghiệp vụ, đảm bảo tính liên kết dữ liệu giữa bài viết, tài khoản, bình luận, điểm đánh giá và báo cáo vi phạm.
- Hoàn thiện giao diện người dùng bằng ReactJS với thiết kế gọn gàng, hỗ trợ hiển thị bài viết theo danh mục và lược bỏ các nội dung quảng cáo dư thừa.
- Hiện thực hóa cơ chế phân quyền bảo mật 4 cấp bậc (Khách vãng lai, Người dùng cơ bản, Người kiểm duyệt, Quản trị viên).
- Đóng gói và triển khai ứng dụng bằng Docker container, đảm bảo tính khả chuyển khi cài đặt trên các môi trường máy chủ khác nhau.
Giải pháp và nghiệp vụ đề xuất
- Cơ chế đánh giá chất lượng bài viết: Quy định mỗi người dùng đã đăng ký chỉ được quyền đánh giá một lần (+1 điểm nếu bài viết tốt, -1 điểm nếu bài viết xấu), hệ thống cập nhật kết quả theo lần thay đổi cuối cùng nhằm phản ánh trung thực chất lượng nội dung.
- Cơ chế giám sát nội dung cộng đồng: Cho phép người dùng báo cáo các bài viết vi phạm chuẩn mực văn hóa hoặc nội dung không hợp lệ; tích hợp bảng điều khiển chuyên biệt cho ban kiểm duyệt và quản trị viên xem xét, xử lý xóa bỏ bài viết vi phạm.
- Cơ chế quản lý phân quyền linh hoạt: Quản trị viên có toàn quyền kích hoạt, vô hiệu hóa hoặc đổi mật khẩu đối với tài khoản của ban kiểm duyệt.
Đóng góp của đề tài
So với các nền tảng được khảo sát ban đầu (Quantrimang, Viblo, Podcasts), đề tài mang lại một giải pháp mã nguồn mở phục vụ việc chia sẻ bài viết ngắn không chứa nội dung quảng cáo phiền toái, hỗ trợ đầy đủ tính năng tương tác hai chiều (bình luận, vote điểm bài viết), đồng thời giải quyết bài toán kiểm duyệt nội dung cộng đồng thông qua quy trình báo cáo bài viết vi phạm nhiều cấp bậc.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế được ghi nhận
Căn cứ theo nội dung báo cáo và cơ sở lý thuyết công nghệ đã phân tích:
- Framework Spring Boot có nhược điểm dung lượng tệp đóng gói phát triển lớn do tích hợp nhiều thành phần mặc định chưa dùng đến, chủ yếu phù hợp với các ứng dụng quy mô vừa và nhỏ hoặc vi dịch vụ (microservices), chưa tối ưu cho các hệ thống nguyên khối quy mô lớn.
- Thư viện Spring Data JPA đòi hỏi lập trình viên phải nắm rất rõ cơ chế ánh xạ nội tại và cấu trúc quan hệ dữ liệu để tránh phát sinh suy giảm hiệu năng truy vấn khi khối lượng bản ghi tăng cao.
- Nền tảng ReactJS đóng vai trò là thư viện hiển thị (View library), không cung cấp cấu trúc kiến trúc hoàn chỉnh kiểu MVC nên hệ thống phải tự cấu hình và kết hợp các thư viện bên ngoài để quản lý trạng thái và định tuyến.
- Cơ sở dữ liệu Docker Data Volume còn một số hạn chế nhất định trong việc quản lý lưu trữ dữ liệu bền vững lâu dài.
Hướng phát triển tiếp theo
Dựa trên phạm vi nghiên cứu và đề cương thực hiện:
- Nâng cấp và hoàn thiện thêm các tính năng tương tác nâng cao cho người dùng và các tiện ích hỗ trợ định dạng bài viết.
- Tối ưu hóa cấu trúc cơ sở dữ liệu và câu truy vấn backend nhằm nâng cao hiệu suất xử lý khi số lượng bài viết và lượng tương tác người dùng gia tăng.
- Mở rộng hệ thống thông báo tự động (notification) đến người dùng khi có tương tác mới hoặc khi bài viết được ban kiểm duyệt xử lý.
Giá trị tham khảo
Báo cáo khóa luận này là tài liệu tham khảo phù hợp cho:
- Sinh viên chuyên ngành Công nghệ thông tin, Kỹ thuật phần mềm đang chuẩn bị thực hiện đồ án tốt nghiệp hoặc đồ án môn học chuyên ngành phát triển ứng dụng web.
- Lập trình viên mới bắt đầu tiếp cận và tìm hiểu mô hình phát triển phần mềm kết hợp giữa Java Spring Boot (RESTful API), ReactJS và hệ quản trị cơ sở dữ liệu MySQL.
- Người làm đề tài nghiên cứu về các hệ thống quản lý nội dung (CMS), diễn đàn thảo luận hoặc nền tảng mạng xã hội chia sẻ bài viết.
Nội dung có giá trị tham khảo nổi bật trong tài liệu bao gồm:
- Bảng đặc tả yêu cầu nghiệp vụ và tài liệu hóa chi tiết các ca sử dụng (Use-Case specifications).
- Mô hình thiết kế chi tiết 18 bảng trong cơ sở dữ liệu quan hệ cho bài toán blog/chia sẻ kiến thức có phân quyền và kiểm duyệt.
- Trình tự thiết kế tương tác dữ liệu thông qua hệ thống các lược đồ tuần tự (Sequence Diagram).
Câu hỏi thường gặp
1. Khóa luận sử dụng công nghệ gì cho tầng Backend, Frontend và Cơ sở dữ liệu?
Hệ thống sử dụng Java kết hợp Spring Boot và Spring Data JPA để xây dựng RESTful API cho tầng Backend; thư viện ReactJS cho tầng Frontend; và hệ quản trị cơ sở dữ liệu MySQL để lưu trữ dữ liệu. Ứng dụng được hỗ trợ đóng gói và triển khai qua nền tảng Docker.
2. Hệ thống phân chia người dùng thành bao nhiêu nhóm quyền và vai trò cụ thể là gì?
Hệ thống phân chia thành 4 nhóm quyền rõ rệt: Khách vãng lai (chỉ tra cứu bài viết, xem bình luận/đánh giá và đăng ký); Người dùng cơ bản (đăng nhập, đăng bài, sửa/xóa bài viết của mình, bình luận, vote điểm, gửi báo cáo); Người kiểm duyệt (quyền người dùng cơ bản kèm quyền xem danh sách báo cáo và xóa bài viết vi phạm của người khác); Quản trị viên (quyền hạn cao nhất, sửa/xóa mọi bài viết, quản lý tài khoản ban kiểm duyệt).
3. Quy định đánh giá (vote) điểm bài viết được thiết kế theo công thức và nguyên tắc nào?
Mỗi bài viết chỉ cho phép một người dùng đã đăng nhập đánh giá một lần: đánh giá tốt được tính cộng 1 điểm (+1), đánh giá xấu tính trừ 1 điểm (-1). Người dùng có quyền thay đổi đánh giá của mình và hệ thống sẽ ghi nhận số điểm theo lần lựa chọn cuối cùng.
4. Chức năng báo cáo bài viết được lưu trữ và xử lý như thế nào?
Khi người dùng phát hiện bài viết vi phạm văn hóa hay nội dung không hợp lệ, thông tin phản ánh được ghi nhận vào bảng app_fd_article_report và phân loại theo bảng app_fd_article_report_category_rel. Dữ liệu báo cáo này sẽ hiển thị trên màn hình danh sách báo cáo để người kiểm duyệt và quản trị viên thẩm định và quyết định xóa bài viết.
5. Cơ sở dữ liệu của đồ án bao gồm bao nhiêu bảng và các bảng quản trị tài khoản gồm những bảng nào?
Cơ sở dữ liệu của hệ thống bao gồm 18 bảng. Nhóm bảng phục vụ quản trị người dùng và phân quyền gồm 3 bảng chính: dir_user (lưu trữ thông tin tài khoản người dùng), dir_role (định nghĩa danh sách các vai trò trong hệ thống) và dir_user_role (bảng liên kết gán vai trò tương ứng cho người dùng).
Kết luận
Khóa luận tốt nghiệp "Xây dựng website chia sẻ kiến thức" của sinh viên Nguyễn Đình Phú và Võ Anh Huy đã hoàn thành việc thiết kế và xây dựng một nền tảng web trao đổi kiến thức đa chức năng dựa trên nền tảng công nghệ Java Spring Boot, ReactJS và MySQL. Công trình đã chuẩn hóa quy trình phân tích nghiệp vụ, mô hình hóa các ca sử dụng phân quyền 4 cấp độ và thiết kế hệ thống cơ sở dữ liệu quan hệ với 18 bảng đáp ứng toàn diện các tương tác cộng đồng và cơ chế kiểm duyệt nội dung. Toàn bộ các thử nghiệm chức năng đã được cài đặt và vận hành thực tế, tạo cơ sở thực tiễn rõ ràng cho việc phát triển và ứng dụng các hệ thống quản lý nội dung trực tuyến.