在我的数据库中,我有一个表用于"标签";。所以,在我的主表中,我想给每个项目多个标签。
例如,如果我的主表是dog
,我想为small
、brown
和mean
添加标记。但在我的tags
表中,我可能有50个可能的标签。如果我愿意的话,每个dog
可以有很多标签。
我该怎么做?
我真的不想用布尔值为主表中的每个标记创建一列。有没有办法在一个字段中指定多个标记?
(我不习惯使用数据库,所以这听起来可能很愚蠢。(
最终,目标是能够得到所有符合特定标签的狗。
您正在描述狗和标签之间的多对多关系。您通常会用一个桥接表来表示它,该桥接表引用另外两个存储dogs和标记的引用表。
假设引用表的结构如下:
create table dogs (
dog_id int primary key,
name text
);
create table tags (
tag_id int primary key,
name text
);
您可以将桥接表创建为:
create table dogs_tags (
dog_id int references dogs(dog_id),
tag_id int references tags(tag_id),
primary key (dog_id, tag_id)
);