包含表行值数组的SQL列

时间:2012-02-20 13:05:22

标签: sql foreign-keys

我对数据库和SQL很陌生。我有一个任务,但我不知道如何解决这个问题。

假设我有一个名为Persons的表。它包含以下列:userId(主键),userNametags

Tags是另一个表格,仅包含idtagName。人可以有多个标签,例如:“足球”,“烹饪”等。

每个标记对应Tag表格行。但我不确定如何实现这种关系。我怎样才能做到这一点?

我猜测它必须与外键有关,并使人员将列标记为一组外键。

1 个答案:

答案 0 :(得分:9)

您通常希望拥有一个关系表(这称为多对多关系,或M:M)。

Persons(id int, name varchar(40)...)

Tags(id int, name varchar(40)....)

PersonTags(id int,
           personid FOREIGN KEY References Persons(id), 
           TagId FOREIGN KEY references Tags(id))

通过这种方式,您可以拥有任意数量的标签,但标签数据不会存储在人的行内。你可以在一个字段中存储一系列值,但出于各种原因,这是一个非常糟糕的想法。