ユーザーは注文を作成でき、注文は複数の eTicket に対して行うことができます。各チケットには、eTickets のテーブルに独自の行が必要です。さらに、たとえばユーザーが e チケットをアップグレードすることを決定した場合、既存の e チケットに後続の注文を割り当てることができます。
では、注文の詳細を含む注文の標準構造を取得した場合、eTicket を支払い元の注文に関連付けるにはどうすればよいでしょうか?
注文を eTicket に割り当てるだけではうまくいかないと思います。なぜなら、注文が複数の eTicket 用であり、各 eTicket が異なるイベント用である場合、たとえば、その eTicket がどのイベント用であったかをその情報が与えられた場合にどのように知ることができるからです。注文明細行にすでに保存されていますか? 1 つの注文で複数の e チケットを購入できることを覚えておいてください。
編集
ということで、現在持っているのは…
注文
オーダー ID PK
製品
ProductId PK、EventId FK
注文詳細
OrderDetailId PK、OrderId FK、ProductId FK、数量
eチケット割り当て
OrderDetailId FK、eTicketId FK
eチケット
eTicketId PK
したがって、ユーザーが特定のイベントのために 3 つのチケットを購入すると、チェックアウト時に 3 つの e チケットが作成され、それぞれが注文の詳細に割り当てられます。支払いは預金と残高の間で分割することもでき、注文の詳細を介して両方の注文が同じ eTicket に割り当てられます。
今、私はこれを機能させていますが、それについて何かが正しくないと思います! 本当にチケットを注文詳細に割り当てる必要がありますか? そうでない場合、それは他にどこに行きますか?
編集2
本質的に、e コマース エンジンは何でも販売できる必要があり、e チケットは、データを作成することによって提供される製品の特殊なケースを表します。つまり、注文の詳細が必要です。また、固定宿泊施設を表さない e チケットの場合、注文の詳細に記載されている数量は、対応する単一のe チケットで入場できる人数を示します。ホリデー キャンプでシャレーを購入する場合など、宿泊施設が決まっている場合、注文の詳細に記載されている数量からシャレーの数がわかり、各シャレーが独自の eTicket を取得します。
これはしばらくの間稼働しています...私は、いくつかの厄介なクエリが必要なように見える設計に関するフィードバックを探しているだけだと思います。
たとえば、ある eTicket が与えられた場合、どのイベントに対応するかをどのように判断すればよいでしょうか? eTicket テーブルから製品テーブルへの 3 つの結合に結合する必要があります。さらに、eTicket に複数の注文が割り当てられている場合、これは複数の行を返します。つまり、何らかの TOP 1 サブクエリまたは集計クエリを実行して、価値。