0

私はサービスとハードウェア製品を扱う注文と請求システムを構築しています。簡略化したテーブル構造の一部を以下に示します。(実際には、テーブルが1桁多くなります):

標準注文のリストから、つまり会社の規模に関連する注文を選択し、この標準フォームに関連するすべてのさまざまな製品を含む注文フォームを適切なテーブルに正しい関係で作成してもらいたいと思います。例として、私は5人の小さな会社のコンピューターとアクセサリーの標準注文を選択します。Orderが作成され、OrderItem行もOrderとProductにリンクされます。

顧客(パーティのサブセット)

Customer_ID(PK、FKからパーティ)

顧客名
..。

注文

Order_ID(PK)
Customer_ID(FKからCustomer)
注文日
注文番号
..。

OrderItem

Order_ID(PK、FKから注文)
Product_ID(PK、FKからProduct)
額
..。

製品

Product_ID(PK)
商品名
価格
情報
..。

この例はプログラミングが簡単ですが、更新が必要な相互に関連するテーブルが10個ある場合、最善の戦略がわかりません。

以下から本番テーブルのデータをフェッチするのが最善ですか?

1)生産データのミラーとして多かれ少なかれ相互に関連しているが、一般化されたデータ(標準)のみを含み、日付などの列を含まないテンプレートテーブルのセット?

2)テンプレートを本番データテーブルに保存し、それらを示すために追加のフィールドを使用しますか?これにより、日付などのように、これらの行に多くの空の列が作成される可能性があります。

3)他のプログラミング方法を使用してそれを使用します。選択したテンプレートに応じて異なるストアドプロシージャを呼び出すテーブルのように!?

4)???

これが理解できることを願っています。

4

1 に答える 1

0

あなたはその問題を間違った方法で考えていると思います。あなたがすべきことは、中小企業の顧客のニーズを満たす製品バンドルを作成することです。

したがって、製品間に自己結合テーブルを追加できます

商品バンドル表

Product-ID1 null でない整数は製品 (product_id) を参照します Product_ID2 null でない整数 check( != Product-ID1 ) は製品 (product_id) を参照します

主キー ( Product-ID1 、 Product_ID2 ) qty integer not null チェック ( > 0 ) ....

これで、その構成製品の製品テーブルを参照する製品テーブル エントリを作成できます。

于 2012-08-31T17:47:20.087 に答える