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

Cho thuê ô tô cũng đơn giản như lái xe:Mô hình dữ liệu cho công ty cho thuê ô tô

Bạn có thể đã thuê một chiếc xe hơi vào kỳ nghỉ cuối cùng của mình. Bạn đặt xe trực tuyến và sau đó nhận xe từ địa điểm được chỉ định sau khi thanh toán tất cả các khoản phí đã thỏa thuận trước đó. Sau khi hoàn tất, bạn trả lại cho đại lý và có lẽ phải trả thêm một số khoản phí. Bạn đã bao giờ nghĩ về hệ thống làm cho tất cả những điều này xảy ra? Trong bài viết này, chúng ta sẽ xem xét mô hình dữ liệu cho hệ thống cho thuê ô tô.

Tại sao nên xây dựng một mô hình dữ liệu cho thuê ô tô khác?

Tôi muốn thiết kế một mô hình dữ liệu của một hệ thống đầy đủ chức năng cho một công ty cho thuê ô tô quốc tế. Công ty nhận cho thuê xe ở nhiều phân khúc khác nhau (mini, phổ thông, trung cấp, SUV, chở hàng và limousine). Nó điều hành các hoạt động của mình từ các thành phố khác nhau trên nhiều quốc gia. Công ty cho phép khách hàng của họ thuê xe từ một địa điểm (địa điểm đón khách) và trả xe ở một địa điểm khác (địa điểm trả khách).

Tại thời điểm này, hãy tham khảo một bài viết trước đó giải thích mô hình công ty cho thuê xe hơi đơn giản. Mô hình này phục vụ cho tất cả các dịch vụ cơ bản được cung cấp bởi một công ty cho thuê xe hơi.




Trước khi chúng tôi thêm các chức năng mới, tôi muốn kết hợp một số thay đổi nhỏ vào mô hình này, cụ thể là:

  • Thêm city dưới dạng một cột trong location bảng và xóa hoàn toàn bảng thành phố.
  • Thêm một cột bổ sung, zip (như trong mã ZIP hoặc mã bưu điện), ở location bàn. Hệ thống này sẽ xác định địa điểm đón / trả khách bằng mã ZIP của nó. Có nhiều quốc gia nơi mã ZIP là một số gồm cả chữ và số, vì vậy tôi sẽ giữ cột này dưới dạng cột varchar.

  • Thêm driving license issue date cho customer bàn. Có một số quốc gia nơi giới hạn tốc độ tối đa phụ thuộc vào thời điểm giấy phép được cấp cho người lái xe.

  • Đổi tên category bảng thành car_category , mô tả nội dung của nó chính xác hơn.
  • Lưu trữ thông tin chuyến bay của khách hàng nếu địa điểm đón khách gần sân bay. Điều này cho phép hệ thống thực hiện các thay đổi thích hợp đối với yêu cầu đặt chỗ của khách hàng trong trường hợp chuyến bay bị hoãn hoặc hủy. Để thực hiện việc này, tôi thêm một bảng khác có tên flight_detail và kết nối nó với reservation bảng.

Thêm thông tin hóa đơn của khách hàng

Để lập hóa đơn, chúng tôi cần lưu trữ giá trị cho thuê cho từng hạng mục hàng tồn kho, bao gồm cả ô tô và thiết bị. Chi phí thuê được chỉ định cho từng loại, vì quy trình đặt trước xử lý các loại chứ không phải ô tô riêng lẻ.

Hãy để tôi thêm rental_value trong car_categoryequipment_category những cái bàn.

Trên các dòng tương tự, phải có một số chi phí liên quan đến bảo hiểm. Chi phí này được xác định bởi công ty bảo hiểm. Hiện tại, tôi sẽ thêm một cột nữa, chi phí, trong insurance bảng.

Để lập hóa đơn, tôi tạo một bảng riêng để lưu trữ tất cả các chi tiết hóa đơn. Bằng cách này, những chi tiết tương tự này có thể dễ dàng được truy xuất bất cứ khi nào cần. Vì việc tính toán các giá trị này hơi phức tạp, tôi sẽ không lặp lại chúng nhiều lần cho một hóa đơn. Tôi sẽ thêm một bảng, đó là rental_invoice , được kết nối chủ yếu với rental bàn.

rental_invoice bảng chứa các cột sau:

  • id - khóa chính của bảng này.
  • rental_id - khóa chính của rental bàn. Tôi sẽ thêm một ràng buộc duy nhất vào cột này:chỉ có thể có một bản ghi cho mỗi lần cho thuê.
  • car_rent - Cột này biểu thị chi phí thuê phương tiện được thuê.
  • Chi phí này có thể được xác định bằng cách sử dụng SQL sau:

    select a.rental_value from car_category a, car b, rental c
    where  c.car_id = b.car_id and b.category_id = a.id
    and c.id = ;
    

  • equipment_rent_total - Cột này hiển thị số tiền phải trả cho bất kỳ thiết bị nào khách hàng thuê
  • Tổng chi phí có thể được xác định bằng cách sử dụng SQL sau:

    select sum(a.rental_value) from equipment_category a, equipment b, car_equipment c, car d, rental e
    where  a.id = b.equipment_category_id and b.id = c.equipment_id
    and c.car_id = d.id and d.id = e.car_id 
    and e.id = ;
    

  • insurance_cost_total - Cột này dành cho tổng chi phí bảo hiểm của khách hàng. Điều này có thể được xác định bằng cách sử dụng SQL sau

    select sum(a.cost) from insurance a, rental_insurance b, rental c
    where a.id = b.insurance_id and b.rental_id = c.id 
    and c.id = ;
    

  • service_taxVAT - Như tên của chúng gợi ý, các cột này lưu trữ các giá trị cho thuế dịch vụ hiện hành và VAT.
  • total_amount_payable - Cột này sẽ ghi giá trị của tổng tiền hóa đơn. Đây sẽ là tổng các cột sau:

    total_amount_payable =car_rent + device_rent_total + Insurance_cost_total

  • waiver_amountnet_amount_payable - Các cột này lưu trữ giá trị cho số tiền từ bỏ (nếu có) và số tiền ròng đến hạn thanh toán. waiver_amount là bao nhiêu sẽ được miễn trong tổng số hóa đơn. Nó thường được sử dụng khi một công ty cho thuê giảm giá cho khách hàng. Công thức xác định net_amount_payable trông như thế này:

    net_amount_payable =total_amount_payable - Waiver_amount

Khoảng không quảng cáo trên thiết bị di động - Đối với một công ty cho thuê xe ô tô, hàng tồn kho của họ luôn di động vì nó đang di chuyển từ địa điểm này sang địa điểm khác. Nếu bạn nhận thấy hộp kiểm có nội dung "quay lại vị trí khác?" Khi bạn đặt xe trực tuyến, thì bạn đã thấy hộp kiểm đó đang hoạt động. Hệ thống xử lý yêu cầu của bạn hơi khác một chút nếu địa điểm trả hàng KHÔNG giống với địa điểm nhận hàng. Hệ thống luôn theo dõi hàng tồn kho của mình khi cho thuê và trả lại.

Ví dụ:một khách hàng thuê xe hơi từ Chicago, xác nhận rằng địa điểm trả khách sẽ khác và lái xe đến điểm đến của anh ta ở Saint Louis. Rõ ràng là anh ấy sẽ xuống xe tại địa điểm Saint Louis của công ty. Trong trường hợp này, ngay sau khi anh ta lái xe từ địa điểm Chicago, phần hành trang này không còn bị ràng buộc với văn phòng đó nữa. Chiếc xe sẽ được đăng ký lại, lần này là tại văn phòng Saint Louis, ngay sau khi anh ta hoàn thành việc này.

Để kết hợp cơ chế này, tôi sẽ thêm một cột, đó là current_location_id , trong car bảng cũng như equipment bàn. Cột này chỉ chứa các ID hợp lệ của các vị trí từ location bảng.

Vì vậy, với ví dụ trên, vị trí ban đầu của chiếc xe là Chicago; nó sẽ được cập nhật sau khi khách hàng trả xe cho điểm đến.

Thiết lập tùy chọn tiếp nhiên liệu

Hầu hết các công ty cho thuê xe hơi cung cấp các loại tùy chọn nhiên liệu sau:
  1. Nâng cao Dịch vụ Nhiên liệu - khách hàng trả trước cho một thùng nhiên liệu đầy và trả lại xe với một thùng rỗng.
  2. Phí Dịch vụ Nhiên liệu - khách hàng nhận xe với một bình nhiên liệu đầy nhưng trả tiền dựa trên mức sử dụng nhiên liệu.
  3. Tự Phục vụ Nhiên liệu - khách hàng nhận xe đầy bình và trả xe đầy bình. Đây là phương án được chấp nhận rộng rãi nhất trong ba phương án.

Ở đây, chúng tôi không quan tâm đến việc khách hàng chọn phương án nào. Điều chúng tôi muốn là đăng ký lựa chọn của họ trong khi xử lý yêu cầu thuê.

Để đáp ứng nhu cầu này, tôi sẽ thêm một bảng, fuel_option , lưu trữ tất cả các tùy chọn có thể để tiếp nhiên liệu cho xe. Phải có ánh xạ 1-1 giữa yêu cầu thuê và fuel_option , vì khách hàng được yêu cầu chọn một chiếc tại thời điểm đặt thuê.

Mô hình dữ liệu cho thuê ô tô cuối cùng




Ở nhiều khu vực, các công ty cho thuê xe hơi đang chuyển hướng sử dụng trải nghiệm thuê xe tự phục vụ không cần chìa khóa cho khách hàng của họ. Họ không muốn bắt khách hàng của mình phải đợi ở quầy chỉ để hoàn thành thủ tục giấy tờ và lấy chìa khóa xe. Mô hình dữ liệu hiện tại của chúng ta có thể đáp ứng các yêu cầu như vậy không? Những thay đổi nào là cần thiết trong mô hình dữ liệu của chúng tôi để điều đó xảy ra?

Bạn có suy nghĩ gì về mô hình dữ liệu cho thuê xe hơi của chúng tôi không? Hãy bắt đầu một cuộc thảo luận! Vui lòng chia sẻ ý kiến ​​đóng góp của bạn trong phần nhận xét.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thủ tục lưu trữ để nhận thông tin bảng cơ sở dữ liệu

  2. Cách viết các thủ tục được lưu trữ cho các báo cáo SSRS chuyên nghiệp

  3. Giới thiệu về Kích thước Thay đổi Từ từ (SCD)

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

  5. Cách cài đặt SQuirrel SQL Client