バス停のデータがあるので、特定の開始駅と終了駅に線/複数線を提供するアプリケーションを作成したいと考えています。
たとえば、ユーザーがステーション1からステーション2へのバス路線の候補を取得しようとします。
station1
との両方をカバーできるバスラインがある場合station2
、このラインを返す必要があります。結果は次のようになります。
Step1: station1 -- station2
ステーション1とステーション2の間に直接バス路線がない場合、アプリケーションは交換計画を見つけようとします。たとえば、結果は次のようになります。
Step1: station1 -- exchangestation
Step2: exchangestation -- station2
これでデータは取得できましたが、データベースでデータモデルを設計する方法、クエリを効率的にするためのスキーマを作成する方法がわかりません。
=============================================
更新:
たとえば、バスのラインは4つ(実際には2つ)あり、それぞれ色が異なります。
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)
次に、これらの情報をデータベースに保存して、ある駅から別の駅へのバス路線計画を照会する場合、必要なテーブルの数と、各テーブルに何を配置する必要があるのでしょうか。