1

ユーザーは注文を作成でき、注文は複数の 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 サブクエリまたは集計クエリを実行して、価値。

4

1 に答える 1

2

おそらくこのようなものですか?このように、eTicket が変更された場合ticket_parent、 を以前の に更新しますticket_id

編集 1

編集後、私の考えは次のとおりです。

注文の eTicket の数によって計算できるため、数量は必要ありません。1 つの注文にまとめることができるので、詳細な注文表は必要ないと思います。さらに、現在の設定では eTicket への変更が追跡されません。ダイアグラムに加える唯一の変更は、Productテーブルを追加することです。イベントがチケットに属しているのか注文に属しているのかという疑問を提起し、おそらくテーブルに移動event_idorderます.

于 2012-08-31T00:13:04.177 に答える