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

Mô hình Cơ sở dữ liệu cho Hệ thống Đặt chỗ của Trường Lái xe. Phần 2

Hãy xây dựng các thay đổi hơn nữa đối với mô hình dữ liệu mà tôi đã tạo trong bài đăng blog trước đó của mình, chẳng hạn như có một phương pháp tự động để chỉ định một người hướng dẫn và phương tiện cho một bài học, lập hóa đơn cho khách hàng và theo dõi họ.

Trước hết, tôi cần xây dựng logic ở phía ứng dụng để chỉ định một người hướng dẫn và phương tiện cho các bài học trước khi chúng thực sự diễn ra. Điều chính cần đảm bảo ở đây là tính khả dụng, tức là chỉ có thể chỉ định một người hướng dẫn hoặc phương tiện cho một bài học nếu cả hai người đều có mặt vào thời gian đã định của bài học.

Tôi cần tạo hai bảng riêng biệt để theo dõi sức chứa của người hướng dẫn và phương tiện tương ứng. Bạn có thể thắc mắc tại sao tôi lại có ý định theo dõi công suất thuê thay vì tính khả dụng. Câu trả lời là, nếu chúng ta theo dõi việc sử dụng thay vì tính khả dụng, thì chúng ta không cần tạo thêm bảng để lưu trữ lượng tài nguyên không có sẵn do người hướng dẫn nghỉ phép hoặc một số dịch vụ theo lịch trình dành cho xe cộ. Trong trường hợp không có sẵn theo kế hoạch, các bản ghi sẽ được đưa vào bảng công suất tương ứng.

Ở đây tôi đang đưa ra một giả định rằng giáo viên hướng dẫn và phương tiện chỉ có sẵn trong giờ làm việc, chẳng hạn như 8 giờ sáng đến 6 giờ chiều, vào các ngày làm việc do trường xác định. Do đó, tôi có thể nói rằng một người hướng dẫn có mặt trong một thời gian cụ thể vào một ngày làm việc nếu tôi không tìm thấy chi tiết về số lượng người của giáo viên đó cho thời gian và ngày được chỉ định trong staff_occupancy bảng.

Cấu trúc cho bảng staff_occupancy như sau:

Một số biến thể có thể được đưa vào khi cần thiết. Ví dụ:phải có khoảng cách ít nhất 15 phút giữa hai bài học tiếp theo cho một người hướng dẫn.

Cấu trúc cho bảng vehicle_occupancy như sau:

Việc phân bổ người hướng dẫn và phương tiện được ghi trong reservation bàn. Tôi đã thêm hai cột, staff_idvehicle_id , vào bảng này. Những phân bổ này rõ ràng sẽ xảy ra dựa trên tính sẵn có của chúng.

Ngoài ra, tôi sẽ giữ lại reservation_id trong staff_occupancyvehicle_occupancy bảng, để trong trường hợp hủy bài học, có thể dễ dàng giải phóng số lượng nhân viên và phương tiện có liên quan. Nhưng tôi sẽ giữ cả hai cột này là nullable như việc sử dụng người hướng dẫn và phương tiện sẽ không nhất thiết là do đặt trước. Điều gì sẽ xảy ra nếu một người hướng dẫn nghỉ việc? Hay một trong những phương tiện đi vào trung tâm dịch vụ trong một ngày?

Để cho phép xóa mềm trong các trường hợp như vậy, tôi sẽ thêm một cột có tên là is_active trong cả hai bảng này.

Lập hóa đơn

Đối với yêu cầu lập hóa đơn, tôi sẽ tạo một bảng, đó là invoice , để giữ các chi tiết lập hóa đơn bao gồm customer_idreservation_id . Ở đây, việc lập hóa đơn được thực hiện cho khách hàng nhưng dựa trên các bài học đã thực hiện cho khách hàng. Do đó, chúng tôi cần reservation_id trong bảng hóa đơn, để tại bất kỳ thời điểm nhất định nào, người ta có thể lấy một báo cáo về việc lập hóa đơn chi tiết dựa trên việc đặt trước cho một khách hàng. Tôi cũng sẽ tạo một cột, đó là invoice_status_id , trong bảng lưu trữ trạng thái của hóa đơn.

Mô hình cơ sở dữ liệu

Đây là cấu trúc cơ sở dữ liệu cập nhật được thiết kế trong Vertabelo:



Kết luận

Đến đây chắc hẳn bạn đã bắt đầu tin rằng việc lập mô hình dữ liệu cho hệ thống đặt chỗ của một trường dạy lái xe cũng thú vị và hấp dẫn như việc học lái xe?

Vui lòng gửi câu hỏi và đề xuất của bạn về bài viết. Tôi rất sẵn lòng trả lời chúng và kết hợp các đề xuất của bạn vào bài viết tiếp theo của tôi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cơ sở dữ liệu là gì? Và một DBMS?

  2. Thực hiện kiểm toán thay đổi dữ liệu bằng bảng tạm thời

  3. Đặt hàng có điều kiện bởi

  4. Xung đột khóa, chặn và cập nhật khóa ngoại

  5. Python:Truy vấn dữ liệu bằng âm thanh