私はバックエンドを設計しようとしており、次のユースケースがあります。旅程の間欠的な経由地を設計するにはどうすればいいですか
ポイントAからBまでのフライト情報があり、異なるユースケースをサポートするスキーマを定義する必要があります。
私は、ポイント経由で途中降機がある場合に、このケースを処理する良い方法を見つけることを試みています。
以下のための飛行ルート - > Bは、実際に次のようになります。
A -> C
C -> D
D -> B
がそう - > Bは、一方のエンティティですが、今度は、それはいくつかの足で構成されています。
私の現在の設計:
AirLegテーブル:
- id
- departure and arrival information
- viaPoints: BOOL
viaPoints表:viaPointsフラグがAirLegテーブルにTrueの場合
- id
- airLegId // FK into Airleg table
- similar departure and arrival information from airLeg table
//は、viaPointsテーブルがために照会することができ、仲介者を取得するためにairLegIdテーブルを使用します。
これに対処するより良い方法はありますか?
私は片道またはセグメントについて格納しています情報を追加しますと思った:
- AirLeg-ID
- 出発空港:空港
- 到着空港へのFK:空港へのFK
- 出発タイムスタンプ(到着都市の現地時間で)(で出発地の現地時間)
- 到着タイムスタンプ
- 飛行duratiこのairlegの上:静的な値
- フライトID:テキスト
- その他(TEXT:キャンセルポリシー)
EDIT:
FK航空会社名とフライトナンバー私は関連するquestionを追加しました。私はこの問題に対する答えが両方の要件に対応しなければならないと思います。
旅行に複数のセグメントがある場合、価格は個々のセグメントは
同様に、往復の料金を単位とA-> Bからのない個々の構成要素として指定されている完全な旅行のために定義されていませんバック、B-> A。
最も早いセグメント(時間に基づいていますか?)を見て、旅の最初と最後のセグメントを調べます。 –
はい。 IDを使用すると、最初に中間のセグメントを選択してから接続セグメントを選択すると良い考えではありません。したがって、UTCでの発着時刻は注文基準です。 –
私は都市のローカルタイムゾーンに時間を保存しています。私は別のテーブルで請求しています。だから、私のテーブルでは、私が持っているのは出発/到着空港、時間と飛行情報です。あなたが私の質問に投稿したのと似たような提案はしていませんか? – brainydexter