2012-07-13 34 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 
相关问题