2012-08-01 6 views
6

車予約システムは、ソフトウェア開発インタビューで非常によくある質問です。デザインインタビュー - 車予約システム

Carクラス/テーブルには、車のId#、タイプ(標準、コンパクト、など)、など、モデル カスタマー持つ顧客ID#、 を作るがあります。私はこれを頼まれたとき は、私は次のER構造/ OOPの構造を設計し予約は、車が予約されている車ID#、顧客ID#および日付を記憶する連想表である。簡単にするために、車は日々のチャンクでのみ予約できると仮定することができます。

ここで私は嫌な部分があります - 7月27日にID3の車3を持つコンパクトカーを予約するとどうなりますか?7月24日に車3が合計されるとどうなりますか? 7月24日と27日、彼らはすべて逮捕される。顧客1が7月27日に到着すると、最終的には車がありません。

私は車と顧客が予約テーブルに結合されていると考えています。この関係をモデル化するために任意のより良い方法はありますし、また定期的なユースケースなどは、特定の日付に利用できる車を見つけるあなたはWorking呼ばCarに別のbooleanフィールドを追加することができますなど

答えて

2

その日のためにそれを留保します。 Car 3が、その後合計されている場合は

  • falseWorkingを設定します。
  • Reservationで検索してください。
  • の場合は、そのタイプの別の車をCarで検索してください。
  • が見つかった場合は、この車を他の車に交換してReservationに交換してください。
  • その他の場合は顧客に電話してください。
+1

次に、質問はどの時点で車が機能しているかどうかを確認したいのですか?実行し、すべての合計/破損した車を他の同等の働くものに置き換える夜間スクリプト? –

+0

エンティティリレーションモデルを使用することを選択しました。 'Car'と' Customer'は確かに実体です。 '予約'は間違いなく 'カー'と '顧客'の関係です。 「Car」が合計/破損しているかどうかは、確かに、「Car」エンティティの「プロパティ」です。この設計は、Entity-Relationモデルの原則に当てはまり、それにスローされるさまざまなユースケースに耐えなければなりません。あなたの最後の質問を含める。 –

関連する問題