2016-04-12 11 views
0

私は、同じ注文で1人または複数の人のために贈り物を購入することができるチェックアウトを持っています。これは1つの注文を意味し、同じ注文傘の下で1,2,3人以上の人が実際に出荷することができます。私はこれをデータベースで表現する方法を見つけようとしています。以下は私が考えていることです。 ordersテーブルには基本注文情報が格納されていますので、order_groupsは商品と関連して出荷することができます。order_itemsは商品です。order_shippingは自明です。MySql - 複数の人に出荷可能な注文を保存する方法

orders 
id, amount, customer_id 

order_groups 
id, order_id 

order_items 
id, item_id, unit_price, quantity, total_price, order_group_id 

order_shipping 
id, name, address1, address2, city, state, zip, order_group_id 

私はこれは大丈夫であると信じて、私はorder_groupsが進むべき道ではないかもしれない気持ちを持っています。私はこれが大丈夫なのかどうか、あるいは状況に対するよりよい解決策があるのか​​どうか尋ねています。

答えて

1

グループ内で唯一の注文であっても、すべての注文がグループの一部であれば、あなたの人生はずっと簡単になります。

したがって注文自体ではなく、リンクテーブル内のグループへの参照を保持する必要があり、言った:

groups 
id, [group-related info] 

orders 
id, group_id, amount, customer_id 
+0

私はあなたが何を意味するのか少し混乱しています。 [グループ関連情報]は店舗情報をグループテーブルに格納しているのでしょうか、item_とshippingテーブルをgroup_idのままにしておきますか? – Naterade

+0

@Naterade:グループに関連するデータ(支払い情報、支払う顧客情報など)をグループに、注文関連データ(配送先住所、顧客情報を受け取るなど)を注文に保存する必要があります。注文アイテムは、グループではなく注文にリンクする必要があります。 – Quassnoi

+0

ああ、私は見る!私はこれがデータ表現の観点からはるかに優れた解決策であり、より論理的であると考えています。ありがとう!〜 – Naterade

0

あなたは、多くの関係に可能なものを設定する必要があります。

order_addresses (table) 
order_id, address_id 

order_shipping (table) 
address_id, name, address1, address2, city, state, zip, order_group_id 

また、アイテムがどのアドレスに出荷されていて、あなたが同様の戦略を使用する必要がありますそれらのトラックを保持する必要があります。

関連する問題