2017-02-11 1 views
0

DB構造を正確に知る必要がありますか?私は、例えば持っているものだ は、各顧客が複数の製品を持つことができ、顧客/製品/ product_eventsさまざまなテーブル間のDB関係のアプローチを理解しようとする

があると言うことができますが、製品は、各製品が複数のイベント

だからここ

を持つことができ、複数の顧客を持つことはできません

customers   products       product_events 
-----------  ------------------------------  ------------------------ 
id | name   id | customer_id | name    id | product_id | event_title 

私はこれがここで1 =>多くの関係

が、ある推測などの製品と、それらのいくつかの大規模な数であるか、または(製品)、それらの多くを言うことができますアッシではないかもしれませんができ

したがって、製品と顧客の製品のリストを保持するためには、顧客との製品の関係を定義するための中間テーブルを用意することが良いでしょうか?これらの構造体の使用方法の大半を

それでは、どのようにこのstuctureについて

customers   products  customer_products     
-----------  ---------------  ------------------------------  
id | name   id | name  id | customer_id | product_id 

product_events 
--------------------- 
id | product_id | event_title 

特定の顧客による製品のイベントのリストを取得することになる

答えて

1

products表にcustomer_id列を持つことは、その一つだけを意味しますお客様は特定の製品を持つことができます。たとえば、あなたと私は同じモデルのラップトップを購入することはできませんでした。

中間値を持つと、適切な方法でテーブルが聞こえます。

+0

しかし、兄弟、主なものは同じ顧客の1人だけに販売することができますこの製品のモデル番号はこの例では –

+0

です@MuhammadNawazMemon元のアプローチについての懸念を明確にすることはできますか?各製品が正確に1人の顧客に属していれば、それは正しい方法のように思えます。売れ残った商品に 'null'を使うだけです。 – Mureinik

+0

これは私が現在持っているものです。 しかし、nullの可能性があるので、私は商品テーブルのcustomer_idにforeign_keyを設定できません。製品のために未販売です。 この場合、どうしたらいいですか? –

0

「得意先」テーブルと「製品」テーブルを考慮すると、多対多関係が2つのテーブル間に出荷されます。したがって、関係を維持するために3番目のテーブルを作成する必要があります。その第3のテーブルは、両方の関係テーブルの2つの主キーと、関係のための骨の他の属性を含むべきである。 3番目のテーブルの主キーは、両方のリレーションテーブルのキーの組み合わせである必要があります。

+0

多くの:多くのテーブルでは、 'id'の必要はありません。 my [_tips_](http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table)を参照してください。 –

関連する問題