2011-07-05 3 views
0

私は、javaee &の休止中のほとんどの初心者のようなショッピングカートのWebアプリケーションを実装しようとしています。ここの誰かが私の考えを訂正するのを助けてくれることを願っています。cartitemとInvoiceのライフ・リレーションズ.. shoppingcartを実装する疑問

私はProductクラスとCartItemを実装しました。 CartItemには商品フィールドと数量フィールドがあります。ユーザーが商品を購入したいときは、CartItemをカートに追加します。

ユーザーの購入をモデル化するために、CartItemオブジェクトのセットを使用してInvoiceクラスを作成しました。顧客フィールドもあります。今、私は対応するテーブルとその生涯がどのように関係すべきかについて少し混乱しています。

請求書レコードが作成された後(ユーザーが一部のアイテムを購入した場合)、対応するカートアイテムをdbに保存する必要がありますか?または、ユーザーが商品を購入した後、カートリットレコードを削除する必要がありますか?

誰かがこれらについて光を当てることができれば、いいと思います。

おかげで、

マーク

ソースコード:

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と請求書を作成しました。

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) 
) 

答えて

1

(ユーザーは、いくつかのアイテムを購入する場合)請求書レコードが作成された後、対応するcartitemsはDBに保存すべきか?

すべてはビジネスルールによって異なります。あなたは将来これらの情報を回復したいですか? 恐らくと思われます。それから彼らは永続的でなければなりません。

これらを永続化したくない場合は、データベーステーブルを作成する必要はありません(クラッシュの回復が必要な場合を除きます)。 CarItemをセッションに入れておくことができます(ウェブアプリだとします)。

1

請求書を保存している場合は、請求書を構成するCartItemsを永続させるだけです。それ以外の場合は、後で元に戻って請求書を再印刷することができますか?

CARTITEMテーブルに外部キーを追加してインボイスに結びつけ、設定します。