Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh xã hội ngày càng phát triển, nhu cầu nâng cao trình độ học vấn và năng lực ngoại ngữ gia tăng nhanh chóng, dẫn đến sự mở rộng về quy mô và số lượng của các trung tâm đào tạo tiếng Anh. Thực trạng này đặt ra thách thức lớn đối với công tác quản trị vận hành. Phương thức quản lý truyền thống dựa trên sổ sách giấy tờ bộc lộ nhiều hạn chế nghiêm trọng: nhân viên quản trị gặp trở ngại khi tra cứu thông tin học viên, giảng viên và khóa học; học viên e ngại thủ tục đăng ký rườm rà; rủi ro thất lạc, sai lệch dữ liệu ở mức cao; đồng thời gây sụt giảm hiệu suất kinh doanh và làm mất đi nguồn học viên tiềm năng. Do đó, việc xây dựng một hệ thống phần mềm quản lý trung tâm tiếng Anh chuyên biệt, có khả năng tự động hóa lưu trữ, xử lý thông tin chính xác và tối ưu hóa quy trình nghiệp vụ là nhu cầu thực tiễn cấp thiết.
Đồ án xác định các mục tiêu và nhiệm vụ nghiên cứu cụ thể như sau:
- Tin học hóa toàn diện quy trình quản trị nghiệp vụ của trung tâm ngoại ngữ, bao gồm quản lý hồ sơ học viên, thông tin giảng viên, mở khóa học, lịch phân công giảng dạy, chương trình khuyến mãi, chấm công, quản lý điểm và thống kê doanh thu.
- Xây dựng cơ sở dữ liệu quan hệ hoàn chỉnh trên hệ quản trị cơ sở dữ liệu Oracle, bảo đảm tính toàn vẹn dữ liệu thông qua hệ thống ràng buộc toàn vẹn, trigger và stored procedure.
- Giải quyết bài toán truy xuất dữ liệu đồng thời giữa nhiều người dùng trong hệ thống (như trường hợp nhiều học viên cùng đăng ký một khóa học hoặc các quản trị viên cùng cập nhật dữ liệu), ngăn chặn triệt để các xung đột gây mất nhất quán.
- Xây dựng ứng dụng phần mềm có giao diện trực quan, thân thiện, phân quyền rõ ràng cho từng nhóm đối tượng người dùng (quản trị viên, giảng viên, học viên), đồng thời đảm bảo khả năng sao lưu và phục hồi dữ liệu tin cậy.
Về đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Quy trình quản lý vận hành trung tâm tiếng Anh; mô hình dữ liệu quan hệ và các cơ chế xử lý giao tác, kiểm soát truy xuất đồng thời trong hệ quản trị cơ sở dữ liệu Oracle.
- Phạm vi không gian: Mô hình hoạt động của một trung tâm đào tạo ngoại ngữ với các vai trò người dùng xác định gồm Quản trị viên (Admin), Giảng viên (Teacher/Staff) và Học viên (Student).
- Phạm vi thời gian: Đồ án được triển khai nghiên cứu, xây dựng và hoàn thành vào tháng 6 năm 2023 tại Khoa Hệ thống Thông tin, Trường Đại học Công nghệ Thông tin – Đại học Quốc gia Thành phố Hồ Chí Minh.
- Phạm vi kỹ thuật: Tập trung vào tầng cơ sở dữ liệu quan hệ trên Oracle Database (sử dụng ngôn ngữ PL/SQL) và tầng ứng dụng desktop phát triển bằng ngôn ngữ Java.
Cơ sở lý thuyết và phương pháp
Đồ án ứng dụng hệ thống cơ sở lý thuyết chuẩn mực trong lĩnh vực hệ quản trị cơ sở dữ liệu quan hệ:
- Khung lý thuyết cơ sở dữ liệu quan hệ: Áp dụng mô hình thực thể mối quan hệ (ERD - Entity Relationship Diagram) và mô hình dữ liệu quan hệ; lý thuyết chuẩn hóa bảng dữ liệu nhằm loại bỏ dư thừa; lý thuyết về các ràng buộc toàn vẹn dữ liệu (ràng buộc liên bộ, liên quan hệ, liên thuộc tính và miền giá trị).
- Lý thuyết lập trình cơ sở dữ liệu PL/SQL: Khái niệm, nguyên lý hoạt động của Trigger (phân nhóm Before/After cho các sự kiện Insert, Update, Delete; cơ chế biến giả lập
:NEW, :OLD; cơ chế xử lý lỗi RAISE_APPLICATION_ERROR và xử lý giao tác tự trị PRAGMA AUTONOMOUS_TRANSACTION). Khái niệm, cú pháp và cơ chế tối ưu hóa của Stored Procedure (biên dịch và lưu trữ trên server, tham số IN, OUT, con trỏ SYS_REFCURSOR).
- Lý thuyết về giao tác và kiểm soát đồng thời: Khái niệm giao tác (Transaction); các mức cô lập dữ liệu (Isolation Levels) trong Oracle; các hiện tượng bất thường khi truy xuất đồng thời gồm: đọc dữ liệu chưa commit (Dirty Read / Uncommitted Data), đọc không lặp lại (Non-repeatable Read), bóng ma (Phantom Read), mất dữ liệu cập nhật (Lost Update) và tắc nghẽn giao tác (Deadlock).
Phương pháp nghiên cứu thực tế được triển khai bao gồm:
- Phương pháp phân tích và thiết kế hệ thống: Khảo sát các quy trình nghiệp vụ thực tế tại trung tâm ngoại ngữ để phân tích yêu cầu chức năng (lưu trữ, tính toán điểm số, tính lương, báo cáo thống kê, tìm kiếm) và phi chức năng (tính tiến hóa, hiệu quả, tiện dụng, tương thích).
- Phương pháp mô hình hóa dữ liệu: Thiết kế sơ đồ quan hệ thực thể ERD, chuyển đổi thành 10 lược đồ bảng dữ liệu quan hệ với các khóa chính, khóa ngoại và chỉ định kiểu dữ liệu chuẩn xác trên Oracle.
- Phương pháp lập trình và cài đặt thủ tục CSDL: Lập trình trực tiếp bằng ngôn ngữ PL/SQL để hiện thực hóa 11 Trigger kiểm tra nghiệp vụ và 12 Stored Procedure xử lý luồng công việc phức tạp.
- Phương pháp kiểm thử và thực nghiệm: Kiểm thử hoạt động của các trigger, thủ tục lưu trữ trên môi trường cơ sở dữ liệu; mô phỏng các tình huống xung đột giao tác khi có nhiều tiến trình truy cập đồng thời vào một tài nguyên dữ liệu.
- Nguồn dữ liệu: Bộ dữ liệu mô phỏng nghiệp vụ thực tế của trung tâm tiếng Anh bao gồm hồ sơ học viên, thông tin nhân sự giảng viên, danh mục khóa học, biểu mẫu chấm công, bảng điểm thành phần và giao dịch đăng ký học phí.
Thiết kế và triển khai
Hệ thống được thiết kế theo mô hình tích hợp giữa ứng dụng giao diện máy trạm và máy chủ cơ sở dữ liệu, với các thông số môi trường cụ thể:
- Hệ điều hành: Microsoft Windows 11.
- Hệ quản trị cơ sở dữ liệu: Oracle Database, quản lý và thao tác qua công cụ Oracle SQL Developer.
- Môi trường phát triển ứng dụng: Môi trường tích hợp Apache NetBeans (lập trình ứng dụng Java).
- Thư viện kết nối cơ sở dữ liệu: Trình điều khiển kết nối Java Database Connectivity
ojdbc11.
Thiết kế cấu trúc cơ sở dữ liệu
Cơ sở dữ liệu trung tâm bao gồm 10 bảng quan hệ được thiết kế chi tiết:
| Tên bảng |
Khóa chính |
Khóa ngoại tham chiếu |
Ý nghĩa nghiệp vụ |
STUDENT |
S_ID |
Không |
Lưu trữ hồ sơ thông tin cá nhân của học viên |
COURSE |
C_ID |
Không |
Quản lý danh mục khóa học, học phí, sĩ số, sức chứa |
RESULT |
(C_ID, S_ID, R_DATE, R_TEST) |
C_ID ref COURSE, S_ID ref STUDENT |
Lưu trữ kết quả các bài kiểm tra của học viên |
JOIN_COURSE |
(S_ID, C_ID) |
S_ID ref STUDENT, C_ID ref COURSE, D_ID ref DISCOUNT |
Quản lý lượt đăng ký khóa học, học phí thực thu |
TEACHERSTAFF |
T_ID |
Không |
Quản lý thông tin giảng viên, lương cơ bản, hệ số |
WORKING |
W_ID |
T_ID ref TEACHERSTAFF |
Lưu trữ dữ liệu chấm công (check-in, check-out, số giờ) |
DISCOUNT |
D_ID |
Không |
Quản lý thông tin và tỷ lệ phần trăm khuyến mãi |
TEACHING |
TE_ID |
T_ID ref TEACHERSTAFF, C_ID ref COURSE |
Phân công lịch giảng dạy giữa giảng viên và khóa học |
ADMIN |
Q_ID |
Không |
Lưu trữ thông tin nhân sự quản trị hệ thống |
ACCOUNT |
A_MAIL |
Không |
Lưu trữ tài khoản đăng nhập, mật khẩu, phân quyền |
Hệ thống ràng buộc toàn vẹn
Nhóm tác giả thiết lập 15 ràng buộc toàn vẹn (RBTV) nhằm bảo đảm tính đúng đắn của dữ liệu:
- R1 đến R6: Ràng buộc duy nhất (khóa chính) cho các bảng
STUDENT (S_ID), TEACHERSTAFF (T_ID), COURSE (C_ID), DISCOUNT (D_ID), ADMIN (Q_ID), ACCOUNT (A_MAIL).
- R7: Học viên không được đăng ký khóa học khác trình độ (
STUDENT.S_LEVEL = COURSE.C_LEVEL).
- R8: Không có hai lượt chấm công trùng ngày của cùng một nhân viên trong bảng
WORKING.
- R9: Ngày sinh của nhân sự giảng viên phải nhỏ hơn ngày vào làm (
T_BIRTH < T_STARTDATE).
- R10: Tỷ lệ phần trăm khuyến mãi phải nhỏ hơn 100 (
D_PERCENTAGE < 100).
- R11: Ngày sinh của học viên phải nhỏ hơn ngày bắt đầu khóa học (
S_BIRTH < C_START).
- R12: Ngày kết thúc khóa học phải lớn hơn ngày bắt đầu (
C_END > C_START).
- R13: Điểm số của học viên trong bảng kết quả phải nằm trong thang điểm quy định (
R_SCORE <= 10).
- R14: Với mỗi mã khuyến mãi, mỗi học viên chỉ được phép áp dụng tối đa một lần.
- R15: Sĩ số thực tế của lớp học phải nhỏ hơn hoặc bằng sức chứa tối đa (
C_NUM <= C_CAPACITY).
Nội dung chính theo từng phần
Phần 1: Tổng quan và phân tích yêu cầu
Nội dung phần này tập trung phân tích bài toán thực tế của trung tâm ngoại ngữ, khảo sát chi tiết yêu cầu chức năng và yêu cầu phi chức năng. Phần phân tích yêu cầu làm rõ các luồng lưu trữ dữ liệu, luồng tính toán lương tự động dựa trên thời gian làm việc thực tế, tính điểm trung bình cho học viên, lập báo cáo thống kê doanh thu theo mốc thời gian, cùng các yêu cầu tìm kiếm tra cứu. Bên cạnh đó, các yêu cầu phi chức năng nhấn mạnh vào tính tiến hóa (khả năng mở rộng sang nền tảng web), tính hiệu quả, tính tương thích trên hệ điều hành Windows và Linux. Phần này cũng trình bày chi tiết mô hình thực thể ERD, 10 lược đồ quan hệ và bảng thuyết minh thuộc tính đầy đủ cùng 15 đặc tả ràng buộc toàn vẹn kèm ma trận kiểm tra thao tác Thêm/Xóa/Sửa.
Phần 2: Xây dựng và quản lý giao tác
Trọng tâm kỹ thuật của đề tài nằm ở việc thiết kế và lập trình các đối tượng logic nghiệp vụ trực tiếp trong Oracle Database bằng PL/SQL:
-
Hệ thống Trigger kiểm soát tính hợp lệ dữ liệu (11 Trigger):
check_course_level: Kiểm tra đối chiếu trình độ học viên và cấp độ khóa học khi thêm hoặc cập nhật tại bảng JOIN_COURSE.
check_duplicate_working_dates: Ngăn chặn việc chấm công trùng ngày cho một giảng viên trên bảng WORKING, sử dụng chỉ thị PRAGMA AUTONOMOUS_TRANSACTION để khắc phục hiện tượng lỗi mutating table.
check_birth_before_start: Kiểm tra ngày sinh nhân viên phải nhỏ hơn ngày bắt đầu vào làm việc tại bảng TEACHERSTAFF.
check_discount: Đảm bảo giá trị chiết khấu d_percentage luôn nhỏ hơn 100% trên bảng DISCOUNT.
check_birth_before_c_start_ins và check_birth_before_c_start_udt: Bảo đảm ngày sinh của học viên luôn xảy ra trước ngày khai giảng khóa học trên bảng JOIN_COURSE và COURSE.
check_start_end: Ràng buộc ngày kết thúc khóa học phải lớn hơn ngày bắt đầu khóa học trên bảng COURSE.
check_score_limit: Kiểm soát điểm nhập vào bảng RESULT không được vượt quá giá trị 10.
check_discount_limit: Khống chế mỗi học viên chỉ được áp dụng mỗi mã khuyến mại đúng 1 lần tại bảng JOIN_COURSE.
check_class_capacity_ins và check_class_capacity_udt: Kiểm soát sĩ số học viên không vượt quá sức chứa lớp học khi thêm học viên mới hoặc khi điều chỉnh sức chứa khóa học.
-
Hệ thống Stored Procedure xử lý nghiệp vụ (12 Stored Procedure):
DANG_KY_KHOA_HOC: Tiếp nhận mã học viên, mã khóa học, mã khuyến mãi; thực hiện kiểm tra lịch sử học, kiểm tra trình độ, tính toán học phí sau giảm trừ, cập nhật tăng sĩ số c_num trong bảng COURSE và ghi nhận bản ghi vào JOIN_COURSE.
TOTAL: Tính toán số tiền thực thu sau khi áp dụng phần trăm chiết khấu của mã khuyến mãi.
INSERT_LICHDAY và UPDATE_LICHDAY: Kiểm tra tính hợp lệ và phân công, điều chỉnh lịch giảng dạy giữa giảng viên và khóa học.
TINHLUONG: Tự động trích xuất số giờ làm trong tháng từ WORKING, kết hợp với hệ số lương T_PORTION và lương cơ bản T_SALARY trong TEACHERSTAFF theo công thức: $\text{Lương} = \text{Giờ làm} \times \text{Hệ số lương} \times \text{Lương cơ bản}$.
TINHDIEMTB: Tính điểm trung bình cộng của học viên trong một khóa học dựa trên hàm gom nhóm AVG(R_SCORE).
MONTHINCOME và YEARINCOME: Trích xuất và tổng hợp doanh thu theo tháng hoặc theo năm sử dụng con trỏ SYS_REFCURSOR và hàm tổng hợp SUM(S_FEE).
TONGHV, TONGGV, TONGKH, TONGDT: Các hàm thủ tục thống kê nhanh số lượng học viên, số lượng giảng viên, tổng số khóa học và tổng doanh thu của toàn bộ hệ thống.
Phần 3: Xử lý truy xuất đồng thời
Phần này nghiên cứu chuyên sâu về các vấn đề nảy sinh khi nhiều người dùng cùng truy cập và thay đổi dữ liệu trong cơ sở dữ liệu:
- Phân tích cơ chế cô lập giao tác của Oracle Database và cách hệ thống xử lý các hiện tượng vi phạm toàn vẹn đồng thời.
- Phân tích chi tiết các tình huống:
- Đọc dữ liệu chưa commit (Uncommitted Data / Dirty Read): Giao tác đọc dữ liệu đang được sửa đổi bởi giao tác khác chưa hoàn tất.
- Đọc dữ liệu không thể lặp lại (Non-repeatable Read): Một giao tác đọc lại cùng một bản ghi nhưng nhận giá trị khác nhau do giao tác khác đã commit việc chỉnh sửa.
- Tắc nghẽn chết (Deadlock): Xảy ra khi hai hay nhiều giao tác chờ đợi tài nguyên khóa lẫn nhau mà không thể tự giải phóng.
- Xây dựng giải pháp ngăn chặn xung đột dữ liệu trong các nghiệp vụ trọng yếu như đăng ký khóa học (tránh tình trạng ghi đè hoặc vượt quá sức chứa lớp học khi nhiều học viên đăng ký cùng thời điểm) và cập nhật thông tin hệ thống từ nhiều tài khoản quản trị.
Phần 4: Thiết kế giao diện
Mô tả chi tiết 18 chức năng giao diện người dùng được thiết kế trên ứng dụng desktop:
- Phân hệ Chung: Màn hình đăng nhập, xem và cập nhật thông tin cá nhân, đăng xuất khỏi hệ thống.
- Phân hệ Quản trị viên (Admin): Quản lý hồ sơ học viên; quản lý thông tin giảng viên; quản lý danh mục và thông tin khóa học; quản lý lịch phân công giảng dạy; quản lý dữ liệu chấm công; theo dõi báo cáo doanh thu.
- Phân hệ Giảng viên: Tra cứu thông tin khóa học được phân công; quản lý và nhập điểm thành phần cho học viên; theo dõi lịch sử và thông tin chấm công cá nhân.
- Phân hệ Học viên: Tra cứu danh mục các khóa học đang mở tại trung tâm; thực hiện đăng ký khóa học trực tuyến; xem tiến trình các khóa học đã và đang tham gia; tra cứu bảng điểm thi chi tiết.
Phần 5: Kết luận và đánh giá đề tài
Phần tổng kết trình bày bảng phân công công việc cụ thể của 4 thành viên trong nhóm, tổng hợp kết quả xây dựng ứng dụng, phân tích các môi trường phát triển và triển khai thực tế. Đồng thời, văn bản đánh giá các khó khăn kỹ thuật phát sinh trong quá trình thiết lập giao tác cơ sở dữ liệu và đề xuất phương hướng phát triển hệ thống trong tương lai.
Kết quả và đóng góp
Đồ án ghi nhận các kết quả cụ thể đã hoàn thành:
- Xây dựng hoàn chỉnh mô hình CSDL: Chuẩn hóa cấu trúc 10 bảng dữ liệu quan hệ, bao quát toàn diện các thực thể cần quản lý trong một trung tâm ngoại ngữ.
- Đảm bảo tính toàn vẹn ở tầng dữ liệu: Hiện thực hóa 15 ràng buộc toàn vẹn nghiệp vụ thông qua 11 Trigger PL/SQL được biên dịch và kiểm thử thành công trên hệ quản trị Oracle, ngăn chặn triệt để các sai sót nhập liệu từ phía ứng dụng.
- Tối ưu hóa xử lý nghiệp vụ: Đóng gói 12 Stored Procedure trên máy chủ cơ sở dữ liệu, cho phép thực thi tự động các thao tác phức tạp (đăng ký khóa học, tính lương, tính điểm trung bình, kết xuất báo cáo doanh thu theo tháng/năm bằng con trỏ) với tốc độ nhanh và giảm thiểu lưu lượng mạng truyền tải giữa ứng dụng và máy chủ.
- Kiểm soát giao tác và truy xuất đồng thời: Phân tích và đưa ra giải pháp kiểm soát các bất thường trong môi trường đa người dùng, bảo đảm an toàn dữ liệu khi có nhiều giao tác đồng thời.
- Hiện thực hóa phần mềm: Xây dựng ứng dụng hoàn chỉnh kết nối Java (NetBeans) với Oracle Database thông qua thư viện
ojdbc11, cung cấp 18 giao diện chức năng phục vụ đầy đủ cho 3 nhóm người dùng: Quản trị viên, Giảng viên và Học viên.
Về giải pháp và đóng góp: Đề tài đã đề xuất giải pháp tin học hóa toàn diện quy trình vận hành trung tâm ngoại ngữ, giải quyết triệt để các bất cập của phương pháp quản lý sổ sách truyền thống. Đóng góp cốt lõi mà nhóm tác giả tự xác định là vận dụng hiệu quả các kỹ thuật nâng cao của hệ quản trị cơ sở dữ liệu Oracle (Stored Procedure, Trigger, Transaction Isolation, Autonomous Transaction) để giải quyết trọn vẹn bài toán nghiệp vụ thực tiễn, tạo cơ sở cho việc phát triển và chuyển đổi linh hoạt sang các hệ thống quản lý đào tạo tương tự như trường học hay trung tâm luyện thi.
Hạn chế và hướng nghiên cứu tiếp
Dựa trên các khó khăn và đánh giá do nhóm tác giả tự ghi nhận trong văn bản đồ án:
- Hạn chế kỹ thuật:
- Việc xử lý các phép tính toán logic và nghiệp vụ phức tạp trực tiếp bằng Stored Procedure làm gia tăng tải xử lý và chiếm dụng tài nguyên bộ nhớ trên máy chủ cơ sở dữ liệu (Database Server).
- Ngôn ngữ PL/SQL trong Stored Procedure chủ yếu xử lý các tập lệnh SQL thuần túy, gây khó khăn nhất định khi phải xử lý các cấu trúc logic phức tạp so với các ngôn ngữ lập trình bậc cao ở tầng ứng dụng.
- Việc kiểm thử, bẫy lỗi (debug) và bảo trì các Stored Procedure và Trigger phức tạp trong hệ quản trị cơ sở dữ liệu đòi hỏi kỹ năng chuyên biệt và phức tạp hơn so với mã nguồn ứng dụng.
- Ứng dụng hiện tại mới dừng lại ở mô hình ứng dụng desktop (Java NetBeans) cài đặt cục bộ, chưa hỗ trợ trực tiếp trên nền tảng web hoặc thiết bị di động.
- Hướng nghiên cứu tiếp (Hướng phát triển):
- Nâng cấp và chuyển đổi kiến trúc hệ thống từ ứng dụng desktop lên nền tảng trực tuyến (Web-based application) để người dùng có thể truy cập linh hoạt qua Internet.
- Tích hợp thêm các module chức năng mở rộng như thi trực tuyến, đánh giá rèn luyện học viên.
- Tinh chỉnh và đóng gói mô hình hệ thống để có thể tái sử dụng, chuyển giao chi phí thấp sang các mô hình quản lý giáo dục khác như hệ thống quản lý trường học hay trung tâm luyện thi.
Giá trị tham khảo
Đồ án là tài liệu tham khảo hữu ích cho:
- Sinh viên chuyên ngành Hệ thống Thông tin, Kỹ thuật Phần mềm và Công nghệ Thông tin đang theo học các học phần: Hệ quản trị cơ sở dữ liệu, Cơ sở dữ liệu nâng cao, Phân tích và thiết kế hệ thống thông tin.
- Người học và kỹ sư đang thực hiện các đề tài đồ án môn học hoặc khóa luận tốt nghiệp có liên quan đến việc thiết kế CSDL và lập trình PL/SQL trên nền tảng Oracle.
Các phần nội dung có giá trị tham khảo nổi bật bao gồm:
- Phương pháp phân tích và mô hình hóa ràng buộc toàn vẹn với bảng ma trận kiểm tra thao tác Thêm/Xóa/Sửa.
- Kỹ thuật viết Trigger trong Oracle để kiểm soát nghiệp vụ chéo bảng, đặc biệt là kỹ thuật áp dụng chỉ thị
PRAGMA AUTONOMOUS_TRANSACTION để xử lý kiểm tra trùng lặp dữ liệu chấm công mà không gây lỗi mutating table.
- Mẫu thiết kế các Stored Procedure xử lý luồng giao dịch nghiệp vụ tích hợp (như thủ tục
DANG_KY_KHOA_HOC kiểm tra nhiều điều kiện và cập nhật liên bảng) và thủ tục thống kê doanh thu trả về kiểu SYS_REFCURSOR.
- Tài liệu phân tích các dạng bất thường khi truy xuất đồng thời và cách ứng dụng cơ chế cô lập giao tác trong môi trường thực tế.
Câu hỏi thường gặp
1. Cơ sở dữ liệu của đồ án quản lý những thực thể nào và gồm bao nhiêu bảng quan hệ?
Cơ sở dữ liệu của đồ án quản lý toàn diện các thực thể vận hành trung tâm ngoại ngữ thông qua 10 bảng dữ liệu quan hệ: STUDENT (học viên), COURSE (khóa học), RESULT (kết quả thi), JOIN_COURSE (đăng ký khóa học), TEACHERSTAFF (giảng viên/nhân viên), WORKING (chấm công), DISCOUNT (khuyến mãi), TEACHING (phân công giảng dạy), ADMIN (quản trị viên) và ACCOUNT (tài khoản đăng nhập).
2. Nghiệp vụ đăng ký khóa học của học viên được ràng buộc và xử lý bằng các cơ chế kỹ thuật nào?
Nghiệp vụ đăng ký khóa học được xử lý kết hợp qua:
- Trigger
check_course_level và check_class_capacity_ins trên bảng JOIN_COURSE để chặn việc đăng ký sai trình độ (S_LEVEL <> C_LEVEL) hoặc đăng ký khi lớp đã đạt sức chứa tối đa (c_current_count > v_capacity).
- Trigger
check_discount_limit để chặn việc một học viên dùng một mã khuyến mãi nhiều lần.
- Stored Procedure
DANG_KY_KHOA_HOC: Kiểm tra học viên đã học khóa này chưa; kiểm tra độ khớp trình độ; tính toán học phí giảm trừ theo phần trăm khuyến mãi; tự động tăng sĩ số c_num trong bảng COURSE thêm 1 và thêm dòng mới vào bảng JOIN_COURSE.
3. Công thức và thủ tục tính lương cho giảng viên (TINHLUONG) được xây dựng như thế nào?
Thủ tục TINHLUONG tiếp nhận tham số đầu vào là mã nhân viên (MANV) và trả về kết quả qua biến LUONG (OUT). Thủ tục tự động lấy năm và tháng hiện tại từ hàm hệ thống SYSDATE, tính tổng số giờ làm việc GIOLAM của nhân viên trong tháng từ bảng WORKING, truy xuất hệ số lương HSL (T_PORTION) và lương cơ bản LUONGCOBAN (T_SALARY) từ bảng TEACHERSTAFF, sau đó tính toán theo công thức:
$$\text{LUONG} = \text{GIOLAM} \times \text{HSL} \times \text{LUONGCOBAN}$$
4. Tại sao trigger check_duplicate_working_dates trên bảng WORKING phải sử dụng chỉ thị PRAGMA AUTONOMOUS_TRANSACTION?
Khi một trigger dạng row-level trên bảng WORKING thực hiện câu lệnh SELECT COUNT(*) trực tiếp trên chính bảng WORKING để đếm số bản ghi trùng lặp thời gian chấm công của nhân viên, hệ quản trị Oracle sẽ kích hoạt lỗi bảng đang biến đổi (mutating table error). Việc khai báo chỉ thị PRAGMA AUTONOMOUS_TRANSACTION cho phép trigger thực thi câu truy vấn kiểm tra trong một giao tác độc lập, tách rời khỏi giao tác chính đang thao tác chèn/cập nhật, từ đó vượt qua lỗi mutating table và kiểm tra trùng lặp chính xác.
5. Hệ thống phần mềm được xây dựng bằng những công nghệ và công cụ cụ thể nào?
Hệ thống được phát triển và kiểm thử trên hệ điều hành Windows 11, sử dụng hệ quản trị cơ sở dữ liệu Oracle Database thao tác qua công cụ Oracle SQL Developer. Giao diện phần mềm được lập trình bằng ngôn ngữ Java trên môi trường phát triển tích hợp Apache NetBeans, kết nối với cơ sở dữ liệu Oracle thông qua thư viện driver ojdbc11.
Kết luận
Đồ án môn học Hệ quản trị Cơ sở dữ liệu với đề tài "Quản lý trung tâm tiếng Anh" đã giải quyết thành công bài toán số hóa quy trình quản trị nghiệp vụ giáo dục đào tạo thông qua thiết kế cơ sở dữ liệu quan hệ chuẩn mực gồm 10 bảng. Bằng việc xây dựng hệ thống 11 Trigger và 12 Stored Procedure bằng ngôn ngữ PL/SQL trên nền tảng Oracle, nhóm tác giả đã bảo đảm toàn vẹn dữ liệu, giải quyết xung đột truy xuất đồng thời và tối ưu hóa các tác vụ tính toán phức tạp. Kết hợp với ứng dụng desktop Java qua kết nối ojdbc11, đồ án mang lại giải pháp công nghệ hoàn chỉnh, có giá trị học thuật cao và khả năng ứng dụng thực tiễn rõ rệt.