1

オンラインで商品を購入するときは、商品をバスケットに追加します。バスケットに商品を追加したら、注文を作成します。基本的に、私は複数のアイテムを 1 つの注文に入れることができるようにする最善の方法を考えようとしています。これは、Access のデータベースにデータを格納する方法がわからない場合に当てはまります。フィールドの名前がわかりません。私の現在の試みはこれです:

tblOrders
OrderID (Primary Key)
CustomerID (Foreign Key)
OrderDetailsID


tblOrderDetails
OrderDetailsID
PartID (Foreign Key)
Quantity

これはサンプル データを含む最初のテーブルの画像で、これは 2 番目のテーブルの例です。目に見えないほど明白なものを見落としている可能性が非常に高いです。

前もって感謝します。

4

1 に答える 1

1

私はそれを次のように構成します:

OrderHeader
  ID (Primary Key)
  CustomerID (Foreign Key)

OrderDetail
  ID (Primary Key)
  OrderHeaderID (Foreign Key)
  PartID (Foreign Key)
  Quantity
  • 命名規則としてハンガリアン記法を読み、tbl接頭辞を削除することを検討してください。これは、無視することを選択できる単なる設定です。
  • OrderDetailID注文に複数の詳細行が含まれる可能性があるOrderHeader場合に必要な関係を作成できないため、は機能しません。1:M
  • 主キーに代理IDフィールドを使用します。それらは、作業をJOIN非常に簡単にします。注文でパーツを1回しか使用できないという条件を適用する場合は、列OrderHeaderIDとに一意のデータベース制約を設定する必要がありますPartID

コメントのサンプルクエリは次のとおりです...

SELECT H.ID OrderID, D.PartID, D.Quantity
FROM OrderHeader AS H INNER JOIN
     OrderDetail AS D ON H.ID = D.OrderHeaderID
WHERE H.ID = 1234;
于 2012-04-05T13:18:18.400 に答える