0

次のタスクを完了するように割り当てられました。

ここに画像の説明を入力

上記を解決するためにC#とSQLサーバーを使用します。ただし、私はこれに完全に慣れていないため、必要なテーブルの数について注意する必要があります。誰かが私のクエリを問題なく解決できるか、より良い代替ソリューションを完全に提供できる場合は、これを試してみました。これは私が今まで試したことです。下の画像に示すように、今まで3つのテーブルを作成しました。

ここに画像の説明を入力

2 番目の画像で気付いた場合は、注文番号を 1 つの当事者のみに適用することができます。ただし、私がまだ直面している問題は、1 つの当事者が複数のタイプの製品を注文した場合、注文テーブルで 2 つの PO 番号を生成する必要があることです。

ここで私の問題の解決策は何ですか? さらに正規化するにはどうすればよいですか?

PSこれは、正規化の最初の試みであるため、単純な質問として単純な質問のように聞こえるかもしれません。

4

3 に答える 3

1

「Orders」という別のテーブルを追加することをお勧めします。このテーブルには、PONumber、PODate、RefDate、PartyID など、注文全体で同じ情報が含まれます。次に、OrdersDetail テーブルには、ProductId、Quantity、Rate、Amount、OrderId (新しい Order テーブルへの FK) など、注文された各製品の情報が含まれます。

また、すべてのデータ型をテキストにしないでください。格納される情報に適したデータ型を使用することを検討してください。同じレコード内の他の情報 (数量 * 率) から計算されるため、金額を含めないか、計算フィールドにすることも検討します。

さらに、主キーとして PONumber 以外の別の値を使用することを検討することもできます。原則として、主キーには内部識別レコード以外の目的はありません。OrderDetailsId を追加して、それを主キーにすることをお勧めします。

編集:(以下のLohitsの質問に答えるために追加情報を追加しました)

あなたの質問の内容が理解できれば、当事者は複数の命令を持つことができます。各注文で、当事者は複数の製品を購入できます。したがって、PartyDetails と Order の間には 1 対多の関係があり、Order と OrderDetail の間には 1 対 5 の関係があります。ProductDetails と OrderDetails の間の 1 対 1 の関係。Party テーブルには、注文の購入者に関する情報が格納されます。Order テーブルには、ユーザーが行った各注文に関する情報が格納されます。OrderDetails には、ユーザーが注文ごとに購入した各製品に関する情報が格納されます。ProductDetails テーブルには、すべての製品のリストが格納されます。

これは、私が見たデータ構造の図です....すべての詳細が含まれているわけではないことに注意してください。しかし、うまくいけば、それはあなたが始めるのに十分なものになるでしょう.

ここに画像の説明を入力

于 2012-10-08T15:13:39.690 に答える
1

このデザインなら使えるかも。注文ごとに当事者ごとに 1 つの PO 番号しかないことに注意してください。これは、PO 番号を手動で提供することを前提としています。それ以外の場合は、OrderID を便利な自動生成 PO 番号として使用できます。

ここに画像の説明を入力

于 2012-10-08T15:22:51.403 に答える
0

4つのテーブル:

  1. パーティー情報:ID、名前、住所
  2. 製品情報:ID、名前、価格
  3. 注文情報:id:日付など
  4. Orderline:orderID、ProductID、Amountここで、orderIDとProductIDは、製品情報と注文情報への外部キーです。

(作成された)注文に商品を追加するには、productIDとOrderIDを[orderline]に追加するだけで、同じ商品が2回入力されたときに金額が増加します。

于 2012-10-08T15:18:43.383 に答える