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ế
- 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.
- 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_hour
và end_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 | | 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_holiday
và is_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_holiday
và is_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.