Làm thế nào để thiết kế một lược đồ cơ sở dữ liệu truy vấn trạm xe buýt?


9

Chúng tôi có dữ liệu trạm xe buýt và chúng tôi muốn xây dựng một ứng dụng sẽ cung cấp dòng / nhiều dòng cho một trạm bắt đầu nhất định và trạm cuối.

Ví dụ: người dùng cố gắng nhận đề xuất tuyến xe buýt từ trạm1 đến trạm2.

Nếu có một tuyến xe buýt có thể bao gồm cả hai station1station2, dòng này sẽ được trả lại. Kết quả có thể như thế này:

Step1: station1 -- station2

Nếu không có tuyến xe buýt trực tiếp giữa trạm1 và trạm2, thì ứng dụng nên cố gắng tìm kế hoạch trao đổi, ví dụ, kết quả có thể như sau:

Step1: station1 -- exchangestation

Step2: exchangestation -- station2

Bây giờ chúng ta có dữ liệu, nhưng chúng ta không biết cách thiết kế mô hình dữ liệu trong cơ sở dữ liệu, làm thế nào để tạo lược đồ để làm cho truy vấn hiệu quả?

=============================================

Cập nhật:

nhập mô tả hình ảnh ở đây

Ví dụ: tôi có bốn tuyến xe buýt (thực tế là hai) mỗi tuyến có một màu khác nhau:

l1: A-B-C-D
l2: D-B-A (in fact, the l2 is the reverse of l1 except the l2 will skip station `C`.
l3: E-B-D-F
l4: F-D-B-E(reverse of l3) 

Bây giờ nếu chúng ta muốn lưu các thông tin này trong cơ sở dữ liệu để truy vấn kế hoạch tuyến xe buýt cho một trạm đã cho trạm khác, thì chúng ta cần bao nhiêu bảng và nên đặt gì vào mỗi bảng?


@ giser.i cũng có vấn đề tương tự. bạn có thể trả lời nếu bạn thực hiện nó gis.stackexchange.com/questions/70253/ mẹo
scott

Câu trả lời:


6

Tôi nghĩ bạn cần xây dựng một bảng khác xác định tất cả các tuyến trong là kết hợp của các tuyến khác. Sau đó, bạn truy vấn bảng này và tham gia vào các tuyến thực tế để có được hình học.

Nếu truy vấn dành cho 'từ trạm' đến 'đến trạm' và mỗi phần có 'từ trạm và' đến trạm '. Nhưng bạn muốn bao gồm các tuyến đường có nhiều phần, bạn có thể có một bảng 'tuyến đường khác có nội dung như sau:

  • 'tên tuyến', 'ID tuyến', 'từ trạm', 'đến trạm'

bạn cũng cần bảng phần ban đầu của bạn, đại loại như:

  • 'tên phần', 'ID phần', v.v ...

và tôi nghĩ rằng bạn cần một bảng tham gia khác như:

  • 'ID tuyến đường', 'ID phần'

và bảng đó lưu trữ mối quan hệ một đến nhiều giữa các tuyến đường và bảng phần, vì vậy, ví dụ của bạn ở trên, bạn có hai hàng trong bảng nối, mỗi hàng cho một bước. Việc truy vấn được thực hiện trên bảng tuyến đường, từ và đến các trạm. Dữ liệu được trả về, nếu không gian, là chi tiết từ bảng tuyến đường và dữ liệu không gian từ bảng phần. Có thể bạn thêm thời gian từ mỗi phần hoặc bất cứ điều gì.

Điều đó có ý nghĩa?


Trên thực tế, hiện tại chúng tôi không có bảng, chúng tôi chỉ có dữ liệu gốc là định dạng văn bản.
Giser

Được rồi, ổn thôi. Tôi nghĩ rằng câu trả lời của tôi đứng sau đó. Tôi sẽ sử dụng ba bảng.
Alex Leith

Tôi cập nhật bài viết của mình với một ví dụ trực tiếp, bạn có thể dành chút thời gian để kiểm tra không?
Giser

@ AlexLeith.i cũng có vấn đề tương tự ở đây gis.stackexchange.com/questions/70253/ săn
scott

3

Bạn có thể nên chọn một công cụ cho điều đó và theo lược đồ các lực lượng công cụ (ví dụ pgRouting ).

Nếu bạn muốn làm điều đó mà không có bảng, bạn chỉ cần hai bảng thực sự để lưu trữ các đỉnh và các nút.

Bí quyết là hình ảnh của bạn cho thấy một cách tiếp cận không gian trong khi thực tế bạn cần một cách tạm thời (hình ảnh đang chờ xử lý). Xe buýt không đi từ nút A đến nút B. Xe buýt đi từ nút A @ 12: 00 đến nút B @ 12: 10 .

Vì vậy, chúng tôi tạo một nút cho mỗi trạm + một nút cho mỗi lần khởi hành từ mỗi trạm. Mỗi nút có 3 liên kết một chiều đi ra từ nó:

  • liên kết đến điểm đến xe buýt (A @ 12: 00 - B @ 12: 10 chi phí: 10 phút)
  • liên kết đến xe buýt tiếp theo rời khỏi trạm này (A @ 12: 00 - A @ 12: 30 chi phí: 30 phút)
  • liên kết đến nút cơ sở (A @ 12: 00 đến A chi phí: 0 phút)

Bây giờ để tìm kết nối từ điểm A đến điểm C, chúng tôi chọn điểm phù hợp sớm nhất tại trạm A và tìm đường từ đó đến nút cơ sở cho trạm C.

Điểm giao:

id|station|time
---------------
1 |A      |NULL
2 |B      |NULL
3 |A      |12:00
4 |B      |12:10

đỉnh

id|start_node|end_node|line|cost
---------------------------
1 |3         |4       |l1  |10
2 |3         |1       |NULL|0
3 |4         |2       |NULL|0

.i cũng có vấn đề tương tự ở đây gis.stackexchange.com/questions/70253/NH
scott

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.