Mô hình dữ liệu bảng lương cho phép bạn dễ dàng tính toán tiền lương của nhân viên. Mô hình này hoạt động như thế nào?
Bất kể bạn đang điều hành một công ty nhỏ hay lớn, bạn cần một số loại giải pháp trả lương. Đó là lúc một ứng dụng trả lương có ích. Thêm vào đó, công ty càng lớn, việc tính toán tiền lương của nhân viên càng khó khăn hơn; ở đây, một ứng dụng trả lương trở thành một điều cần thiết. Để giúp bạn hiểu tất cả dữ liệu cần thiết cho một ứng dụng như vậy, chúng tôi sẽ hướng dẫn bạn qua mô hình dữ liệu liên quan.
Hãy xem mô hình dữ liệu bảng lương của chúng tôi hoạt động như thế nào!
Mô hình dữ liệu
Với việc tạo mô hình dữ liệu này, tôi đã cố gắng tạo ra một mô hình có thể áp dụng chung cho mọi doanh nghiệp. Tất nhiên, sẽ luôn có sự khác biệt trong các quy định, chính sách của công ty, v.v. sẽ yêu cầu mô hình được tùy chỉnh để đáp ứng nhu cầu của một bảng lương cụ thể. Tuy nhiên, các nguyên tắc được đưa ra trong mô hình này phải phù hợp với hầu hết các tổ chức.
Cần lưu ý rằng mô hình này được tạo ra với một số giả định:
- Mức lương theo thỏa thuận trong hợp đồng lao động là mỗi năm.
- Lương ròng (tức là với một số khoản nhất định được khấu trừ thuế, v.v.) được trả cho nhân viên.
- Lương được trả hàng tháng.
Mô hình dữ liệu bao gồm mười bốn bảng và được chia thành hai lĩnh vực chủ đề:
-
Employees
-
Salaries
Để hiểu rõ hơn về mô hình, cần phải tìm hiểu kỹ từng lĩnh vực chủ đề.
Nhân viên
Khu vực chủ đề này chứa thông tin chi tiết về nhân viên. Nó bao gồm chín bảng:
-
employee
-
employment_terms
-
job_title
-
job_title_history
-
department
-
department_history
-
city
-
country
-
gender
Bảng đầu tiên chúng ta sẽ xem xét là employee
bàn. Nó chứa danh sách tất cả nhân viên và các chi tiết liên quan của họ. Các thuộc tính của bảng là:
-
id
- Một ID duy nhất cho mỗi nhân viên. -
first_name
- Tên của nhân viên. -
last_name
- Họ của nhân viên. -
job_title_id
- Tham khảojob_title
bảng. -
department_id
- Tham khảodepartment
bảng. -
gender_id
- Tham khảogender
bảng. -
address
- Địa chỉ của nhân viên. -
city_id
- Tham khảocity
bảng. -
email
- Email của nhân viên. -
employment_start
- Ngày bắt đầu làm việc của người này.
Lưu ý rằng các cột job_title_id
và department_id
là thừa, vì thông tin về chức danh công việc và phòng ban hiện tại có thể được truy cập từ job_title_history
và department_history
những cái bàn. Tuy nhiên, chúng tôi sẽ giữ hai cột này trong bảng này để truy cập thông tin nhanh hơn.
Sau đây là employment_terms
bàn. Nó lưu trữ dữ liệu về mức lương của từng nhân viên, theo thỏa thuận trong hợp đồng lao động và mức lương đã thay đổi như thế nào theo thời gian. Các thuộc tính của bảng là:
-
id
- Một ID duy nhất cho mỗi nhóm điều khoản tuyển dụng. -
employee_id
- Tham chiếu đếnemployee
bảng. -
agreed_salary
- Mức lương ghi trong hợp đồng lao động. -
salary_start_date
- Ngày bắt đầu nhận lương theo thỏa thuận. -
salary_end_date
- Ngày kết thúc lương theo thỏa thuận. Điều này có thể là KHÔNG ĐỦ vì tiền lương có thể không có sự thay đổi theo kế hoạch.
job_title
bảng là danh sách các chức danh có thể được giao cho các nhân viên khác nhau của công ty, ví dụ:nhà phân tích, lái xe, thư ký, giám đốc, v.v. Bảng có các thuộc tính sau:
-
id
- Một ID duy nhất cho mỗi chức danh. -
job_title
- Tên của chức danh công việc. Đây là chìa khóa thay thế.
Chúng tôi cũng cần một bảng để lưu trữ lịch sử chức danh của mỗi nhân viên. Chúng tôi cần điều này vì nhân viên có thể được thăng chức, hạ cấp hoặc tái bổ nhiệm trong công ty. job_title_history
bảng sẽ quản lý thông tin này và sẽ bao gồm các thuộc tính sau:
-
id
- Một ID duy nhất cho mục nhập lịch sử chức danh công việc. -
job_title_id
- Tham khảojob_title
bảng. -
employee_id
- Tham chiếu đếnemployee
bảng. -
start_date
- Ngày nhân viên giữ chức danh đó lần đầu tiên. -
end_date
- Khi người lao động thôi giữ chức danh đó. Điều này có thể là KHÔNG vì nhân viên hiện có thể đang giữ chức danh đó.
Sự kết hợp của job_title_id
, employee_id
và start_date
là khóa thay thế cho bảng trên. Một nhân viên chỉ có thể được giao một chức danh vào bất kỳ ngày nào đã định.
Bảng tiếp theo là department
bàn. Điều này sẽ chỉ liệt kê tất cả các phòng ban của công ty, chẳng hạn như CNTT, Kế toán, Pháp lý, v.v. Nó chứa hai thuộc tính:
-
id
- Một ID duy nhất cho từng bộ phận. -
department_name
- Tên của từng bộ phận. Đây là chìa khóa thay thế.
Nhân viên cũng có thể thay đổi các phòng ban trong công ty. Do đó, chúng ta cần có department_history
bàn. Bảng này sẽ lưu trữ những thứ sau:
-
id
- Một ID duy nhất cho mục nhập lịch sử của bộ phận đó. -
department_id
- Tham khảodepartment
bảng. -
employee_id
- Tham chiếu đếnemployee
bảng. -
start_date
- Ngày một nhân viên bắt đầu làm việc trong một bộ phận. -
end_date
- Ngày một nhân viên ngừng làm việc trong bộ phận đó. Điều này có thể là KHÔNG ĐỦ vì nhân viên có thể vẫn làm việc ở đó.
Sự kết hợp của department_id
, employee_id
và start_date
là chìa khóa thay thế. Một nhân viên chỉ có thể làm việc trong một bộ phận tại một thời điểm.
Bảng tiếp theo chúng ta sẽ nói đến là city
bàn. Đây là danh sách tất cả các thành phố có liên quan. Nó có các thuộc tính sau:
-
id
- Một ID duy nhất cho mỗi thành phố. -
city_name
- Tên của thành phố. -
country_id
- Tham khảocountry
bảng.
country
bảng tiếp theo trong mô hình của chúng tôi. Nó chỉ đơn giản là một danh sách các quốc gia và nó chứa các thông tin sau:
-
id
- Một ID duy nhất cho mọi quốc gia. -
country_name
- Tên quốc gia. Đây là chìa khóa thay thế.
Bảng cuối cùng trong chủ đề này là gender
bàn. Bảng này liệt kê tất cả các giới tính. Nó chứa các thuộc tính sau:
-
id
- Một ID duy nhất cho mọi giới tính. -
gender_name
- Tên giới tính.
Bây giờ chúng ta hãy phân tích lĩnh vực chủ đề thứ hai.
Tiền lương
Phần chủ đề này bao gồm các bảng chứa tất cả các dữ liệu ảnh hưởng trực tiếp đến việc tính lương cho mọi thời kỳ cũng như số tiền phải trả. Nó bao gồm năm bảng:
-
salary_payment
-
working_hours_log
-
working_hours_adjustment
-
adjustment
-
adjustment_amount
Bây giờ chúng ta hãy xem xét từng bảng.
Bảng đầu tiên là salary_payment
. Nó chứa tất cả các chi tiết liên quan về mức lương được trả cho từng nhân viên và có các thuộc tính sau:
-
id
- Một ID duy nhất cho mỗi mức lương. -
employee_id
- Tham chiếu đếnemployee
bảng. -
gross_salary
- Mức lương gộp, sẽ là cơ sở để điều chỉnh thêm. -
net_salary
- Tiền lương ròng (tức là số tiền nhân viên nhận được sau khi thực hiện các khoản khấu trừ khác nhau). -
salary_period
- Thời gian tính và trả lương.
Thứ hai là working_hours_log
bàn. Nó chứa dữ liệu về số giờ làm việc của mỗi nhân viên, có thể ảnh hưởng đến việc điều chỉnh lương nhất định. Bảng này có các thuộc tính sau:
-
id
- Một ID duy nhất cho mọi mục nhập nhật ký. -
employee_id
- Tham chiếu đếnemployee
bảng. -
start_time
- Thời điểm nhân viên đăng nhập, tức là bắt đầu làm việc trong ngày. -
end_time
- Khi nhân viên đăng xuất. Nó có thể là NULL vì chúng tôi sẽ không biết thời gian chính xác cho đến khi nhân viên đăng xuất.
Bảng tiếp theo chúng ta sẽ phân tích là working_hours_adjustment
. Bảng này sẽ chỉ được sử dụng để tính toán các điều chỉnh dựa trên số giờ đã làm việc, tức là những điều chỉnh có giá trị TRUE trong is_working_hours_adjustment
trong adjustment
bàn. Các thuộc tính như sau:
-
id
- Một ID duy nhất cho mọi điều chỉnh. -
working_hours_log_id
- Tham khảoworking_hours_log
bảng. -
adjustment_id
- Tham khảoadjustment
bảng. -
salary_payment_id
- Tham khảosalary_payment
bàn. Giá trị này có thể là NULL vìsalary_payment_id
sẽ chỉ được sử dụng mỗi tháng một lần khi chúng tôi bắt đầu tính lương. -
adjustment_amount
- Số lượng điều chỉnh. -
adjustment_percentage
- Số lượng phần trăm của việc điều chỉnh. Điều này sẽ được sử dụng cho các mục đích lịch sử vì tỷ lệ phần trăm có thể thay đổi theo thời gian.
Bảng tiếp theo chúng ta sẽ nói về adjustment
bàn. Nó chứa thông tin về tất cả các điều chỉnh được sử dụng để tính lương, có nghĩa là tất cả các khoản thuế và các khoản đóng góp có ảnh hưởng đến số tiền lương. Ngoài ra, nó sẽ bao gồm tất cả các điều chỉnh phụ thuộc vào số giờ làm việc và không làm việc, chẳng hạn như tiền thưởng, làm thêm giờ, nghỉ ốm và nghỉ thai sản / thai sản. Để làm được điều đó, chúng tôi cần dữ liệu sau:
-
id
- Một ID duy nhất cho mỗi lần điều chỉnh. -
adjustment_name
- Tên mô tả sự điều chỉnh đó. -
adjustment_percentage
- Số lượng phần trăm của điều chỉnh cụ thể. -
is_working_hours_adjustment
- Đây là dấu cờ nếu việc điều chỉnh phụ thuộc trực tiếp vào giờ làm việc, ví dụ:làm thêm giờ, nghỉ ốm, v.v. -
is_other_adjustment
- Đây là cờ đánh dấu các điều chỉnh không phụ thuộc trực tiếp vào số giờ làm việc, chẳng hạn như khấu trừ thuế, đóng góp an sinh xã hội, đóng góp của người sử dụng lao động, v.v.
Sau đó, chúng tôi cần adjustment_amount
bàn. Nó sẽ được sử dụng để tính toán tất cả các điều chỉnh lương ngoại trừ những điều chỉnh đã có trong working_hours_adjustment
, tức là những giá trị có giá trị TRUE trong is_other_adjustment
trong adjustment
bàn. Bảng chứa các thuộc tính sau:
-
id
- Một ID duy nhất cho mỗi mục nhập số tiền điều chỉnh. -
salary_payment_id
- Tham khảosalary_payment
bảng. -
adjustment_id
- Tham khảoadjustment
bảng. -
adjustment_amount
- Số tiền của mỗi lần điều chỉnh được tính toán. -
adjustment_percentage
- Số lượng phần trăm của việc điều chỉnh. Nó sẽ được sử dụng cho các mục đích lịch sử vì tỷ lệ phần trăm có thể thay đổi theo thời gian.
Hãy để tôi cung cấp cho bạn một ví dụ về cách các bảng working_hours_log
, working_hours_adjustment
, adjustment
và adjustment_amount
cùng làm để tính lương. Mỗi ngày, nhân viên ghi nhật ký khi họ đến nơi làm việc và khi họ rời đi. Dữ liệu này có thể được xem trong working_hours_log
bàn. Giả sử nhân viên của chúng tôi đã làm thêm 10 giờ trong một tháng và theo chính sách của công ty, anh ta hoặc cô ta sẽ được trả thêm 20% mỗi giờ cho mỗi giờ làm thêm. Bằng cách tham chiếu adjustment
, chúng tôi sẽ có thể tìm thấy mức điều chỉnh bắt buộc, tức là thời gian làm thêm giờ, sẽ có một số phần trăm nhất định (20%). Chúng tôi cũng sẽ có is_working_hours_adjustment
đặt thành TRUE. Bằng cách sử dụng dữ liệu từ hai bảng đó, chúng tôi sẽ có thể tính toán điều chỉnh và lưu trữ nó trong working_hours_adjustment
bàn.
Giờ đây, chúng tôi có thể tính toán tất cả các điều chỉnh khác mà không phụ thuộc vào giờ làm việc. Điều này sẽ được thực hiện trong adjustment_amount
bàn. Cũng như chúng tôi đã làm ở trên, chúng tôi sẽ tham chiếu đến adjustment
bảng và tìm những điều chỉnh mà chúng tôi cần - ví dụ:khấu trừ thuế, đóng góp an sinh xã hội, hoặc đóng góp của người sử dụng lao động - và tỷ lệ phần trăm liên quan của chúng. is_other_adjustment
gắn cờ trong adjustment
bảng sẽ được đặt thành TRUE cho những điều chỉnh này.
Dựa trên những tính toán đó, chúng tôi có thể lưu trữ dữ liệu tiền lương tổng và tiền lương ròng trong salary_payment
bàn.
Bằng cách xem qua ví dụ này, chúng tôi đã đề cập đến mọi thứ trong mô hình dữ liệu của mình!
Bạn có thích Mô hình Dữ liệu Bảng lương không?
Tôi đã cố gắng tạo ra một mô hình có thể được sử dụng trong hầu hết các tình huống. Tuy nhiên, không thể bao gồm tất cả các thông số cụ thể ảnh hưởng đến việc tính lương trong một bài báo có độ dài này. Bằng cách đề cập đến các nguyên tắc chung, tôi đã cố gắng làm cho mô hình này trở nên hữu ích làm cơ sở vững chắc cho mô hình dữ liệu bảng lương của bạn.
Bạn nghĩ gì về mô hình dữ liệu bảng lương? Nó có thể áp dụng như một giải pháp cho nhu cầu trả lương của bạn không? Bạn đã nghĩ ra điều gì đó khác biệt chưa? Có vấn đề cụ thể nào mà bạn phát hiện sẽ thay đổi đáng kể mô hình dữ liệu không? Có tiếng nói của bạn trong phần bình luận.