2012-03-16 50 views
0

我有桌客戶,餐桌賣家;每個顧客都有很多電話號碼,正如賣家所做的那樣。我決定做新表:使用IdTelephone,Prefix,Number和IdCustomer或IdSeller的電話,我不知道如何識別它,因爲IdCustomer可能與IdSeller相同,如何解決此問題? MySQL的如何用同一個id來規劃這樣的數據庫?

回答

1

你可以像這樣做,其中TelephonePerson包含CustomerID和TelephoneId潛在的空列;

Customer Table: 
    Id 
    *whatever customer details exist* 

Seller Table: 
    ID 
    *whatever seller details exist* 

TelephonePerson: 
    SellerId 
    CustomerId 
    TelephoneId 

Telephone: 
    ID 
    Phone Number 

Alterntaively,避免了額外的表,你可以像這樣做,那就是你有LINKID和PersonTypeId您的電話表。 PersonTypeId將引用賣方或客戶,並基於你加入到linkId的適當表上的內容;

Customer Table: 
    Id 
    *whatever customer details exist* 

Seller Table: 
    ID 
    *whatever seller details exist* 

Telephone: 
    ID 
    Phone Number 
    LinkId 
    PersonTypeId 
1

一個布爾列賣方或不

+0

不,賣方是一張表,帶有IdSeller:primary_key。顧客是餐桌,IdCustomer是主要關鍵。沒有布爾人 – byCoder 2012-03-16 09:47:25

+0

好吧,我知道你正在爲賣家或客戶計劃第三張電話表 – 2012-03-16 09:49:33

+0

是的,你去吧 – byCoder 2012-03-16 09:57:48

-1

最靈活的方式可能是以下幾點:

首先建立一箇中立的電話號碼錶。

Phone Numbers: 
    # Id 
    Phone Number 
    Prefix 

對於您的每個聯繫人(賣家,客戶,無論),創建一個N對N表。

Sellers 
    # Id 
    other fields... 
Seller Phone Numbers 
    # Phone Number Id 
    # Seller Id 

Customers 
    # Id 
    other fields... 
Customer Phone Numbers 
    # Phone Number Id 
    # Customer Id 

這樣:

  • 以後可以使用相同的模式
  • 賣家增加一個新的表和客戶既可以有一個共同的電話號碼
  • 你去管理比計劃多一點的桌子。
+0

心理評論downvote? – SandRock 2012-03-20 17:24:19

1

你用一個普通的人表對它進行建模,如果這個人既是一個顧客又是一個選擇者,他將在這兩個表中具有相同的ID。他也只會在與personID相關的電話,地址等中。

Person: 
    PersonID 
    *Details common to all people 
Customer: 
    PersonID 
    *whatever customer details exist* 
Sellere: 
    PersonID 
    *whatever seller details exist* 
TelephonePerson: 
    PersonId 
    TelephoneId 
Telephone: 
    PersonID 
    Phone Number 
相關問題