2010-05-21 52 views
5

我有兩張表 - 'business'和'business_contacts'。表A上的外鍵 - > B,表B上的外鍵 - > A.這是如何完成的?

business_contact表與業務表具有多對一的關係。此外,每個企業都有一個「主要聯繫」字段 - 我認爲這與business_contacts表是一對多的關係。

這個問題當然是因爲這會爲數據插入創建一個catch-22。由於這兩個字段都不能爲空,因此我無法插入business_contact,除非我有相應的業務,但在具有相應的business_contact之前,我無法插入業務。

如果任何人都可以幫我弄清楚應該如何處理相互的一對多關係,我會非常感激。

(項目正在MySQL的做,如果這有什麼差別)

回答

2

你可以從你的業務表中刪除「主要聯繫人」,並將其移動到business_contact表來代替:

business 
    - business_id 
    - name 
    - address 
    - blah 

business_contact 
    - business_contact_id 
    - business_id 
    - is_primary_contact (bit field) 

確定用於業務的主要聯繫人因此變成:

SELECT * FROM business_contact 
WHERE business_id = <somevalue> AND is_primary_contact = 1 
+0

您好螞蟻, 感謝您的迴應 - 我認爲這可能是我必須做的。我需要放置一個唯一的is_primary_Contact&business_id索引來確保只有一個主要的,但它應該完成工作。 – PlankTon 2010-05-21 15:23:18

0

你只需要創建一個外鍵引用您business表的主鍵

一個好主意,可能是有你的主要聯繫人直接在您的業務表,讓你的business_contacts表只是抱着「次要聯繫人」

僞代碼:

​​
0

你可以讓'主要聯繫人'爲空嗎? 然後,您可以插入一個商家,然後插入一個business_contact,然後您可以設置'主要聯繫人'字段。

或者爲MySQL,你可以做(​​但我不會推薦它。):

/*!40014 SET FOREIGN_KEY_CHECKS=0 */; 

... your statements ... 

/*!40014 SET FOREIGN_KEY_CHECKS=1 */; 
相關問題