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

Cách lưu trữ lịch biểu của nhân viên trong cơ sở dữ liệu

Trình độ:Người mới bắt đầu

Vì vậy, nhiều tổ chức phải đối mặt với vấn đề chung là lưu trữ lịch trình của nhân viên. Dù ở cơ sở nào:công ty, trường đại học hay đơn giản là một cá nhân, nhiều thực thể đều cần ứng dụng để xem lịch trình. Do đó, tôi sẽ cố gắng đưa ra một mô hình cơ sở dữ liệu và sau đó, trong một bài viết tới, chúng ta sẽ nói về một ứng dụng đơn giản để lưu trữ lịch trình của nhân viên trong cơ sở dữ liệu.

Hiện tại thiết kế như sau:

Mô hình này khá đơn giản.

Mẹo - Các chiến lược chính tự nhiên và thay thế

  1. Sử dụng khóa chính thay thế bất cứ khi nào các giá trị trong khóa tự nhiên có thể thay đổi hoặc khi khóa tự nhiên quá phức tạp.
  2. Nếu một khóa ứng viên tự nhiên bao gồm một số lượng nhỏ cột (lý tưởng là chỉ một) và giá trị của nó không thay đổi - hãy sử dụng nó làm khóa chính tự nhiên

Tìm hiểu thêm về khóa chính tự nhiên và thay thế.

employee bảng chứa các thuộc tính cơ bản mô tả từng nhân viên, ví dụ:tên, họ, địa chỉ và số điện thoại. Tên và họ không xác định duy nhất mỗi bản ghi (có thể có nhiều người có cùng tên và họ), đó là lý do tại sao một cột mới được giới thiệu (id ), được gọi là khóa thay thế .

schedule bảng chứa ngày và giờ khi mỗi nhân viên làm việc. work_date chỉ định một ngày khi mỗi nhân viên làm việc. start_work_hourend_work_hour cột xác định giờ làm việc cho ngày đó.

Giả sử rằng chúng ta có một nhân viên tên là Peter. Anh ấy đã đi làm vào ngày 4 tháng 2 và anh ấy đánh dấu thời gian bắt đầu và kết thúc của mình trong lịch trình.

Hàng tương ứng trong schedule bảng trông như thế này:


id worker_id work_date start_work_hour end_work_hour is_holiday is_weekend
1 1 2015-02-04 10 16 0 0


Trong khi xây dựng một hệ thống như vậy, chúng tôi có thể muốn biết ai đã làm việc nhiều đêm nhất hoặc ai làm việc nhiều nhất vào cuối tuần / ngày lễ. Để tạo báo cáo chứa thông tin như vậy, các cột is_holidayis_weekend đã được giới thiệu.

Sử dụng cách tiếp cận này, bạn sẽ cần phải có một bảng riêng cho các ngày lễ có chứa các ngày nghỉ của công ty. Khi một nhân viên nhập thời gian làm việc của họ, các cột is_holidayis_weekend có thể được cập nhật bằng cách sử dụng một trình kích hoạt. Sau khi chèn ngày và giờ, trình kích hoạt sẽ kiểm tra xem ngày đó là ngày lễ hay cuối tuần và chèn giá trị chính xác vào trường.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Toán tử SQL HOẶC cho người mới bắt đầu

  2. FieldShield SDK

  3. Nén và ảnh hưởng của nó đối với hiệu suất

  4. Sao chép dữ liệu trong IRI Workbench

  5. Bộ xử lý AMD EPYC trong Máy ảo Azure