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

Trong hoạt động quản trị của các tổ chức và doanh nghiệp, quản lý nhân sự đóng vai trò then chốt quyết định hiệu quả vận hành. Khi quy mô tổ chức mở rộng và số lượng lao động tăng lên, các đơn vị phải đối mặt với nhiều khó khăn trong việc theo dõi thông tin nhân viên, chấm công hàng ngày, xử lý đơn từ và tính toán tiền lương. Phương thức quản lý thủ công truyền thống bộc lộ nhiều hạn chế: tiêu tốn thời gian, quy trình làm việc rườm rà, dễ phát sinh sai sót trong tính lương hoặc thất lạc dữ liệu chấm công. Những sai sót này không chỉ cản trở ban lãnh đạo đưa ra các quyết định chiến lược kịp thời mà còn gây tâm lý không hài lòng cho người lao động, làm suy giảm sự gắn kết và gia tăng tỷ lệ nghỉ việc.

Xuất phát từ thực tiễn trên, đồ án môn học "Xây dựng hệ thống quản lý nhân sự, chấm công, tính lương" được thực hiện bởi nhóm sinh viên Khoa Hệ thống Thông tin, Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM. Đồ án tập trung thiết kế và hiện thực hóa cơ sở dữ liệu quan hệ mô phỏng quy trình quản lý nhân sự toàn diện trên nền tảng hệ quản trị cơ sở dữ liệu Oracle.

Mục tiêu và nhiệm vụ nghiên cứu cụ thể của đề tài bao gồm:

  1. Xác định và phân tích các yêu cầu chức năng (lưu trữ dữ liệu, quản lý nhân sự, phòng ban, chấm công, tiền lương, đơn từ, phân quyền) và yêu cầu phi chức năng (bảo mật, hiệu suất, độ tin cậy, tính tương thích, bảo trì).
  2. Xây dựng mô hình quan hệ hoàn chỉnh gồm các thực thể, thuộc tính và 13 ràng buộc toàn vẹn đảm bảo tính nhất quán dữ liệu.
  3. Hiện thực hóa các thủ tục lưu trữ (Stored Procedures), hàm (Functions) và Trigger để tự động hóa toàn bộ quy trình nghiệp vụ chấm công, xin nghỉ phép, ứng lương và lập bảng lương.
  4. Nghiên cứu cơ chế kiểm soát giao tác và xử lý truy xuất đồng thời trên hệ quản trị cơ sở dữ liệu Oracle nhằm ngăn chặn các hiện tượng dị thường dữ liệu.

Đối tượng nghiên cứu của đồ án là cấu trúc dữ liệu và các giao thức nghiệp vụ quản lý nhân sự, chấm công, tính lương. Phạm vi nghiên cứu giới hạn trong việc thiết kế mô hình dữ liệu quan hệ và lập trình xử lý logic nghiệp vụ tầng cơ sở dữ liệu (PL/SQL) cho một doanh nghiệp mô phỏng.


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

Đồ án vận dụng lý thuyết về hệ quản trị cơ sở dữ liệu quan hệ (RDBMS), tập trung vào các khái niệm thiết kế lược đồ, chuẩn hóa dữ liệu, xác lập ràng buộc toàn vẹn và lập trình thủ tục cơ sở dữ liệu.

Phương pháp nghiên cứu và kỹ thuật triển khai trong đồ án gồm:

  • Phương pháp phân tích yêu cầu: Phân rã nghiệp vụ quản lý nhân sự thành các mô-đun chức năng cụ thể: hồ sơ nhân viên, cơ cấu phòng ban, chấm công, quản lý yêu cầu (nghỉ phép, ứng lương) và bảng lương.
  • Phương pháp thiết kế mô hình dữ liệu quan hệ: Chuyển đổi mô hình thực thể mối kết hợp (ERD) sang lược đồ quan hệ, định nghĩa kiểu dữ liệu, khóa chính, khóa ngoại và lập bảng tầm ảnh hưởng cho 13 ràng buộc toàn vẹn.
  • Phương pháp lập trình cơ sở dữ liệu: Ứng dụng ngôn ngữ PL/SQL của Oracle để xây dựng 15 thủ tục lưu trữ, 2 hàm tính toán và 4 trigger nhằm kiểm soát toàn vẹn dữ liệu chủ động và xử lý nghiệp vụ tự động.
  • Phương pháp kiểm soát giao tác: Khảo sát các lệnh điều khiển giao tác (COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION, SET AUTOCOMMIT) và các mức cô lập (READ COMMITTED, SERIALIZABLE) để xử lý các vấn đề mất dữ liệu cập nhật (Lost Update) và đọc dữ liệu chưa xác nhận (Dirty Read).

Nguồn dữ liệu sử dụng là hệ thống dữ liệu mô phỏng nghiệp vụ thực tế của doanh nghiệp, được cấu trúc hóa chặt chẽ theo các quan hệ chuẩn trong hệ quản trị cơ sở dữ liệu Oracle.


Thiết kế và triển khai hệ thống

1. Kiến trúc dữ liệu và các quan hệ

Hệ thống được tổ chức thành 8 bảng quan hệ với cấu trúc thuộc tính chi tiết như sau:

Tên quan hệ Khóa chính Khóa ngoại Danh sách thuộc tính và kiểu dữ liệu
NHANVIEN MANV MAPB tham chiếu PHONGBAN(MAPB) MANV (Number), MAPB (Char(4)), TENNV (Varchar2(30)), CCCD (Char(12)), NGSINH (Date), QUEQUAN (Varchar2(30)), GIOITINH (Boolean), CHUCVU (Varchar2(30)), LUONGCB (Number), HESO (Float)
TAIKHOAN TENTK MANV tham chiếu NHANVIEN(MANV) TENTK (Char(20)), MANV (Number), MATKHAU (Char(20)), LOAITK (Number)
PHONGBAN MAPB Không có MAPB (Char(4)), TENPB (Varchar2(30)), NGAYTL (Date)
TRUONGPHONG Không có MANV tham chiếu NHANVIEN, MAPB tham chiếu PHONGBAN MANV (Number), MAPB (Char(4)), NGAYNC (Date)
PHIEUCHAMCONG MAPCC MANV tham chiếu NHANVIEN(MANV) MAPCC (Number), MANV (Number), NGAYCC (Date)
YEUCAUNGHIPHEP MAYCNP MANV tham chiếu NHANVIEN(MANV) MAYCNP (Number), MANV (Number), NGAYGUI (Date), NGAYBD (Date), NGAYKT (Date), GHICHUNP (Varchar2(100)), TRANGTHAINP (Varchar2(20))
YEUCAUUNGLUONG MAYCUL MANV tham chiếu NHANVIEN(MANV) MAYCUL (Number), MANV (Number), NGAYUL (Date), TIENUL (Number), GHICHUUL (Varchar2(50)), TRANGTHAIUL (Varchar2(20))
BANGLUONG MABL MANV tham chiếu NHANVIEN(MANV) MABL (Number), MANV (Number), NAM (Date), THANG (Date), TONGTIENUL (Number), LUONGTL (Number)

2. Hệ thống ràng buộc toàn vẹn

Đồ án thiết lập 13 ràng buộc toàn vẹn (RBTV) để duy trì tính đúng đắn của dữ liệu:

  • Ràng buộc trên 1 quan hệ (RB1 đến RB9):
    • Khóa chính duy nhất trên các bảng: MANV trong NHANVIEN (RB1), TENTK trong TAIKHOAN (RB2), MAPB trong PHONGBAN (RB3), MANV trong TRUONGPHONG (RB4), MAPCC trong PHIEUCHAMCONG (RB5), MAYCNP trong YEUCAUNGHIPHEP (RB6), MAYCUL trong YEUCAUUNGLUONG (RB7), MABL trong BANGLUONG (RB8).
    • Ràng buộc miền giá trị logic thời gian (RB9): Với mọi yêu cầu nghỉ phép, ngày bắt đầu phải nhỏ hơn hoặc bằng ngày kết thúc (NGAYBD <= NGAYKT).
  • Ràng buộc trên nhiều quan hệ (RB10 đến RB13):
    • RB10: Mỗi tài khoản phải liên kết với một nhân viên tồn tại trong hệ thống.
    • RB11: Mỗi nhân viên phải trực thuộc một phòng ban hợp lệ.
    • RB12: Mỗi yêu cầu nghỉ phép phải gắn liền với một nhân viên cụ thể.
    • RB13: Mỗi yêu cầu ứng lương phải gắn liền với một nhân viên cụ thể.

3. Công thức tính toán và quy tắc nghiệp vụ

Hệ thống áp dụng các công thức tính lương và điều kiện biên:

  • Tiền lương thực lãnh: $$\text{Lương thực lãnh} = (\text{Lương theo ngày} \times \text{Số ngày làm việc}) - \text{Tổng tiền đã ứng}$$
  • Tiền lương một ngày làm việc: $$\text{Lương theo ngày} = \frac{\text{Lương cơ bản} \times \text{Hệ số lương}}{25}$$
  • Quy tắc ứng lương: Mỗi nhân viên không được gửi quá 2 yêu cầu ứng lương trong một tháng.
  • Quy tắc nghỉ phép: Khi yêu cầu nghỉ phép được quản trị viên phê duyệt, hệ thống tự động ghi nhận số ngày nghỉ đó là ngày nghỉ hưởng lương thông qua việc chèn các bản ghi chấm công tương ứng.

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

CHƯƠNG 1. Phát biểu bài toán

Chương 1 trình bày tổng quan về đề tài, lý do lựa chọn và phân tích chi tiết các yêu cầu của hệ thống:

  • Phân tích yêu cầu chức năng: Xác định các phân hệ chính bao gồm quản trị thông tin nhân viên, phòng ban, phân quyền tài khoản người dùng, chấm công hàng ngày qua ứng dụng, theo dõi và xử lý đơn từ (nghỉ phép, ứng lương), tính toán tiền lương tự động và xuất báo cáo (PDF, Excel).
  • Phân tích yêu cầu phi chức năng: Đặt ra các tiêu chí về tính bảo mật thông tin nhân sự, hiệu năng phản hồi nhanh với độ trễ thấp khi có nhiều yêu cầu đồng thời, giao diện thân thiện, khả năng tương thích môi trường và tính ổn định cao.
  • Thiết kế lược đồ quan hệ và ràng buộc: Xây dựng mô hình 8 bảng dữ liệu quan hệ, mô tả chi tiết từng trường dữ liệu, kiểu dữ liệu, khóa chính, khóa ngoại, cùng bảng thuyết minh 13 ràng buộc toàn vẹn kèm ma trận tầm ảnh hưởng (Thêm, Xóa, Sửa) trên từng quan hệ.

CHƯƠNG 2. Xây dựng các giao tác

Chương 2 hiện thực hóa logic nghiệp vụ thông qua hệ thống chương trình con và trigger viết bằng PL/SQL:

  • Danh sách 15 Stored Procedures:

    1. SP_ADDNHANVIEN: Thêm nhân viên mới với kiểm tra ràng buộc số CCCD không trùng lặp và tuổi nhân viên phải từ 18 trở lên; mã nhân viên được tạo tự động.
    2. SP_DELETENHANVIEN: Xóa nhân viên khỏi hệ thống theo mã nhân viên.
    3. SP_UPDATENHANVIEN: Cập nhật thông tin nhân viên với kiểm tra điều kiện tuổi $\ge 18$.
    4. INSERTPHONGBAN: Thêm mới phòng ban với mã phòng ban tạo tự động từ số thứ tự và ký tự quy ước.
    5. UPDATEPHONGBAN: Cập nhật thông tin phòng ban.
    6. DELETEPHONGBAN: Xóa phòng ban với điều kiện phòng ban đó không còn nhân viên trực thuộc; nếu thỏa mãn sẽ cô lập mã phòng ban tránh trùng lặp.
    7. kiem_tra_nhan_vien: Kiểm tra sự tồn tại của nhân viên dựa trên mã đầu vào, trả về cờ TRUE/FALSE qua tham số OUT.
    8. them_phieu_cham_cong: Nhân viên tự chấm công hàng ngày; kiểm tra mã nhân viên và xác minh chưa tồn tại phiếu chấm công trong ngày trước khi COMMIT.
    9. them_phieu_cham_cong_theo_ngay: Dành cho quản trị viên thêm phiếu chấm công bổ sung cho nhân viên theo ngày chỉ định.
    10. xoa_phieu_cham_cong: Xóa phiếu chấm công theo mã phiếu cung cấp.
    11. huy_yeu_cau_ung_luong: Cho phép nhân viên hủy yêu cầu ứng lương nếu yêu cầu đang ở trạng thái "Chờ phê duyệt"; từ chối hủy nếu trạng thái đã là "Đã phê duyệt" hoặc "Từ chối".
    12. huy_yeu_cau_nghi_phep: Cho phép nhân viên hủy yêu cầu nghỉ phép khi trạng thái còn là "Chờ phê duyệt".
    13. SP_XULYEUCAUNGHIPHEP: Quản trị viên phê duyệt hoặc từ chối đơn nghỉ phép. Nếu duyệt (flag = 1), trạng thái chuyển sang "Đã phê duyệt" và tự động tạo các phiếu chấm công cho số ngày nghỉ tương ứng.
    14. SP_XULYEUCAUUNGLUONG: Quản trị viên xử lý yêu cầu ứng lương (flag = 1 là phê duyệt, flag = 0 là từ chối).
    15. ADD_BANGLUONG: Thêm bản ghi bảng lương hàng tháng cho nhân viên với các tham số: mã nhân viên, năm, tháng, tổng tiền ứng, lương thực lãnh; mã bảng lương tự tăng bắt đầu từ 0.
  • Danh sách 2 Functions:

    1. Tim_MaNV: Nhận vào tên tài khoản (p_TENTK), trả về mã nhân viên tương ứng (MANV).
    2. tong_yeu_cau_ung_luong_trong_thang: Tính tổng số yêu cầu ứng lương đã được phê duyệt của một nhân viên trong phạm vi một tháng.
  • Danh sách 4 Triggers:

    1. trg_after_insert_nhanvien (After Insert trên NHANVIEN): Tự động tạo bản ghi tài khoản người dùng trong bảng TAIKHOAN. Nếu nhân viên giữ chức vụ "Trưởng phòng" thuộc phòng ban "Kế toán" hoặc "Nhân sự", trigger tự động tạo thêm một tài khoản quản trị với hậu tố "AD".
    2. trg_update_taikhoan (Update trên NHANVIEN): Xử lý biến động chức vụ. Nếu nhân viên thôi giữ chức "Trưởng phòng", hệ thống tự động xóa dữ liệu liên quan tại các bảng PHIEUCHAMCONG, YEUCAUNGHIPHEP, YEUCAUUNGLUONG, TAIKHOAN, TRUONGPHONG. Nếu được bổ nhiệm làm "Trưởng phòng" Kế toán hoặc Nhân sự, trigger tạo tài khoản quản trị mới và cập nhật bảng TRUONGPHONG.
    3. prevent_delete_phongban (Before Delete trên PHONGBAN): Ngăn chặn thao tác xóa phòng ban nếu còn bản ghi nhân viên hoặc trưởng phòng đang liên kết.
    4. TRG_CHECK_BANGLUONG (Before Insert trên BANGLUONG): Kiểm tra tính duy nhất của bảng lương, ngăn chặn việc tạo trùng lặp bảng lương cho cùng một nhân viên trong cùng một tháng và năm.

CHƯƠNG 3 : XỬ LÝ ĐỒNG THỜI

Chương 3 tổng hợp lý thuyết và các nguyên lý điều khiển giao tác trên hệ quản trị cơ sở dữ liệu Oracle:

  • Đặc điểm giao tác trong Oracle: Định nghĩa giao tác là đơn vị thao tác luận lý. Giao tác bắt đầu từ câu lệnh SQL đầu tiên và kết thúc khi gặp COMMIT, ROLLBACK, thực thi lệnh DDL (CREATE, DROP, ALTER), ngắt kết nối bình thường (tự động commit) hoặc ngắt kết nối bất thường (tự động rollback).
  • Các câu lệnh kiểm soát: Hướng dẫn sử dụng SAVEPOINT để thiết lập điểm phục hồi cục bộ, lệnh SET TRANSACTION để thiết lập thuộc tính mức độ cô lập (READ COMMITTED, SERIALIZABLE) hoặc chế độ truy cập (READ ONLY, READ WRITE), và lệnh SET AUTOCOMMIT (ON/OFF).
  • Các dị thường đồng thời: Phân tích bản chất của hai hiện tượng xung đột dữ liệu kinh điển:
    • Mất dữ liệu cập nhật (Lost Update): Xảy ra khi nhiều giao tác cùng đọc và ghi đè lên một đơn vị dữ liệu, khiến kết quả của giao tác trước bị mất.
    • Đọc dữ liệu chưa commit (Dirty Read / Uncommitted data): Xảy ra khi một giao tác đọc dữ liệu đang trong quá trình sửa đổi của giao tác khác chưa được xác nhận, dẫn đến việc xử lý trên dữ liệu rác nếu giao tác kia bị rollback.

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

Đồ án đã đạt được các kết quả kỹ thuật cụ thể theo đúng mục tiêu thiết kế:

  • Hoàn thiện mô hình cơ sở dữ liệu gồm 8 thực thể quan hệ có cấu trúc chuẩn hóa, bao phủ đầy đủ các đối tượng quản lý: nhân sự, tài khoản, cơ cấu tổ chức, chấm công, nghỉ phép, ứng lương và bảng lương.
  • Thiết lập và bảo đảm tính toàn vẹn thông qua 13 ràng buộc toàn vẹn liên thuộc tính và liên quan hệ.
  • Xây dựng thành công 15 thủ tục lưu trữ, 2 hàm và 4 trigger bằng PL/SQL, tự động hóa các khâu:
    • Kiểm tra điều kiện tuổi lao động ($\ge 18$) và tính duy nhất của số CCCD.
    • Tự động sinh tài khoản người dùng và tài khoản quản trị ("AD") dựa trên chức vụ và phòng ban.
    • Tự động quy đổi ngày nghỉ phép được phê duyệt thành dữ liệu chấm công.
    • Kiểm soát giới hạn ứng lương không quá 2 lần/tháng và tính lương thực lãnh chính xác theo ngày công và hệ số.
  • Phân tích rõ ràng cơ chế quản lý giao tác và các kỹ thuật thiết lập mức cô lập để kiểm soát hiện tượng Lost Update và Dirty Read trên Oracle RDBMS.

Về mặt đóng góp, đồ án đã chuyển đổi thành công các quy tắc nghiệp vụ quản lý nhân sự thành hệ thống logic xử lý tập trung tại tầng cơ sở dữ liệu, giúp giảm thiểu sự phụ thuộc vào mã nguồn ứng dụng phía ngoài và đảm bảo dữ liệu luôn nhất quán.


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

Dựa trên phạm vi và nội dung của báo cáo đồ án, các hạn chế và hướng mở rộng được ghi nhận như sau:

  • Hạn chế:
    • Đề tài chủ yếu tập trung vào việc thiết kế mô hình dữ liệu, viết thủ tục lưu trữ và trigger xử lý trên hệ quản trị Oracle; chưa trình bày việc xây dựng giao diện ứng dụng hoàn chỉnh cho người dùng cuối.
    • Báo cáo chưa cung cấp các số liệu thực nghiệm định lượng về thời gian phản hồi, tải đồng thời hoặc kiểm thử hiệu năng chi tiết trên các tập dữ liệu lớn.
  • Hướng nghiên cứu tiếp:
    • Tích hợp hệ thống cơ sở dữ liệu với ứng dụng di động hoặc ứng dụng web hoàn chỉnh phục vụ chấm công trực tuyến và tra cứu bảng lương.
    • Mở rộng các nghiệp vụ nhân sự nâng cao như quản lý ca kíp phức tạp, tính lương làm thêm giờ (overtime), bảo hiểm xã hội và thuế thu nhập cá nhân.
    • Thực hiện các bài kiểm thử hiệu năng giao tác tải cao và tối ưu hóa câu truy vấn, chỉ mục (Index) trên cơ sở dữ liệu Oracle.

Giá trị tham khảo

Tài liệu đồ án mang lại giá trị tham khảo thiết thực cho:

  • Sinh viên ngành Hệ thống Thông tin, Công nghệ Thông tin, Kỹ thuật Phần mềm: Dùng làm tài liệu tham khảo mẫu cho đồ án môn học Cơ sở dữ liệu và Hệ quản trị Cơ sở dữ liệu.
  • Người thiết kế và phát triển cơ sở dữ liệu: Học hỏi phương pháp thiết kế lược đồ quan hệ, kỹ thuật xây dựng ma trận tầm ảnh hưởng cho ràng buộc toàn vẹn, cũng như cách tổ chức trigger tự động phân quyền tài khoản và xử lý đơn từ bằng Oracle PL/SQL.
  • Nội dung đáng tham khảo nhất: Thiết kế chi tiết của 4 Trigger nghiệp vụ (trg_after_insert_nhanvien, trg_update_taikhoan, prevent_delete_phongban, TRG_CHECK_BANGLUONG) và thuật toán xử lý đơn từ tự động trong SP_XULYEUCAUNGHIPHEP.

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

1. Công thức tính lương thực lãnh hàng tháng của nhân viên được thiết kế như thế nào?
Tiền lương thực lãnh được tính theo công thức: $\text{Lương thực lãnh} = (\text{Lương theo ngày} \times \text{Số ngày làm việc}) - \text{Tổng tiền đã ứng}$. Trong đó, lương theo ngày được xác định bằng công thức: $\text{Lương theo ngày} = (\text{Lương cơ bản} \times \text{Hệ số}) / 25$.

2. Quy tắc và giới hạn đối với yêu cầu ứng lương của nhân viên là gì?
Mỗi nhân viên chỉ được gửi tối đa 2 yêu cầu ứng lương trong một tháng (được kiểm tra qua hàm tong_yeu_cau_ung_luong_trong_thang). Nhân viên có thể chủ động hủy yêu cầu ứng lương nếu yêu cầu đang ở trạng thái "Chờ phê duyệt"; nếu đã được phê duyệt hoặc bị từ chối thì không được phép hủy.

3. Trigger trg_after_insert_nhanvien thực hiện những hành động tự động nào khi thêm nhân viên mới?
Khi một nhân viên mới được thêm vào bảng NHANVIEN, trigger này sẽ tự động tạo một tài khoản người dùng trong bảng TAIKHOAN. Nếu nhân viên đó có chức vụ là "Trưởng phòng" và trực thuộc phòng ban "Kế toán" hoặc "Nhân sự", trigger sẽ tự động tạo thêm một tài khoản quản trị bổ sung với tên tài khoản có hậu tố "AD".

4. Khi quản trị viên phê duyệt đơn xin nghỉ phép, hệ thống tự động xử lý như thế nào?
Thông qua thủ tục SP_XULYEUCAUNGHIPHEP, khi quản trị viên phê duyệt đơn (flag = 1), trạng thái của yêu cầu chuyển thành "Đã phê duyệt", đồng thời hệ thống tự động thêm các bản ghi phiếu chấm công tương ứng với số lượng ngày nghỉ của nhân viên để ghi nhận là ngày nghỉ hưởng lương.

5. Trigger prevent_delete_phongban ngăn chặn việc xóa phòng ban trong trường hợp nào?
Trigger này kiểm tra dữ liệu trước khi xóa một bản ghi trong bảng PHONGBAN. Nếu phòng ban dự định xóa vẫn còn liên kết với các bản ghi nhân viên trong bảng NHANVIEN hoặc có trưởng phòng trong bảng TRUONGPHONG, trigger sẽ kích hoạt lỗi để ngăn chặn thao tác xóa nhằm đảm bảo toàn vẹn dữ liệu.


Kết luận

Đồ án "Xây dựng hệ thống quản lý nhân sự, chấm công, tính lương" của nhóm sinh viên Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM đã hoàn thiện việc phân tích, thiết kế mô hình dữ liệu quan hệ gồm 8 thực thể và 13 ràng buộc toàn vẹn. Bằng việc ứng dụng ngôn ngữ PL/SQL trên nền tảng Oracle RDBMS, đề tài đã hiện thực hóa 15 thủ tục lưu trữ, 2 hàm tính toán và 4 trigger tự động hóa hiệu quả các nghiệp vụ nhân sự, chấm công và tiền lương. Công trình là tài liệu tham khảo học thuật hữu ích cho sinh viên chuyên ngành Công nghệ Thông tin trong việc nghiên cứu và thực hành thiết kế cơ sở dữ liệu quan hệ nâng cao.