2012-07-13 150 views
2

我在phpmyadmin中創建了兩個簡單的表。 「內容創建者」列表和「內容創建者類型」列表。每個「內容創建者」可以有多個與它們相關聯的「內容創建者類型」,因此這是一對多的關係。在phpmyadmin中,我創建了以下關係。如何在MySQL的單列中插入多個值

ALTER TABLE `contentcreator` 
ADD FOREIGN KEY ( `ContCreat_TypeID`) 
    REFERENCES `MyDatabase`.`contentcreator_types` (`ContCreat_TypeID`) 
    ON DELETE RESTRICT ON UPDATE RESTRICT ; 

現在,當我嘗試插入數據(使用phpmyadmin的插入數據接口)到表「內容創建者」 - 我得到一個下拉,讓我選擇「內容創建者類型ID」之一。不過,我希望能夠爲每個內容創建者添加多個「內容創作者類型ID」。我如何使用插入數據接口在phpmyadmin中執行此操作?

+3

你確定這是不是一個多對多的關係,以創作者與他們相關聯的類型?創作者可以有多種類型,一種類型可以在很多創作者身上 – 2012-07-13 16:32:15

+0

它實際上是一個多對多的關係。您將需要第三張表,其中FK引用您的內容創建者表的PK和您的內容創建者類型表的PK。這通常稱爲連接點或連接表。 – 2012-07-13 16:32:51

+0

謝謝你指出我的錯誤。建議我將創建一個聯結表。 – Ansh 2012-07-13 16:43:02

回答

1

聽起來你在這裏有多對多的關係,而不是一對多。您需要使用外鍵將交集表添加到類型表和內容創建者表中。

如果你想這樣做是一對多的關係,很多方面獲得外鍵,而不是一方。這意味着您將在內容創建者類型表上的內容Creators表中擁有一個外鍵。然後,每個內容創建者都會在類型表中爲它所擁有的每種類型獲取一個新條目,但是在這種情況下會出現重複。

多對多:

ContentCreatorID CreatorName 
---------------- ------------------ 
1    Creator1 
2    Creator2 
3    Creator3 

CreatorTypes (intersection Table) 


ContentCreatorID TypeID 
---------------- ------------------ 
1    1 
1    2 
2    3 
3    2 


Types 

TypeID   TypeName 
---------------- ------------------ 
1     Type1 
2     Type2 
3     Type3 
+0

感謝您的提示!我將按照建議添加交叉表來連接兩者。 – Ansh 2012-07-13 16:44:25

0

你可能要考慮創建一個映射表

creator table 
    id | creator 

    type table 
    id | type 

    mapping table 
    creator_id | type_id 
相關問題