0

Javaee と休止状態のほとんどの初心者のように、ショッピング カート Web アプリを実装しようとしています。多くの教科書を調べましたが、まだ疑問があります。ここの誰かが私の考えを正すのを手伝ってくれることを願っています。

Product クラスと CartItem を実装しました。CartItem には Product フィールドと quantity フィールドがあります。ユーザーが製品を購入したい場合、CartItem をカートに追加します。

ユーザーの購入をモデル化するために、一連の CartItem オブジェクトを使用して Invoice クラスを作成しました。また、顧客フィールドもあります。ここで、対応するテーブルと、それらの有効期間がどのように関連するかについて少し混乱しています。

Invoice レコードが作成された後 (ユーザーがアイテムを購入したとき)、対応するカートアイテムをデータベースに保持する必要がありますか? それとも、ユーザーがアイテムを購入したら、caritem レコードを削除する必要がありますか?

誰かがこれらに光を当てることができれば、それは素晴らしいことです.

ありがとう、

マーク

ソースコード:

class CartItem {
    private Long cartItem_id;
    private Product product;
    private int quantity;
...
}

class Invoice {
    private Long invoice_id;
    private Customer customer;
    private Set<CartItem> cartItems;
    private Date invoiceDate;
    private int invoiceNumber;
    private double totalAmount;
...
}

以下のようにテーブル CARTITEM と INVOICE を作成しました。

CREATE TABLE CARTITEM(
    CARTITEM_ID BIGINT NOT NULL PRIMARY KEY IDENTITY,
    QUANTITY INTEGER,
    PRODUCT_ID BIGINT,
    FOREIGN KEY(PRODUCT_ID) REFERENCES PRODUCT(PRODUCT_ID)
)

CREATE TABLE INVOICE(
    INVOICE_ID BIGINT NOT NULL PRIMARY KEY IDENTITY,
    INVOICE_NUMBER INTEGER,
    INVOICE_DATE DATE,
    TOTAL_AMOUNT DOUBLE,    
    CUSTOMER_ID BIGINT,
    UNIQUE(INVOICE_NUMBER),
    FOREIGN KEY(CUSTOMER_ID) REFERENCES CUSTOMER(CUSTOMER_ID)
)
4

2 に答える 2

1

請求書レコードが作成された後(ユーザーがいくつかのアイテムを購入したとき)、対応するカートアイテムをデータベースに保持する必要がありますか?

それはすべてあなたのビジネスルールに依存します。将来、それらの情報を回復しますか?おそらく、私は推測します。次に、それらは永続的である必要があります。

それらを永続化したくない場合は、データベーステーブルを作成する必要はありません(クラッシュリカバリが必要な場合を除く)。をセッション中に保持できますCarItem(Webアプリであると想定)。

于 2011-07-05T13:32:10.557 に答える
1

請求書を永続化する場合は、請求書を作成した CartItems を永続化することだけが理にかなっています。そうでなければ、たとえば、ユーザーが後で戻ってきて請求書を再印刷するにはどうすればよいでしょうか?

CARTITEM テーブルに外部キーを追加して、請求書に関連付ければ準備完了です。

于 2011-07-05T14:35:25.457 に答える