2017-08-25 9 views
-1

データベース設計... MySQLの

customers 
id 
name 
.... 

orders 
id 
customers_id 
.... 

上記の表は、1対多の関係を持っています。 しかし、私は顧客テーブルのデータを次のテーブル(グループまたは顧客タイプ)にしたい。 追加する場合は、customer_aを追加してください!しかし、それを追加しながらcustomer_bを追加したい場合は、それはcustomer_aのいずれかに属している必要があり年代とcustomer_cを追加しながら、それはcustomer_bのいずれかに属している必要があります 'が

"importer" "agent"   "distributor" "shops/malls/clients" 
Customer_a Customer_b  customer_c  customer_d 
id   id    id    id 
name  customer_a_id customer_b_id customer_c_id 
...   name   name   name 
      ...    ...    ... 

importer製品や各importerを購入... Sなどように&多くの場合、agentsagentにはそれぞれdistributorsがあり、各クライアントにはdistributorがあります。 注文を作成中に上記の4つのテーブルをcustomersテーブルに関連付ける方法は問題ですか? このシナリオにどのようにアプローチするかに関するアイデア???

+0

お客様との関係はどうですか? 1対多数または多対多 – Shadow

+1

あなたが意味するのは、それはcustomer_aのものの1つに属していなければならないということです。あなたの説明で何かのために 'orders'テーブルを使うことはありません。 'Cutomer_a'は' customers'のテーブルか行ですか? [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を向上させ、より良い回答を得る方法を学ぼう。 –

+0

私はあなたが非常に、非常に混乱していると感じるのを助けることができません。 :-( – Strawberry

答えて

0

あなたは、単一の顧客テーブルにしたい概念的な顧客構造を実装することができます:あなたは、その後Orders.Customer_ID = Customer.IDを経由してお客様に注文をリンクして、あなたがで記述階層を作成

Create Table Customer_Type 
(
    ID Int Identity Not Null 
    , Type_Description Varchar(20) 
) 
the data will be: 
ID  Type_Description 
1   Importer 
2   Agent 
3   Distributor 
4   Client 
... 


Create Table Customer 
(
    ID Int Identity Not Null 
    , Customer_Type_ID Int 
    , Parent_Customer_ID Int 
    , Name Varchar(100) 
    ... 
) 

をエージェントタイプの顧客レコードをCustomer.Parent_Customer_ID = Customer.ID経由で対応するImporterにリンクする

それは意味がありますか?