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

Xây dựng Mô hình Dữ liệu cho Hệ thống Quản lý Bãi đỗ xe

Nghiên cứu cho thấy rằng ô tô vẫn đậu trong vòng đời của chúng, cho thấy rằng hệ thống quản lý bãi đậu xe phải thông minh, hiệu quả và mạnh mẽ. Trong bài viết này, chúng tôi sẽ xây dựng mô hình dữ liệu cho một hệ thống như vậy.

Giới thiệu

Trước khi bắt đầu xây dựng mô hình dữ liệu của mình, trước tiên chúng ta nên hiểu cách các bãi đậu xe được cấu trúc và cách chúng hoạt động. Hãy cùng tìm hiểu sơ lược về hai lĩnh vực chính này.

  1. Bãi đậu xe được cấu trúc như thế nào?

    Một bãi đậu xe điển hình bao gồm một hoặc nhiều khối được chia nhỏ thành các tầng. Mỗi tầng có nhiều cánh giúp người lái định hướng và ghi nhớ điểm đỗ của mình. Chúng thường được gắn nhãn bằng các chữ cái, chẳng hạn như “A”, “B”, “C”, v.v. Một tầng thường có giới hạn chiều cao để hạn chế một số phương tiện vào bãi đậu xe. Ngoài ra, một tầng chứa một số chỗ đậu xe được đánh số duy nhất. Một số khe cắm này được dành riêng cho những người tàn tật; những người khác có thể được đặt trước bởi những người truy cập thường xuyên với một mức chi phí nhất định.

  2. Bãi đậu xe hoạt động như thế nào?

    Để hiểu cách bãi đậu xe hoạt động, chúng ta phải biết thêm về những loại người ghé thăm bãi đậu xe. Khách hàng vào bãi xe thuộc một trong các nhóm sau:

    • Một khách hàng thông thường đã mua vé hai tuần một lần, hàng tháng hoặc hàng năm.
    • Một khách hàng trả trước đã đặt chỗ từ xa (trên điện thoại hoặc trực tuyến).
    • Một khách hàng tự do không có vé hoặc đặt chỗ từ xa. Một vị trí sẽ được chỉ định cho một khách hàng như vậy dựa trên tình trạng sẵn có.

    Những khách hàng quen thuộc thường được phát thẻ / nhãn dán để dán ở vị trí nào đó có thể nhìn thấy trên bảng điều khiển hoặc kính chắn gió của họ để ban quản lý bãi đậu xe có thể dễ dàng xác định rằng khách hàng không vi phạm bất kỳ quy tắc đậu xe nào. Không giống như du khách không thường xuyên, khách hàng thường xuyên không bao giờ được cấp phiếu đậu xe hàng ngày. Một bãi đậu xe thường dành toàn bộ một dãy nhà hoặc một tầng cho khách thường xuyên của nó để đảm bảo họ luôn có chỗ để đậu. Khách hàng thường xuyên cũng có thể đặt trước chỗ cho mình để họ có thể đậu xe vào cùng một chỗ đã chỉ định mỗi ngày, nhưng điều này thường phải trả thêm phí.

    Những người đặt chỗ đậu xe từ xa thường chỉ có thể sử dụng các vị trí được chỉ định của họ trong khoảng thời gian giới hạn vài giờ, sau đó các vị trí được giải phóng. Khi những du khách này vào bãi đậu xe, họ phải đậu vào chỗ đã đặt trước của mình. Khách hàng không rời khỏi bãi đậu xe sau khi hết thời gian sẽ bị phạt, nhưng khách hàng chắc chắn có thể rời khỏi bãi đậu xe trước khi hết hạn đặt chỗ. Một số bãi đậu xe có khung thời gian tối thiểu cố định (ví dụ:khách hàng có thể phải đặt chỗ trong ba giờ ngay cả khi họ chỉ đi trong một giờ).

    Khách hàng đi bộ được phát phiếu đậu xe khi vào bãi đậu xe. Sau đó, một chỗ đậu xe sẽ được giao cho khách hàng khi phiếu được tạo ra, dựa trên sở thích mà họ đã chỉ định. Quy trình đặt chỗ ở đây về cơ bản giống như quy trình dành cho khách hàng trả trước. Tuy nhiên, việc đặt trước phụ thuộc hoàn toàn vào tình trạng sẵn có. Một vị trí có thể khiến bạn tốn nhiều tiền hơn nếu bạn đặt trước một vị trí, đặc biệt nếu số lượng có hạn và nhu cầu cao.

Mô hình dữ liệu




Với những yêu cầu này, hãy tiếp tục và tạo mô hình dữ liệu của chúng tôi. Lần này, chúng tôi sẽ làm việc với ba phần chính:

  • Bãi đậu xe
  • Khách hàng
  • Đặt trước chỗ đậu xe

Hãy cùng xem xét kỹ hơn từng lĩnh vực này trong mô hình dữ liệu của chúng ta.

Phần 1:Bãi đậu xe

Mục Bãi đỗ xe không chỉ nắm bắt tất cả các thông tin quan trọng về chính bãi đỗ xe mà còn đơn giản hóa cách thức mà công ty có thể quản lý đơn vị nhỏ nhất của bãi đỗ xe (một vị trí). Một số cột trong bảng đã được thêm vào với mục đích duy nhất là đặt chỗ đậu xe và hoạt động hiệu quả hơn trong các phần sau.

Theo cấu trúc bãi đậu xe mà chúng tôi đã thảo luận trong phần giới thiệu, chúng tôi đã tạo các bảng sau để nắm bắt từng chi tiết mà chúng tôi cần.

parking_lot - lưu trữ thông tin cơ bản về một bãi đậu xe. Các cột cho bảng này là:

  • id - khóa chính cho bảng này. Nó chỉ định một số duy nhất cho mỗi bãi đậu xe.
  • number_of_blocks - theo dõi số khối trong bãi đậu xe.
  • is_slot_available - cho biết bãi đậu xe hiện có bất kỳ chỗ trống nào hay không.
  • address - lưu trữ địa chỉ đầy đủ của một bãi đậu xe.
  • zip - lưu trữ mã zip của một bãi đậu xe, cho phép khách hàng dễ dàng tìm kiếm các bãi đậu xe có sẵn trong một khu vực nhất định bằng cách chỉ cần truy vấn mã zip mong muốn của họ.
  • is_reentry_allowed - Cho biết khách hàng có thể ra khỏi bãi đậu xe và vào lại bằng cùng một phiếu đậu xe hay không. Lưu ý rằng nhiều bãi đậu xe thường không cho phép khách hàng làm điều này. Ở những bãi đậu xe như vậy, bạn phải mua phiếu mới mỗi khi vào lại vào một ngày nhất định.
  • operating_company_name - lưu trữ tên của công ty điều hành bãi đậu xe.
  • is_valet_parking_available - cho biết liệu bãi đậu xe có cung cấp dịch vụ trông xe hay không.

block - Bãi đậu xe được chia thành một hoặc nhiều khối. Bảng này lưu trữ thông tin về từng khối của một bãi đậu xe. Các cột của bảng này là:- một bãi đậu xe được chia thành một hoặc nhiều khối. Bảng này lưu trữ thông tin về từng khối của một bãi đậu xe. Các cột cho bảng này là:

  • id - khóa chính cho bảng này.
  • parking_lot_id - cột được tham chiếu từ parking_lot bảng xác định bãi đậu xe mà khu nhà thuộc về.
  • block_code - lưu trữ mã được liên kết với khối này. Các khối thường được cung cấp mã nhận dạng duy nhất, chẳng hạn như “A”, “B”, “C”, “11”, “22”, “33”, v.v.
  • number_of_floors - lưu trữ số tầng trong khối này. Số “1” cho biết đây là khu nhà ở tầng trệt không có tầng.
  • is_block_full - cho biết liệu khối hiện đã đầy hay chưa.

floor - trong bãi đậu xe nhiều tầng, các khối có thể có nhiều hơn một tầng. Tuy nhiên, bảng này cũng có thể được tham chiếu bởi các khối ở mặt đất. Các cột cho bảng này là:

  • id - khóa chính cho bảng này.
  • block_id - xác định khối mà một tầng thuộc về.
  • floor_number - đại diện cho số tầng (trong đó 1 =tầng trệt).
  • max_height_in_inch - trong bãi đậu xe nhiều tầng, mỗi tầng có giới hạn về chiều cao. Cột này lưu trữ chiều cao tối đa cho phép của các phương tiện trên một tầng.
  • number_of_wings - Một tầng được chia thành nhiều cánh giúp khách hàng nhớ được nơi đậu xe. Cột này lưu trữ số lượng cánh tồn tại trên một tầng.
  • number_of_slots - lưu trữ số lượng vị trí tồn tại trên một tầng.
  • is_covered - xác định xem một tầng có được che phủ hay không. Tầng cao nhất của bãi đậu xe nhiều tầng hoặc bãi đậu xe ở tầng trệt sẽ không bao giờ có mái che.
  • is_accessible - cho biết sàn có dễ tiếp cận hay không, đặc biệt là người khuyết tật. Nếu lô đất nhiều tầng có thang máy đang hoạt động thì mỗi tầng của lô đất đó được coi là có thể sử dụng được.
  • is_floor_full - cho biết liệu một tầng đã được lấp đầy hay chưa.
  • is_reserved_reg_cust - cho biết liệu một tầng có dành riêng cho khách hàng thường xuyên hay không.

parking_slot - bảng này lưu trữ tất cả thông tin về các vị trí đỗ xe của một bãi đỗ xe. Các cột cho bảng này là:

  • id - khóa chính cho bảng này.
  • floor_id - xác định tầng chứa vị trí.
  • slot_number - lưu trữ số nhận dạng duy nhất của vị trí trên một tầng cụ thể.
  • wing_code - xác định cánh có rãnh.

Phần 2:Khách hàng

Tiếp tục, bây giờ chúng ta sẽ bắt đầu trình bày chi tiết tất cả thông tin có liên quan về khách hàng. Lưu ý rằng bãi đậu xe không quan tâm đến việc thu thập và lưu trữ thông tin cá nhân như tên, địa chỉ, v.v., vì họ có thể truy cập cổng DMV địa phương của mình bất kỳ lúc nào để lấy thông tin đó, nếu cần.

customer - lưu trữ tất cả các chi tiết liên quan về tất cả các loại khách hàng có thể ghé thăm bãi đậu xe (thường xuyên, một lần và trả trước). Các cột cho bảng này là:

  • id - mã định danh duy nhất cho khách hàng.
  • vehicle_number - lưu trữ biển số xe của khách hàng.
  • registration_date - lưu trữ ngày xe được đăng ký lần đầu với bãi đậu xe.
  • is_regular_customer - cho biết liệu một khách hàng có thẻ thường xuyên hay không. Nếu cột lưu trữ giá trị true, thì phải tồn tại một mục nhập hợp lệ trong regular_pass bàn. Sau khi thẻ hết hạn và khách hàng vẫn chưa gia hạn, giá trị trong cột này sẽ được cập nhật thành false.
  • contact_number - lưu trữ số liên lạc của khách hàng. Vì một số người không muốn chia sẻ số điện thoại liên hệ của họ với các bãi đậu xe, nên chúng tôi đã giữ nguyên cột này.

regular_pass - lưu trữ thông tin về thẻ thông thường được cấp cho khách hàng. Các cột cho bảng này là:

  • id - khóa chính cho bảng này.
  • customer_id - một cột được tham chiếu từ bảng khách hàng.
  • purchase_date - lưu trữ ngày mua thẻ.
  • start_date - lưu trữ ngày mà thẻ sẽ được coi là hợp lệ, có thể không nhất thiết phải là ngày mua, vì một số khách hàng đã mua trước.
  • duration_in_days - lưu trữ số ngày mà thẻ có hiệu lực. Thẻ hàng tháng thường có giá trị trong 30 ngày.
  • cost - lưu trữ chi phí bằng nội tệ mà khách hàng phải trả để mua vé.

Phần 3:Đặt chỗ

Phần cuối cùng của chúng tôi dành riêng để trình bày chi tiết quy trình đặt chỗ đỗ xe. Khi đặt chỗ, khách hàng thường phải cung cấp một số chi tiết nhất định, chẳng hạn như ngày và giờ đến dự kiến ​​của họ, khoảng thời gian mà họ muốn đặt chỗ, v.v. Chúng ta thảo luận về hai bảng chính của phần này bên dưới.

parking_slot_reservation - lưu giữ thông tin chi tiết đặt phòng. Các cột cho bảng này là:

  • id - chỉ định một số tham chiếu duy nhất cho một yêu cầu đặt chỗ cá nhân.
  • customer_id - tham chiếu đến thông tin nhận dạng của khách hàng đang đặt chỗ này.
  • start_timestamp - lưu trữ ngày và giờ dự kiến ​​khách hàng đến.
  • duration_in_minutes - lưu trữ khoảng thời gian mà đặt trước đã được thực hiện.
  • booking_date - lưu trữ ngày đặt trước.
  • parking_slot_id - cột nội bộ chỉ định chỗ đậu xe cho khách hàng sau khi yêu cầu của họ được nắm bắt và thanh toán đã được thực hiện.

parking_slip - lưu trữ thông tin về thời gian ra vào của khách hàng, cũng như mọi khoản phí liên quan. Chúng tôi đã tạo bảng này cho các bãi đậu xe cho phép nhiều lượt vào và ra trong cùng một đặt chỗ. Các cột cho bảng này là:

  • id - khóa chính cho bảng này.
  • parking_slot_reservation_id - cột được tham chiếu xác định yêu cầu đặt chỗ liên quan.
  • actual_entry_time - lưu trữ ngày đến và dấu thời gian của khách hàng.
  • actual_exit_time - lưu trữ dấu thời gian và ngày khởi hành (xuất cảnh) của khách hàng.
  • basic_cost - lưu trữ chi phí cơ bản của đặt phòng.
  • penalty - lưu trữ giá trị 0 theo mặc định. Nếu khách hàng trì hoãn việc xuất cảnh của họ, một khoản phí phạt sẽ được áp dụng và giá trị trong cột này sẽ được cập nhật.
  • total_cost - cột này chỉ thêm các giá trị của basic_cost và các cột hình phạt.
  • is_paid - thường chỉ được phép vào lại khi khách hàng đã thanh toán phí đậu xe. Cột này cho biết liệu khoản thanh toán này đã được thực hiện hay chưa.

Kết luận

Trong bài viết này, chúng tôi đã trình bày tổng quan về mô hình dữ liệu cho hệ thống quản lý bãi đỗ xe. Có nhiều ứng dụng giúp người dùng tìm chỗ đậu xe bằng cách trích xuất, xử lý và biên dịch dữ liệu (chẳng hạn như tình trạng sẵn có và chi phí) cho các bãi đậu xe trong một vùng lân cận cụ thể. Điều này đặc biệt hữu ích cho những người đến thăm các thành phố lớn như New York, Los Angeles và những nơi khác, nơi mà việc tìm kiếm một bãi đậu xe có thể là một cơn ác mộng nếu bạn không lên kế hoạch cho chuyến thăm của mình một cách cẩn thận. Các ứng dụng như vậy dựa vào các mô hình dữ liệu và API cơ sở dữ liệu được thiết kế tốt để truy xuất thông tin này.

Trong bài viết tiếp theo của chúng tôi, chúng tôi sẽ chuyển đổi mô hình dữ liệu hiện tại của chúng tôi thành một giải pháp cho hệ thống cung cấp chỗ đỗ xe theo thời gian thực. Vui lòng đăng suy nghĩ, phản hồi và đề xuất của bạn trong phần nhận xét bên dướ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. 7 công việc hàng đầu yêu cầu SQL

  2. Làm thế nào để làm việc với sự kế thừa trong Entity Framework Core

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

  4. Duy trì MAX (hoặc MIN) đang chạy được nhóm lại

  5. Giới thiệu về TimescaleDB