我正在開發在線購物車系統。現在我需要將項目/購物籃添加到訂單表中。我想確定我是否走在正確的道路上?購物車訂購表
這些是主要的產品表:
項目表
- ITEM_ID(P)
- ITEM_NAME
- ITEM_DESCRIPTION
注:商品價格都在item_options表
item_options表
- option_id(P)
- ITEM_ID(F)
- OPTION_NAME
- option_price
item_extras表
- extras_id(P)
- option_id(F)
- extras_name
- extras_price
以下是在訂單表。正如您可以看到項目名稱,選項名稱和額外名稱一樣,價格將被複制到訂單表中。如果任何商品名稱或價格發生變化 - 它不會影響訂單表。例如,發票不會受到影響。
訂單表
- orders_id(P)
- CUSTOMER_ID(F)
- address_book_id(F)(用於遞送地址經過)
- date_purchased
- orders_status
- orders_date_finished
ORDER_ITEMS表
- orders_items_id(P)
- orders_id(F)
- ITEM_ID(F)
- ITEM_NAME(從項目表中複製)
- ITEM_DESCRIPTION(從項目複製表)
- option_id(f)
- OPTION_NAME(從item_options表中複製)
- option_price(從item_options表中複製)
order_extras表
- order_extras_id(P)
- orders_id(F)
- orders_items_id( f)
- extras_id(f)
- extra_name
- extra_price
感謝您的詳細迴應戈登,我想確保我能正確理解您。你是否想要添加一個名爲「optionExtras」的新表?我不明白這個潛力如何消除冗餘?產品工作方式:一個項目可以有很多選項。一個選項可以有許多額外的。其次在關於布爾值,你的意思是像items.active,item_options.active 1或0?這真是個好主意,謝謝:) – user622378 2011-04-24 11:45:18
如果我更改產品的價格或名稱,我會將活動記錄設置爲關閉狀態,然後插入新記錄,但這意味着我必須更新item_options中的新item_id .item_id(FK)表? – user622378 2011-04-24 11:51:21
是一個名爲optionExtras的新表。正如你所說,一個項目可以有很多選項,一個選項可以有很多額外的。但是選項1是否與選項2或選項3具有相同的額外功能?或者一些相同的選擇?在這種情況下,您通過鏈接表來簡化這種多對多關係是解決兩次複製相同信息的可能性的最佳方法。 – GordyD 2011-04-25 14:22:46