我对数据库和SQL很陌生。我有一个任务,但我不知道如何解决这个问题。
假设我有一个名为Persons
的表。它包含以下列:userId
(主键),userName
和tags
。
Tags
是另一个表格,仅包含id
和tagName
。人可以有多个标签,例如:“足球”,“烹饪”等。
每个标记对应Tag
表格行。但我不确定如何实现这种关系。我怎样才能做到这一点?
我猜测它必须与外键有关,并使人员将列标记为一组外键。
答案 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))
通过这种方式,您可以拥有任意数量的标签,但标签数据不会存储在人的行内。你可以在一个字段中存储一系列值,但出于各种原因,这是一个非常糟糕的想法。