Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh công nghệ thông tin phát triển mạnh mẽ, việc tự động hóa và thông minh hóa các quy trình vận hành dịch vụ vận tải hành khách đóng vai trò thiết yếu. Dữ liệu là nền tảng cốt lõi giúp các doanh nghiệp theo dõi, quản lý khách hàng, nhân viên, lịch trình và giao dịch tài chính. Ngành dịch vụ vận tải đường sắt là một loại hình vận chuyển hành khách quy mô lớn, đòi hỏi hệ thống quản lý dữ liệu chặt chẽ nhằm giải phóng sức lao động thủ công, tối ưu hóa quy trình bán vé và vận hành các chuyến tàu.

Đề tài "Hệ Thống Quản Lý Bán Vé Tàu Hỏa" được thực hiện dưới dạng đồ án giữa kỳ trong khuôn khổ học phần Cơ sở dữ liệu (mã học phần: 23C1INF50900606), Khoa Công nghệ Thông tin Kinh doanh, Trường Công nghệ và Thiết kế thuộc Đại học Kinh tế TP. Hồ Chí Minh (UEH). Đồ án do nhóm sinh viên gồm Bùi Phương Nam, Tăng Khánh Hào, Đoàn Thị Hồng Nhung, Lê Thị Quỳnh Như và Lê Nguyễn Anh Thư thực hiện dưới sự hướng dẫn của Th.S Bùi Xuân Huy vào tháng 10 năm 2023.

Nhiệm vụ nghiên cứu và thực hiện của đồ án bao gồm:

  1. Khảo sát và mô tả chi tiết quy trình nghiệp vụ mua bán vé tàu hỏa trực tuyến và vận hành nhân sự buồng lái.
  2. Xây dựng mô hình thực thể kết hợp (ERD) và chuyển đổi thành lược đồ quan hệ (RD) chuẩn hóa.
  3. Xác định hệ thống 27 ràng buộc toàn vẹn dữ liệu từ mức đơn thuộc tính, liên thuộc tính, liên bộ đến liên quan hệ, đồng thời lập bảng tổng hợp tầm ảnh hưởng.
  4. Hiện thực hóa cơ sở dữ liệu trên hệ quản trị cơ sở dữ liệu Microsoft SQL Server, xây dựng bộ dữ liệu kiểm thử, thiết kế các truy vấn nâng cao và lập trình các Trigger kiểm soát toàn vẹn giao dịch.

Đối tượng nghiên cứu của đồ án là quy trình quản lý thông tin đặt vé tàu hỏa trực tuyến, kiểm soát vé, thanh toán hóa đơn, lộ trình các chuyến tàu và phân công nhân sự tổ lái. Phạm vi nghiên cứu giới hạn ở tầng thiết kế và hiện thực cơ sở dữ liệu quan hệ cho hệ thống bán vé tàu hỏa với dữ liệu mô phỏng gồm 4 chuyến tàu, 10 nhà ga, 12 nhân viên và các khách hàng giao dịch.

Cơ sở lý thuyết và phương pháp

Đồ án ứng dụng các nền tảng lý thuyết và công cụ chuẩn trong lĩnh vực hệ thống thông tin và cơ sở dữ liệu quan hệ:

  • Khung lý thuyết cơ sở dữ liệu quan hệ (Relational Database Theory): Ứng dụng mô hình thực thể kết hợp (ERD - Entity-Relationship Diagram) để mô hình hóa thực thể, thuộc tính và mối quan hệ; phương pháp ánh xạ từ ERD sang lược đồ quan hệ (Relational Schema - RD).
  • Lý thuyết ràng buộc toàn vẹn (Integrity Constraints): Áp dụng phân loại ràng buộc theo ngữ cảnh (ràng buộc miền giá trị, ràng buộc khóa chính, khóa ngoại, ràng buộc liên bộ và liên quan hệ); xây dựng bảng ma trận tầm ảnh hưởng đối với các thao tác Thêm (Insert), Xóa (Delete), Sửa (Update).
  • Lý thuyết chuẩn hóa quan hệ (Normalization): Dựa trên tập phụ thuộc hàm ($F$) để phân tích và đánh giá cấu trúc lược đồ đạt chuẩn, loại bỏ các dư thừa dữ liệu và dị thường cập nhật.
  • Phương pháp thực nghiệm và cài đặt:
    • Sử dụng ngôn ngữ định nghĩa dữ liệu (DDL) và thao tác dữ liệu (DML) trên hệ quản trị cơ sở dữ liệu Microsoft SQL Server (MS SQL Server).
    • Viết các truy vấn dữ liệu SQL từ cơ bản đến phức tạp (kết nối bảng JOIN, gom nhóm GROUP BY, điều kiện nhóm HAVING, phép toán tập hợp UNION, INTERSECT, EXCEPT, truy vấn con lồng nhau Subquery).
    • Xây dựng các thủ tục kích hoạt (TRIGGER) phía cơ sở dữ liệu để thực thi các quy tắc nghiệp vụ phức tạp mà ràng buộc khai báo tĩnh (CHECK, FOREIGN KEY) không đảm nhiệm được.

Nguồn dữ liệu của đồ án là dữ liệu mô phỏng nghiệp vụ thực tế, được chuẩn hóa thành 9 bảng dữ liệu quan hệ trong cơ sở dữ liệu mang tên QLVT.

Thiết kế và triển khai

Hệ thống cơ sở dữ liệu quản lý bán vé tàu hỏa được thiết kế với cấu trúc logic gồm 9 quan hệ chính:

Bảng dữ liệu Khóa chính (Primary Key) Khóa ngoại (Foreign Key) Chức năng lưu trữ
TAI_KHOAN ID Không Thông tin tài khoản hành khách (họ tên, tuổi, giới tính, số điện thoại, email)
TRAM_TAU matram Không Danh mục các ga tàu / trạm dừng
TAU matau matramkhoihanh, matramdung Lịch trình tàu, thời gian khởi hành, số lượng ghế trống, trạm xuất phát và kết thúc
NHAN_VIEN manhanvien matau Thông tin nhân viên phụ trách chuyến tàu (họ tên, tuổi, giới tính, mã tàu)
LAI_CHINH manhanvien matau Nhân viên lái chính buồng lái và số năm kinh nghiệm lái tàu
PHU_LAI manhanvien matau Nhân viên phụ lái và lý do thay thế lái chính khi có sự cố
HOA_DON mahoadon ID Thông tin thanh toán (thời gian thanh toán, phương thức: VNPay/MoMo, mã tài khoản)
PHIEU_DANGKY maphieu ID, mahoadon, matau Tổng hợp thông tin đăng ký vé của hành khách, số lượng vé đặt, thời gian đặt
VE mave ID, maphieu, matau, matramdon, matramtra Chi tiết vé (vị trí ghế, loại vé: PT/VIP, giá vé, thời gian đi, ga đón/trả)

Hệ thống vận hành dựa trên các quy tắc nghiệp vụ cốt lõi sau:

  • Quy định về vé: Hệ thống phân định 2 loại vé gồm Phổ thông (PT) có giá cố định 100.000 VND và Vé VIP (VIP) có giá cao hơn 50% (150.000 VND).
  • Quy định đặt vé và thanh toán: Mỗi lần đăng ký, một hành khách được đặt tối đa không quá 10 vé. Thời gian thanh toán trực tuyến qua cổng VNPay hoặc MoMo không được vượt quá 24 giờ kể từ thời điểm tạo phiếu đăng ký. Khách hàng được đặt vé trước nhưng không được vượt quá 3 tháng so với ngày tàu khởi hành.
  • Quy định lộ trình và vị trí ghế: Trạm đón và trạm trả trên vé phải trùng khớp với lộ trình thực tế của chuyến tàu; thời gian khởi hành của vé phải trùng với thời gian tàu chạy; không cho phép hai vé trên cùng một chuyến tàu trùng vị trí ghế (vitrighe).
  • Quy định nhân sự buồng lái: Mỗi chuyến tàu được phụ trách bởi đúng 3 nhân viên buồng lái, gồm 1 lái chính (yêu cầu kinh nghiệm tối thiểu 5 năm) và 2 phụ lái. Một nhân viên chỉ được đảm nhận một vai trò duy nhất (hoặc lái chính, hoặc phụ lái).

Nội dung chính theo từng chương

I. Lý do chọn đề tài

Phần này trình bày tầm quan trọng của cơ sở dữ liệu và công nghệ thông tin trong đời sống sản xuất và kinh doanh hiện đại. Tác giả nhấn mạnh việc lựa chọn bối cảnh xây dựng mô hình cơ sở dữ liệu quản lý bán vé tàu hỏa trực tuyến nhằm đáp ứng nhu cầu xử lý lượng thông tin lớn, giải phóng sức lao động thủ công và tự động hóa việc vận hành hệ thống vận tải đường sắt.

II. Thiết kế cơ sở dữ liệu

Chương này mô tả toàn diện quy trình nghiệp vụ hệ thống bán vé, bảng mô tả kiểu dữ liệu cho 9 thực thể, xây dựng mô hình dữ liệu quan niệm ERD và chuyển đổi sang lược đồ quan hệ RD. Các thuộc tính và kiểu dữ liệu được định nghĩa rõ ràng (ví dụ: ID CHAR(5), gioitinh NVARCHAR(3), sodienthoai VARCHAR(12), soluongghetrong INT, loaive VARCHAR(3)). Đồng thời, nhóm tác giả chỉ rõ các phụ thuộc khóa chính và khóa ngoại để đảm bảo tính liên kết dữ liệu giữa các bảng.

III. Ràng buộc toàn vẹn và chuẩn hóa

Nội dung chương tập trung thiết lập 27 ràng buộc toàn vẹn dữ liệu được chia theo từng nhóm:

  • Ràng buộc Unique: Khóa chính cho TAI_KHOAN(ID), NHAN_VIEN(manhanvien), TRAM_TAU(matram), TAU(matau).
  • Ràng buộc Khóa ngoại: 7 ràng buộc tham chiếu giữa VE, HOA_DON, PHIEU_DANGKY, NHAN_VIEN, TAU và TAI_KHOAN.
  • Ràng buộc Check: Kiểm tra giá trị loaive thuộc {'PT', 'VIP'}, gioitinh thuộc {'Nam', 'Nữ'}, sodienthoai không chứa ký tự chữ số không hợp lệ.
  • Ràng buộc miền giá trị và liên bộ: Lái chính có sonamkinhnghiem >= 5, số ghế trống soluongghetrong >= 0, soluongve <= 10, giá vé VIP bằng 150.000 VND, buồng lái có đúng 3 nhân viên.
  • Ràng buộc liên quan hệ: Thời gian thanh toán không quá 24 giờ sau khi đặt vé; thời gian vé khớp với thời gian tàu chạy; lộ trình đón/trả khớp với lộ trình tàu; vị trí ghế không bị trùng; phân công nhân viên lái chính và phụ lái độc quyền; số lượng vé khớp giữa VE và PHIEU_DANGKY; tự động cập nhật số ghế trống; thời gian đặt vé trước không quá 3 tháng.
  • Bảng tầm ảnh hưởng: Tổng hợp ma trận kiểm tra thao tác Thêm, Xóa, Sửa đối với 27 ràng buộc trên 9 quan hệ.
  • Chuẩn hóa: Xác định các tập phụ thuộc hàm $F$ cho từng quan hệ nhằm đảm bảo các bảng đều đạt dạng chuẩn cao (3NF/BCNF).

IV. Hiện thực trên MS SQL Server

Phần thực nghiệm cài đặt hệ thống trên MS SQL Server bao gồm hai nội dung chính:

  1. Lệnh truy vấn dữ liệu: Cung cấp các câu lệnh SQL mẫu và kết quả truy vấn thực tế trên cơ sở dữ liệu:
    • Truy vấn một bảng: Lọc thông tin tài khoản có giới tính 'Nữ'.
    • Truy vấn nhiều bảng: Liệt kê khách hàng đi chuyến tàu 'T02'; tìm khách hàng đã đăng ký tài khoản nhưng chưa mua vé sắp xếp theo độ tuổi.
    • Truy vấn có điều kiện: Tìm tài khoản đặt vé trong khoảng ngày 18/12/2023 đến 22/12/2023.
    • Truy vấn có tính toán: Xác định khách hàng thanh toán số tiền lớn nhất bằng cách sử dụng SUM(giave) và HAVING >= ALL.
    • Truy vấn gom nhóm và điều kiện gom nhóm: Đếm số nhân viên nam trên tàu 'T01'; tìm mã tàu có nhiều khách đăng ký nhất kèm danh sách nhân viên phụ trách.
    • Truy vấn phép toán tập hợp: Tìm hành khách $\le 20$ tuổi đi tàu 'T02' nhưng không thanh toán bằng VNPAY thông qua INTERSECT và EXCEPT.
    • Truy vấn con: Tìm thông tin nhân viên đảm nhận lái chính của tàu 'T02'.
  2. Lập trình Trigger kiểm soát toàn vẹn: Xây dựng 13 Trigger tương ứng từ Ràng buộc 15 đến Ràng buộc 27:
    • sonamkinhnghiem trên bảng LAI_CHINH: Kiểm tra kinh nghiệm tối thiểu 5 năm.
    • soluongghetrong trên bảng TAU: Ngăn chặn việc đặt vé khi ghế trống $< 0$.
    • soluongdatve trên bảng PHIEU_DANGKY: Giới hạn tối đa 10 vé.
    • giatienvenam trên bảng VE: Bắt buộc vé VIP phải có giá 150.000 VND.
    • soluongnhanvien trên bảng NHAN_VIEN: Bắt buộc mỗi tàu có đủ 3 nhân viên buồng lái.
    • thoigian trên bảng HOA_DON và PHIEU_DANGKY: Kiểm tra thời hạn thanh toán 24 giờ.
    • thoigiandi và lotrinh trên bảng VE: Ràng buộc thời gian và ga đón/trả theo lịch tàu.
    • ghetrong trên bảng VE: Ngăn trùng lặp vị trí ghế trên cùng chuyến tàu.
    • phancong và phancong1 trên bảng LAI_CHINH và PHU_LAI: Kiểm soát phân công công việc không chồng chéo.
    • ghinhan trên bảng PHIEU_DANGKY: Đồng bộ số lượng vé đặt với chi tiết vé.
    • huydatve và datve trên bảng VE: Tự động cộng hoặc trừ soluongghetrong của bảng TAU khi phát sinh giao dịch hủy hoặc đặt vé.
    • thoigiandatve trên bảng PHIEU_DANGKY: Kiểm tra đặt vé không trước quá 3 tháng.

V. Thông tin cơ sở dữ liệu và VI. Phân chia công việc - DDL Script

Cung cấp toàn bộ dữ liệu mẫu nạp vào 9 bảng dữ liệu (gồm 7 tài khoản khách hàng, 4 chuyến tàu T01-T04, 10 trạm ga từ A1-A5 và B1-B5, 12 nhân viên, 4 lái chính, 8 phụ lái, 5 hóa đơn thanh toán qua VNPay/MoMo, 5 phiếu đăng ký và 11 vé chi tiết). Kèm theo đó là bảng phân chia công việc chi tiết giữa 5 thành viên nhóm và kịch bản SQL khởi tạo toàn bộ cấu trúc bảng (CREATE DATABASE QLVT, CREATE TABLE kèm các khóa ngoại, kiểm tra điều kiện).

Kết quả và đóng góp

Đồ án đã đạt được các kết quả cụ thể sau:

  • Thiết kế hoàn chỉnh cấu trúc CSDL: Xây dựng thành công cơ sở dữ liệu QLVT với 9 bảng dữ liệu liên kết chặt chẽ, tối ưu hóa lưu trữ và đáp ứng đầy đủ yêu cầu quản lý chu trình bán vé tàu hỏa trực tuyến.
  • Hệ thống kiểm soát tính toàn vẹn đa tầng: Định nghĩa và hiện thực hóa thành công 27 ràng buộc toàn vẹn dữ liệu, từ mức ràng buộc cột (CHECK, DEFAULT), ràng buộc khóa ngoại (FOREIGN KEY) đến 13 thủ tục TRIGGER trên MS SQL Server, đảm bảo dữ liệu không bị sai lệch khi phát sinh các giao dịch đồng thời.
  • Tự động hóa logic nghiệp vụ tại tầng CSDL: Triển khai cơ chế tự động cập nhật số lượng ghế trống (soluongghetrong) khi phát sinh thêm/xóa vé thông qua Trigger datve và huydatve, cũng như tự động hủy giao dịch (ROLLBACK TRANSACTION) nếu vi phạm quy định thanh toán quá 24 giờ hoặc đặt vé quá 10 vé/lần.
  • Bộ dữ liệu kiểm thử và truy vấn đa dạng: Xây dựng hệ thống các câu lệnh truy vấn báo cáo đa dạng, hỗ trợ hiệu quả cho việc trích xuất thông tin hành khách, nhân sự, lịch trình và doanh thu.

Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế: Đồ án tập trung hoàn toàn vào tầng thiết kế và lập trình cơ sở dữ liệu (Database Layer) trên hệ quản trị MS SQL Server, chưa xây dựng ứng dụng giao diện người dùng (Front-end/Back-end) hoàn chỉnh. Mô hình lộ trình tuyến tàu mới chỉ quản lý điểm đầu (matramkhoihanh) và điểm cuối (matramdung), chưa mô hình hóa chi tiết việc tính giá vé linh hoạt theo từng chặng trung gian đối với các tuyến tàu đi qua nhiều ga.
  • Hướng phát triển: Mở rộng cấu trúc cơ sở dữ liệu để hỗ trợ quản lý các chặng dừng trung gian và tính giá vé theo cự ly di chuyển; kết nối cơ sở dữ liệu với ứng dụng web/di động; tích hợp API cổng thanh toán trực tuyến thực tế để tự động cập nhật trạng thái hóa đơn.

Giá trị tham khảo

Đồ án là tài liệu tham khảo thực hành hữu ích cho:

  • Sinh viên chuyên ngành Hệ thống thông tin quản lý, Công nghệ thông tin kinh doanh, Khoa học máy tính trong quá trình học tập các học phần Cơ sở dữ liệu và Hệ quản trị cơ sở dữ liệu.
  • Người học cần tài liệu mẫu về quy trình phân tích thiết kế CSDL từ bài toán nghiệp vụ thực tế, xây dựng ma trận bảng tầm ảnh hưởng ràng buộc toàn vẹn, và kỹ thuật lập trình Trigger kiểm soát giao dịch nâng cao trên MS SQL Server.

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

1. Hệ thống quản lý bán vé tàu hỏa trong đồ án gồm những bảng dữ liệu nào?

Cơ sở dữ liệu của đồ án gồm 9 bảng: TAI_KHOAN (tài khoản hành khách), TAU (thông tin tàu và lịch trình), TRAM_TAU (danh mục trạm/ga), NHAN_VIEN (thông tin nhân viên chung), LAI_CHINH (nhân viên lái chính), PHU_LAI (nhân viên phụ lái), VE (chi tiết vé tàu), PHIEU_DANGKY (phiếu đăng ký đặt vé), và HOA_DON (thông tin thanh toán).

2. Quy định về phân loại giá vé và số lượng vé đặt tối đa của một hành khách là gì?

Hệ thống quy định 2 loại vé: vé phổ thông (PT) có giá 100.000 VND và vé VIP (VIP) có giá đắt hơn 50%, tương đương 150.000 VND. Mỗi hành khách chỉ được đặt tối đa không quá 10 vé trong một lần đăng ký (soluongve <= 10).

3. Quy tắc thanh toán và các phương thức thanh toán trực tuyến được chấp nhận trong hệ thống là gì?

Hành khách có thể chọn thanh toán ngay hoặc thanh toán sau trực tuyến trong thời hạn tối đa 24 giờ kể từ thời điểm đặt vé được ghi nhận trên hệ thống. Hai phương thức thanh toán được hỗ trợ là VNPay và MoMo, được lưu trữ tại thuộc tính phuongthucthanhtoan của bảng HOA_DON.

4. Cơ chế phân công nhân sự buồng lái tàu được ràng buộc như thế nào?

Mỗi chuyến tàu bắt buộc phải có đúng 3 nhân viên trong buồng lái, bao gồm 1 lái chính và 2 phụ lái. Nhân viên lái chính bắt buộc phải có số năm kinh nghiệm tối thiểu từ 5 năm trở lên (sonamkinhnghiem >= 5). Nếu phụ lái vào thay thế lái chính thì bắt buộc phải ghi rõ lý do trong thuộc tính lydothay. Mỗi nhân viên chỉ được đảm nhận một vai trò duy nhất trên hệ thống (lái chính hoặc phụ lái).

5. Hệ thống tự động kiểm soát số lượng ghế trống trên tàu như thế nào khi có giao dịch vé?

Hệ thống sử dụng hai Trigger trên bảng VE:

  • Trigger datve: Khi hành khách thực hiện đặt vé thành công (thao tác INSERT), số lượng ghế trống trên tàu (soluongghetrong trong bảng TAU) tự động giảm đi tương ứng với số vé đặt.
  • Trigger huydatve: Khi hành khách hủy vé (thao tác DELETE), hệ thống tự động cộng trả lại số lượng ghế trống trên chuyến tàu đó.

Kết luận

Đồ án "Hệ Thống Quản Lý Bán Vé Tàu Hỏa" đã hoàn thành việc mô hình hóa và hiện thực hóa một cơ sở dữ liệu quan hệ hoàn chỉnh cho nghiệp vụ bán vé tàu hỏa trực tuyến. Bằng việc kết hợp chặt chẽ giữa thiết kế chuẩn hóa quan hệ và hệ thống 27 ràng buộc toàn vẹn cùng các Trigger trên MS SQL Server, đồ án đảm bảo tính chính xác, toàn vẹn và tự động hóa trong quản lý dữ liệu vận tải hành khách. Đây là tài liệu thực hành tiêu biểu cho học phần Cơ sở dữ liệu ứng dụng trong lĩnh vực công nghệ thông tin kinh doanh.