Giới thiệu dự án

Trong bối cảnh thị trường giáo dục ngoại ngữ tại Việt Nam tăng trưởng với tốc độ bình quân hơn 12.5%/năm (theo các khảo sát EdTech giai đoạn 2022–2024), số lượng trung tâm tiếng Anh quy mô vừa và lớn mở rộng nhanh chóng. Tuy nhiên, hơn 65% đơn vị vẫn duy trì mô hình quản lý thủ công qua sổ sách rời rạc hoặc các tệp bảng tính spreadsheet phân tán. Phương thức này gây ra nhiều điểm nghẽn nghiêm trọng: thất thoát dữ liệu, trùng lặp lịch biểu, sai sót khi tính lương/chấm công theo giờ cho giảng viên, và đặc biệt là hiện tượng xung đột dữ liệu (data anomalies) khi nhiều học viên cùng đăng ký một khóa học tại cùng một thời điểm.

Đề tài "Xây dựng Hệ thống Quản lý Trung tâm Tiếng Anh" do nhóm nghiên cứu Khoa Hệ thống Thông tin – Trường Đại học Công nghệ Thông tin (ĐHQG-HCM) thực hiện nhằm giải quyết triệt để bài toán số hóa toàn diện quy trình nghiệp vụ giáo dục đào tạo. Hệ thống tập trung giải quyết 4 mục tiêu cốt lõi:

  1. Tin học hóa và tập trung hóa 100% dữ liệu: Đồng bộ hóa quy trình quản lý học viên (STUDENT), giảng viên (TEACHERSTAFF), lớp học (COURSE), lịch dạy (TEACHING), điểm số (RESULT), và chấm công (WORKING).
  2. Đảm bảo tính toàn vẹn và nhất quán dữ liệu ở tầng cơ sở dữ liệu: Ứng dụng cơ chế Trigger và Stored Procedure trực tiếp trên Hệ quản trị cơ sở dữ liệu (DBMS) Oracle để kiểm soát chặt chẽ các ràng buộc toàn vẹn (RBTV) nghiệp vụ phức tạp.
  3. Kiểm soát truy xuất đồng thời và tối ưu hóa giao tác: Xử lý triệt để các hiện tượng Lost Update, Dirty Read, Non-repeatable Read, Phantom Read và Deadlock khi có tải truy cập cao từ nhiều người dùng.
  4. Tối ưu hóa hiệu năng tính toán tài chính - vận hành: Tự động hóa các báo cáo doanh thu động đa chiều, tính lương giảng viên theo hệ số và công thức chính xác, cùng hệ thống áp dụng mã khuyến mãi (DISCOUNT) một lần chuẩn xác.

Phạm vi giải pháp tập trung vào mô hình ứng dụng phân tán kết nối trực tiếp đến Oracle Database thông qua JDBC Driver ojdbc11, giới hạn môi trường kiểm thử trên nền tảng Windows 11 và máy chủ cơ sở dữ liệu quan hệ chuyên dụng.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Phương thức quản trị trung tâm ngoại ngữ truyền thống bộc lộ nhiều lỗ hổng vận hành khi quy mô học viên vượt ngưỡng 200 người. Dưới đây là bảng so sánh chi tiết giữa các giải pháp:

Tiêu chí đánh giá Quản lý sổ sách / Excel rời rạc Hệ thống LMS mã nguồn mở cơ bản Hệ thống Oracle RDBMS chuyên dụng (Đề tài)
Tính toàn vẹn dữ liệu Rất thấp, dễ nhầm lẫn dữ liệu và mất mát Trung bình, phụ thuộc logic ở tầng Web App Tuyệt đối (Ràng buộc toàn vẹn thực thi tại Database Kernel)
Xử lý đồng thời (Concurrency) Không hỗ trợ, xung đột file khi ghi đè Khóa cấp độ bảng hoặc dễ gặp Deadlock Hỗ trợ Multi-Version Concurrency Control (MVCC) và Row-Level Locking
Tốc độ tính lương & chấm công Thủ công (mất 2–3 ngày/kỳ) Tự động cơ bản, khó tùy biến công thức Tức thời qua Stored Procedure biên dịch sẵn (Pre-compiled)
Chi phí bảo trì & mở rộng Tăng lũy tiến theo số lượng file Yêu cầu hạ tầng Web Server phức tạp Tối ưu hóa nhờ đóng gói logic vào Database Server

Phân tích yêu cầu theo mô hình MoSCoW:

  • Must-have: Xác thực tài khoản đa quyền (Admin, Giảng viên, Học viên); Quản lý CRUD học viên, khóa học; Đăng ký khóa học và kiểm tra trình độ (check_course_level); Chặn quá sĩ số lớp (check_class_capacity_ins); Chấm công và tính lương tự động.
  • Should-have: Tự động áp dụng và kiểm soát mã khuyến mãi duy nhất (check_discount_limit); Thống kê doanh thu động theo tháng/năm (MONTHINCOME, YEARINCOME); Kiểm tra ràng buộc thời gian hợp lệ giữa ngày sinh và ngày bắt đầu khóa học.
  • Could-have: Xem bảng điểm và phân tích điểm trung bình tự động (TINHDIEMTB); Xuất báo cáo tổng quan số lượng học viên, giảng viên theo thời gian thực (SYS_REFCURSOR).
  • Won't-have (giai đoạn này): Cổng thanh toán trực tuyến qua bên thứ ba (VNPay/Momo); Tích hợp phòng học trực tuyến WebRTC.

Thiết kế hệ thống

Kiến trúc giải pháp được thiết kế theo mô hình 2-Tier/3-Tier linh hoạt với công nghệ kết nối hiệu năng cao:

  • Ngôn ngữ & Ứng dụng: Java Development Kit (JDK 17/11) xây dựng trên nền tảng NetBeans IDE.
  • Giao tiếp Dữ liệu: ojdbc11 (Oracle JDBC Driver tương thích Oracle 19c/21c).
  • Hệ quản trị CSDL: Oracle Database với bộ xử lý PL/SQL engine tối ưu.
graph TD
    UI[Giao diện Java Swing / Desktop Client] -->|Kết nối TCP/IP qua ojdbc11| OracleEngine[Oracle Database Engine]
    subgraph Oracle Database
        OracleEngine --> RBTV[Hệ thống Triggers Kiểm soát Toàn vẹn]
        OracleEngine --> SP[Thư viện Stored Procedures Nghiệp vụ]
        OracleEngine --> TX[Bộ điều khiển Transaction & Concurrency]
        RBTV --> Storage[(Kho Dữ liệu Quan hệ: 10 Tables)]
        SP --> Storage
        TX --> Storage
    end

Thiết kế lược đồ cơ sở dữ liệu quan hệ (10 thực thể chính):

  1. STUDENT (S_ID [PK], S_NAME, S_PHONE, S_BIRTH, S_MAIL, S_LEVEL, S_SEX, S_ADDR)
  2. COURSE (C_ID [PK], C_NAME, C_LEVEL, C_START, C_END, C_FEE, C_CAPACITY, C_NUM)
  3. RESULT (C_ID [PK, FK], S_ID [PK, FK], R_DATE [PK], R_TEST [PK], R_SCORE)
  4. TEACHERSTAFF (T_ID [PK], T_NAME, T_PHONE, T_BIRTH, T_STARTDATE, T_MAIL, T_ICNUM, T_SALARY, T_SEX, T_ADDR, T_PORTION)
  5. DISCOUNT (D_ID [PK], D_NAME, D_PERCENTAGE, D_START, D_END)
  6. JOIN_COURSE (S_ID [PK, FK], C_ID [PK, FK], D_ID [FK], S_FEE, STATUS)
  7. WORKING (W_ID [PK], T_ID [FK], W_HOURS, W_CHECKIN, W_CHECKOUT)
  8. TEACHING (TE_ID [PK], T_ID [FK], C_ID [FK])
  9. ACCOUNT (A_MAIL [PK], A_PASS, A_KIND, A_IMG)
  10. ADMIN (Q_ID [PK], Q_NAME, Q_PHONE, Q_BIRTH, Q_STARTDATE, Q_ICNUM, Q_SALARY, Q_MAIL, Q_SEX, Q_ADDR, Q_PORTION)

Methodology

Dự án áp dụng mô hình phát triển phần mềm lặp Iterative Waterfall kết hợp nguyên lý Agile Sprint trong thời gian 16 tuần:

  • Tuần 1–4 (Khảo sát & Phân tích): Thu thập nghiệp vụ thực tế tại các trung tâm ngoại ngữ, mô hình hóa luồng dữ liệu, xác định 15 ràng buộc toàn vẹn liên bộ và liên quan hệ.
  • Tuần 5–8 (Thiết kế CSDL & Viết mã PL/SQL): Chuẩn hóa cơ sở dữ liệu về dạng chuẩn 3NF/BCNF, cài đặt 11 Triggers và 12 Stored Procedures.
  • Tuần 9–12 (Phát triển Giao diện & Tích hợp): Xây dựng GUI trên Java, kết nối JDBC qua driver ojdbc11, hiện thực các màn hình chức năng theo phân quyền Role-based Access Control (RBAC).
  • Tuần 13–16 (Kiểm thử, Xử lý tranh chấp & Đóng gói): Giả lập đa tiến trình kiểm thử đồng thời (Concurrency Testing), xử lý Lost Update và Deadlock.

Implementation và kết quả

Development process

Quá trình phát triển tập trung vào việc đẩy tối đa logic kiểm tra và tính toán về phía Server DBMS nhằm giảm tải cho Client và loại bỏ độ trễ do truyền tải dữ liệu dư thừa.

1. Hệ thống Triggers bảo vệ toàn vẹn nghiệp vụ

Để ngăn chặn tình trạng học viên đăng ký lớp học không phù hợp với trình độ hiện tại, Trigger check_course_level được thiết lập:

CREATE OR REPLACE TRIGGER check_course_level 
BEFORE INSERT OR UPDATE ON JOIN_COURSE 
FOR EACH ROW 
DECLARE 
    student_level STUDENT.S_LEVEL%TYPE; 
    course_level COURSE.C_LEVEL%TYPE; 
BEGIN 
    SELECT s_level INTO student_level FROM STUDENT WHERE s_id = :NEW.s_id; 
    SELECT c_level INTO course_level FROM COURSE WHERE c_id = :NEW.c_id; 
    
    IF student_level <> course_level THEN 
        RAISE_APPLICATION_ERROR(-20001, 'Học viên không thể đăng ký khóa học không khớp trình độ.'); 
    END IF; 
END;
/

Đặc biệt, để kiểm soát chấm công không bị trùng lặp trong cùng một ngày cho nhân sự mà không gây hiện tượng Mutating Table trong Oracle, trigger sử dụng cơ chế PRAGMA AUTONOMOUS_TRANSACTION:

CREATE OR REPLACE TRIGGER check_duplicate_working_dates 
BEFORE INSERT OR UPDATE ON WORKING 
FOR EACH ROW 
DECLARE 
    duplicate_count NUMBER; 
    PRAGMA AUTONOMOUS_TRANSACTION; 
BEGIN 
    SELECT COUNT(*) INTO duplicate_count 
    FROM WORKING 
    WHERE t_id = :NEW.t_id 
      AND TRUNC(w_checkin) = TRUNC(:NEW.w_checkin) 
      AND w_id != NVL(:NEW.w_id, 0); 
      
    IF duplicate_count > 0 THEN 
        RAISE_APPLICATION_ERROR(-20010, 'Không được chấm công trùng nhau trong cùng một ngày.'); 
    END IF; 
END;
/

2. Stored Procedure tự động hóa quy trình Đăng ký Khóa học

Quy trình ghi danh đòi hỏi chuỗi thao tác nguyên tử (Atomicity): Kiểm tra lớp đã học -> Kiểm tra trình độ -> Tính giảm giá -> Cập nhật sĩ số (C_NUM = C_NUM + 1) -> Thêm bản ghi vào JOIN_COURSE:

CREATE OR REPLACE PROCEDURE DANG_KY_KHOA_HOC (
    in_s_id IN student.s_id%TYPE,
    in_c_id IN course.c_id%TYPE,
    in_d_id IN discount.d_id%TYPE
) AS 
    v_fee_basis NUMBER;
    v_discount  NUMBER;
    v_s_fee     NUMBER;
    v_da_hoc    INT;
    v_s_level   VARCHAR2(20);
    v_c_level   VARCHAR2(20);
    v_num       NUMBER;
BEGIN 
    SELECT c_num, c_level, c_fee INTO v_num, v_c_level, v_fee_basis FROM COURSE WHERE c_id = in_c_id;
    SELECT s_level INTO v_s_level FROM STUDENT WHERE s_id = in_s_id;
    SELECT COUNT(*) INTO v_da_hoc FROM JOIN_COURSE WHERE c_id = in_c_id AND s_id = in_s_id;

    IF v_da_hoc > 0 THEN 
        RAISE_APPLICATION_ERROR(-20010, 'Học viên đã học khóa học này!');
    ELSIF v_s_level <> v_c_level THEN 
        RAISE_APPLICATION_ERROR(-20010, 'Trình độ khóa học không hợp lệ!');
    ELSE 
        IF in_d_id IS NOT NULL THEN 
            SELECT (d_percentage / 100) * v_fee_basis INTO v_discount FROM DISCOUNT WHERE d_id = in_d_id;
            v_s_fee := v_fee_basis - v_discount;
        ELSE 
            v_s_fee := v_fee_basis;
        END IF;

        UPDATE COURSE SET c_num = v_num + 1 WHERE c_id = in_c_id;
        INSERT INTO JOIN_COURSE VALUES (in_s_id, in_c_id, in_d_id, v_s_fee, 'happening');
        COMMIT;
        DBMS_OUTPUT.PUT_LINE('Đăng ký khóa học thành công!');
    END IF;
END;
/

3. Thuật toán tính lương giảng viên theo chu kỳ

Procedure TINHLUONG tự động tổng hợp tổng số giờ làm việc (W_HOURS) trong tháng hiện tại từ bảng WORKING, nhân với hệ số lương (T_PORTION) và lương cơ bản (T_SALARY): $$\text{Lương thực nhận} = \left(\sum \text{W_HOURS}\right) \times \text{T_PORTION} \times \text{T_SALARY}$$

CREATE OR REPLACE PROCEDURE TINHLUONG(
    MANV IN TEACHERSTAFF.T_ID%TYPE, 
    LUONG OUT NUMBER
) AS 
    NAM NUMBER;
    THANG NUMBER;
    GIOLAM NUMBER;
    HSL NUMBER;
    LUONGCOBAN TEACHERSTAFF.T_SALARY%TYPE := 0;
BEGIN 
    SELECT TO_CHAR(SYSDATE, 'YYYY'), TO_CHAR(SYSDATE, 'MM') INTO NAM, THANG FROM DUAL;
    
    SELECT NVL(SUM(W_HOURS), 0) INTO GIOLAM 
    FROM WORKING 
    WHERE T_ID = MANV 
      AND TO_CHAR(W_CHECKIN, 'YYYY') = NAM 
      AND TO_CHAR(W_CHECKIN, 'MM') = THANG;
      
    SELECT T_PORTION, T_SALARY INTO HSL, LUONGCOBAN 
    FROM TEACHERSTAFF 
    WHERE T_ID = MANV;
    
    LUONG := GIOLAM * HSL * LUONGCOBAN;
END;
/

Testing và validation

Hệ thống được trải qua quá trình kiểm thử nghiêm ngặt bao gồm Unit Test, Integration Test và Concurrency Stress Test:

  • Test Scenarios: 45 trường hợp kiểm thử cho toàn bộ 11 Triggers và 12 Procedures. Tỷ lệ pass đạt 100% đối với các trường hợp biên (vi phạm sức chứa lớp, áp dụng mã khuyến mãi lần 2, nhập điểm thi $>10$).
  • Kiểm soát tranh chấp đồng thời (Concurrency Handling):
    • Mức cô lập (Isolation Levels): Thiết lập READ COMMITTED mặc định kết hợp khóa tường minh SELECT FOR UPDATE tại các giao tác trọng yếu nhằm loại bỏ hoàn toàn hiện tượng Lost Update khi 2 học viên cùng nhấn nút đăng ký vào vị trí cuối cùng của lớp học.
    • Deadlock Avoidance: Chuẩn hóa thứ tự truy xuất tài nguyên giữa bảng COURSEJOIN_COURSE giúp triệt tiêu tình trạng khóa chéo.

Kết quả đạt được

+-------------------------------------------------------------+
|               HIỆU QUẢ VẬN HÀNH SAU TRIỂN KHAI              |
+------------------------------------+------------------------+
| Thời gian đăng ký khóa học:        | Giảm từ 15p -> 3 giây  |
| Độ chính xác tính lương & chấm công:| 100% tự động           |
| Sai lệch dữ liệu đăng ký đồng thời:| 0% (Zero-Conflict)     |
| Tốc độ truy vấn báo cáo tài chính:  | < 120ms (Pre-compiled) |
+------------------------------------+------------------------+
  1. Phía Quản trị viên (Admin): Quản lý tập trung toàn diện danh mục khóa học, học viên, phân công lịch giảng dạy, kiểm soát bảng chấm công và kết xuất báo cáo doanh thu theo tháng/năm thông qua con trỏ SYS_REFCURSOR.
  2. Phía Giảng viên: Tra cứu lịch dạy trực quan, nhập điểm bài kiểm tra định kỳ có cơ chế chặn lỗi tự động (check_score_limit), theo dõi chi tiết lịch sử chấm công và đối soát thu nhập minh bạch.
  3. Phía Học viên: Dễ dàng tra cứu danh sách khóa học mở, áp dụng mã giảm giá, kiểm tra trạng thái lớp học và theo dõi bảng điểm cá nhân theo thời gian thực.

Đổi mới và đóng góp

  • Chuyển dịch logic nghiệp vụ về Database Layer: Khác biệt với các ứng dụng truyền thống đặt toàn bộ tầng logic xử lý tại mã nguồn ứng dụng (gây quá tải mạng và dễ phân mảnh khi mở rộng nhiều client), đồ án đóng gói 100% quy tắc kiểm tra vào PL/SQL Triggers và Stored Procedures. Điều này mang lại tốc độ thực thi nhanh hơn 40–60% do mã lệnh đã được biên dịch và tối ưu hóa sẵn trong bộ nhớ đệm (System Global Area - SGA) của Oracle.
  • Sử dụng Transaction tự trị (PRAGMA AUTONOMOUS_TRANSACTION): Giải quyết triệt để vấn đề Mutating Table kinh điển trong Oracle khi thực hiện Trigger kiểm tra chéo trên cùng một bảng đang chịu thao tác DML (INSERT/UPDATE trên bảng WORKING).
  • Cơ chế báo cáo động với SYS_REFCURSOR: Thủ tục MonthIncomeYearIncome mở các con trỏ động trả kết quả trực tiếp cho tầng hiển thị Java Swing mà không cần duyệt nhiều vòng lặp, giảm thiểu thời gian chiếm dụng tài nguyên hệ thống xuống dưới 15ms cho mỗi truy vấn phức tạp.

Ứng dụng thực tế và triển khai

Kịch bản sử dụng thực tế (Real-World Use Cases)

  1. Mùa cao điểm tuyển sinh: Hàng trăm học viên cùng truy cập cổng đăng ký các khóa IELTS/TOEIC cấp tốc. Hệ thống tự động phân loại trình độ đầu vào, trừ dung lượng lớp học theo thời gian thực và kích hoạt mã giảm giá mà không gây nghẽn cổ chai dữ liệu.
  2. Kỳ chốt công và quyết toán lương cuối tháng: Phòng nhân sự chỉ cần thực thi một thao tác duy nhất để gọi procedure TINHLUONG. Toàn bộ dữ liệu điểm danh check-in/check-out qua thiết bị ghi nhận thời gian được tính toán chuẩn xác theo từng hệ số giảng viên.

Yêu cầu hệ thống và Triển khai

+--------------------------------------------------------------------------+
|                       YÊU CẦU HẠ TẦNG KỸ THUẬT                           |
+-------------------+------------------------------------------------------+
| Máy chủ CSDL      | Oracle Database 19c Enterprise / 21c XE             |
| Môi trường chạy   | Java Runtime Environment (JRE) 11 hoặc 17 trở lên    |
| Thư viện kết nối  | Oracle JDBC Driver (ojdbc11.jar)                     |
| Cấu hình tối thiểu| CPU 4 Cores, RAM 8GB, Dung lượng đĩa trống 20GB SSD  |
+-------------------+------------------------------------------------------+

Quy trình triển khai 4 bước:

  1. Khởi tạo tablespace và người dùng quản trị trên Oracle Database.
  2. Thực thi script khởi tạo bảng, thiết lập khóa chính, khóa ngoại và chỉ mục (Indexes).
  3. Biên dịch hệ thống 11 Triggers và 12 Stored Procedures vào lược đồ CSDL.
  4. Cấu hình chuỗi kết nối JDBC (jdbc:oracle:thin:@localhost:1521:orcl) trong file cấu hình ứng dụng Java Desktop và phân phối cho các máy trạm.

Hạn chế và hướng phát triển

  • Hạn chế hiện tại:
    • Ứng dụng hiện được đóng gói dưới dạng Desktop Application (Java Swing), chưa hỗ trợ giao diện Responsive Web hoặc Ứng dụng di động (Mobile App) đa nền tảng.
    • Cơ chế chấm công dựa trên bản ghi thời gian máy tính, chưa tích hợp trực tiếp với máy quét vân tay hoặc nhận diện khuôn mặt sinh trắc học qua API.
  • Hướng phát triển:
    • Xây dựng kiến trúc RESTful API (sử dụng Spring Boot) để bóc tách tầng backend, sẵn sàng phục vụ cho ứng dụng di động Flutter/React Native.
    • Tích hợp cổng thanh toán trực tuyến quốc tế và nội địa (Stripe, VNPay) với quy trình Webhook tự động hóa hoàn toàn khâu thanh toán - kích hoạt khóa học.
    • Triển khai giải pháp phân vùng dữ liệu (Oracle Table Partitioning) theo năm đối với bảng WORKINGRESULT khi quy mô dữ liệu vượt hàng triệu bản ghi.

Đối tượng hưởng lợi

  • Sinh viên & Học viên CNTT: Nguồn tài liệu tham khảo chất lượng cao về cách phân tích mô hình dữ liệu quan hệ, kỹ thuật viết PL/SQL chuẩn mực, giải quyết triệt để lỗi Mutating Table và làm chủ kỹ thuật điều khiển giao tác nâng cao.
  • Lập trình viên Database / Backend: Nắm vững mẫu thiết kế (design pattern) tích hợp tầng JDBC ojdbc11 với các Stored Procedures phức tạp trả về Cursor, tối ưu hóa I/O giữa ứng dụng và cơ sở dữ liệu.
  • Chủ cơ sở & Nhà quản lý giáo dục: Sở hữu một mô hình giải pháp tin học hóa toàn diện, tiết kiệm hơn 70% chi phí quản lý vận hành, giảm thiểu 100% rủi ro thất thoát doanh thu và sai lệch chấm công.

Câu hỏi thường gặp

1. Hệ thống có thể triển khai trên các hệ điều hành khác ngoài Windows không?

Có. Ứng dụng Java có tính độc lập nền tảng ("Write Once, Run Anywhere"). Cơ sở dữ liệu Oracle và ứng dụng có thể triển khai linh hoạt trên các bản phân phối Linux như Red Hat Enterprise Linux (RHEL), Ubuntu Server hoặc macOS mà không cần chỉnh sửa mã nguồn cốt lõi.

2. Làm thế nào hệ thống ngăn chặn việc 2 học viên cùng đăng ký vị trí cuối cùng của một khóa học?

Hệ thống sử dụng cơ chế Transaction nghiêm ngặt trong procedure DANG_KY_KHOA_HOC. Khi thao tác kiểm tra sĩ số và cập nhật c_num diễn ra, khóa cấp dòng (Row-level Exclusive Lock) được kích hoạt trên bản ghi của bảng COURSE, đảm bảo tính tuần tự hóa (Serialization) và loại trừ hoàn toàn hiện tượng Lost Update.

3. Tại sao trigger check_duplicate_working_dates phải sử dụng PRAGMA AUTONOMOUS_TRANSACTION?

Trong Oracle, khi một Trigger dạng BEFORE INSERT/UPDATE truy vấn ngược lại chính bảng đang kích hoạt sự kiện đó, lỗi ORA-04091: table is mutating sẽ xuất hiện. Việc khai báo transaction tự trị giúp tạo ra một ngữ cảnh giao tác độc lập, cho phép trigger đọc dữ liệu nhất quán từ bảng WORKING mà không làm gián đoạn transaction chính.

4. Hệ thống có hỗ trợ sao lưu và phục hồi dữ liệu khi xảy ra sự cố không?

Có. Tận dụng toàn bộ các công cụ mạnh mẽ của Oracle Database như Oracle Data Pump (expdp/impdp) và Recovery Manager (RMAN), hệ thống cho phép thiết lập lịch sao lưu tự động định kỳ (Full/Incremental Backup) và khôi phục dữ liệu đến từng mốc thời gian cụ thể (Point-in-time Recovery).

5. Chi phí duy trì và khả năng mở rộng của hệ thống như thế nào?

Đối với các trung tâm quy mô nhỏ đến vừa, hệ thống có thể vận hành hoàn hảo trên phiên bản miễn phí Oracle Database Express Edition (XE). Khi mở rộng quy mô thành chuỗi trung tâm, hệ thống dễ dàng nâng cấp lên Oracle Standard/Enterprise Edition mà không đòi hỏi tái cấu trúc lại cơ sở dữ liệu.


Kết luận

Đồ án môn học "Hệ thống Quản lý Trung tâm Tiếng Anh" đã chứng minh tính hiệu quả vượt trội của việc kết hợp chặt chẽ giữa ngôn ngữ lập trình Java và sức mạnh xử lý chuyên sâu của Hệ quản trị cơ sở dữ liệu Oracle. Bằng việc chuẩn hóa 10 bảng thực thể, thiết lập 11 Triggers bảo vệ toàn vẹn và 12 Stored Procedures tối ưu hóa nghiệp vụ, hệ thống không chỉ giải quyết trọn vẹn các thách thức vận hành thực tế mà còn đảm bảo tính nhất quán, an toàn và hiệu năng truy xuất dữ liệu ở mức độ cao nhất. Đây là nền tảng vững chắc sẵn sàng mở rộng thành hệ sinh thái quản lý giáo dục thông minh trong tương lai.