2012-04-05 15 views
1

オンラインで物を買うと、それらをあなたのバスケットに追加し、あなたのバスケットに物を追加したら、オーダーを作成します。基本的には、複数のアイテムを1つの順序にまとめるための最良の方法を考えようとしています。これは、Accessのデータベースにデータを格納する方法を知らない場合です。私はどのフィールドを呼び出すべきかを理解できません。在庫管理プログラム用の「バスケット」を作成していますか?

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


tblOrderDetails 
OrderDetailsID 
PartID (Foreign Key) 
Quantity 

Thisは、例えば、データの最初のテーブルの画像であり、thisが第二のテーブルの例である:私の現在の試みはこれです。私は盲目的に何かを見逃している可能性が非常に高いです。

ありがとうございます。

答えて

1

私はこのようにそれを構築したい:

OrderHeader 
    ID (Primary Key) 
    CustomerID (Foreign Key) 

OrderDetail 
    ID (Primary Key) 
    OrderHeaderID (Foreign Key) 
    PartID (Foreign Key) 
    Quantity 
  • 命名規則としてHungarian Notation上に読んで、あなたのtblプレフィックスをドロップすることを検討してください。これはあなたが無視することを選ぶかもしれない選好です。
  • OrderDetailIDOrderHeader)は、注文が複数の詳細行を持つことができる必要な1:M関係を生成することができないため、機能しません。
  • プライマリキーに代理IDフィールドを使用します。彼らはJOINで作業するほうが簡単です。指図が部分を1度だけと使用できる条件を適用する場合は、列OrderHeaderIDPartIDの一意データベース制約を使用してください。ここで

は、あなたのコメントのためのサンプルクエリです...

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; 
+0

オーケー、私はこれとハンガリー表記上の興味深い読み取りのための感謝を理解すると思います!私はプログラミングでやや初心者ですが、これはばかげているかもしれませんが、上記の構造では、私は[this](http://www.w3schools.com/sql/sql_join.asp)を使用しますか?私はこれが解決策であることがわかりますが、視覚化に問題があります。 上記のリンクであなたの例を使用すると、関連するフィールドがOrderHeaderIDになり、INNER JOINが使用されると考えられます。私はちょうど私の場合をウェブサイト上で提供されている例に統合することができないようです... – Paul

+1

@ user1305482はい、あなたは 'INNER JOIN'を使うことについて正しいです。答えを例で更新しました。 – Yuck

+0

ありがとう、Yuck。私はそれを行って、うまくいけば私の問題を解決するだろう! :) – Paul

関連する問題