包含表行值数组的SQL列
问题描述:
我对数据库和SQL很陌生。我有一个任务,但我不知道如何解决这个问题。包含表行值数组的SQL列
比方说,我有表名为Persons
。它有以下列:userId
(主键),userName
和tags
。
Tags
是另一张表,仅包含id
和tagName
。人可以有多个标签,例如:“足球”,“烹饪”等。
每个标签对应于Tag
表格行。但我不确定如何实现这种关系。我怎样才能做到这一点?
我猜它必须做一些外键和使人标记列的外键数组。
答
您通常希望有一个关系表(这称为多对多关系,或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))
这种方式,您可以有或多或少的标签,只要你喜欢,但标签数据不存储在行的人。您可能会在一个字段中存储一系列值,但由于各种原因,这是一个非常糟糕的想法。
答
只是补充@ JNK的答案。 你可以使用ON DELETE CASCADE选项创建你的外键给人,这意味着当一个人被删除时,属于它的所有标签(PersonTags上的记录)也将被删除,但是TAG本身不会发生任何事情标签表