Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Mô hình dữ liệu bảng lương

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ảo job_title bảng.
  • department_id - Tham khảo department bảng.
  • gender_id - Tham khảo gender bảng.
  • address - Địa chỉ của nhân viên.
  • city_id - Tham khảo city 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_iddepartment_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_historydepartment_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 đến employee 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ảo job_title bảng.
  • employee_id - Tham chiếu đến employee 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_idstart_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ảo department bảng.
  • employee_id - Tham chiếu đến employee 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_idstart_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ảo country 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 đến employee 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 đến employee 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ảo working_hours_log bảng.
  • adjustment_id - Tham khảo adjustment bảng.
  • salary_payment_id - Tham khảo salary_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ảo salary_payment bảng.
  • adjustment_id - Tham khảo adjustment 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 , adjustmentadjustment_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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đo hiệu suất cơ sở dữ liệu dưới áp suất

  2. Đại số quan hệ

  3. SQL là gì và làm thế nào để bắt đầu với nó?

  4. Mô hình dữ liệu giao hàng tại nhà hàng

  5. Gấu trúc:Cách đọc và ghi tệp