2

私はこのサンプルテーブルを持っています:

table ORDERS

client   orderno   cant1   code1   notes1   cant2   code2   notes2   cant[i]   code[i] [...]
--------------------------------------------------------------------------------------
1          1        3      AA01    Test      4      BB01    Testing
2          2        10     XX05    Test      



table PRODUCTS

code   prod    price
---------------------
AA01   Engine   100  
BB01   Wheel     50  



table CLIENTS

client   name      address     telephone
-----------------------------------------
  1     Maxwell   24 1st st    0987654321
  2     Hammer    77 main st   1234567890

各製品ライン(30 cant [i]、code [i]、notes [i])の数量、製品名、価格、および顧客情報(名前、住所、等)

私はこのケースを見つけましたが、それを私のものに適用する方法がわかりません:SQLは1対多の関係で2つのテーブルをクエリします

複雑すぎないことを願っています。

前もって感謝します!

編集

ElectricLlamaのおかげで、ここでの問題は注文が保管されているテーブルであることに気付きました。彼の答えによると、データベースの正規化は私が情報を得ることができる方法を改善するでしょう。

このソリューションに興味のある人のために、私はこの素晴らしいウェブサイトを見つけました:http ://www.devshed.com/c/a/MySQL/An-Introduction-to-Database-Normalization/

このSOの答えはそれをすべてクリアします!超クリアでわかりやすい! https://stackoverflow.com/a/1258776/888292

4

3 に答える 3

2

あなたのリンクの内容を見ると - はい、それは多くのナンセンスのように思えますが、それはおそらくあなたが望むものを得る唯一の方法です.

問題は、テーブルが正規化されていないことです。具体的には、code1 code2 code3 code4... code30 というフィールドは使用しないでください。

クライアントが 31 個の製品を持っているとどうなるかなど、この設計には多くの欠陥があります。

正規化されたデータベースでは、1 セットのカント、コード、メモを含むテーブルがあり、製品ごとに 1 つの行があります。

しかし、あなたはそれを正常化する立場にないと思います。

あなた自身の答えを思いついたことはとてもよくできました。データベースを正規化しないことの影響を直接経験したこともあります。

検討したいことは、これを正規化するビューを作成することです。パフォーマンスの問題が発生しますが、ビューの概要を説明し、正規化されたテーブルに対してソリューションがどのように見えるかを確認する機会を提供します。

于 2012-11-06T04:05:00.623 に答える
0

あなたのテーブルは次のように見えるはずだと思います

テーブルオーダー

-------------

orderno
client
code
cant
note

ここでは、orderno を作成します。クライアントとコードは、テーブルの複合主キーを作成します。

于 2012-11-06T13:05:44.903 に答える
0

同上 @ElectricLlama & SQL の学習に役立ついくつかのリンクを次に示します。

于 2012-11-06T04:26:18.750 に答える