【问题标题】:How to add references to multiple "tags"?如何添加对多个“标签”的引用?
【发布时间】:2021-02-27 05:28:48
【问题描述】:

在我的数据库中,我有一个“标签”表。所以,在我的主表中,我想给每个项目多个标签。

例如,如果我的主表是dog,我想为small brownmean 添加标签。但在我的tags 表中,我可能有50 个可能的标签。如果我愿意,每个dog 可以有尽可能多的标签。

我该怎么做?

我真的不想用布尔值为主表中的每个标记创建一列。有没有办法在一个字段中指定多个标签?

(我不太习惯使用数据库,所以这听起来可能很愚蠢。)

最终,目标是能够获得所有匹配特定标签的狗。

【问题讨论】:

    标签: sql sqlite database-design foreign-keys many-to-many


    【解决方案1】:

    您正在描述狗和标签之间的多对多关系。您通常会用一个桥接表来表示它,它引用另外两个存储狗和标签的参考表。

    假设引用表的结构如下:

    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)
    );
    

    【讨论】:

    • 等等 - 我将如何指定狗表中的标签?我通常会为狗添加标签,并在狗表中直观地进行操作。
    • @bgmCoder:您将每条狗的标签存储在桥表中,而不是狗表中。
    • 好的,那只允许您将一只狗与一个标签匹配;我想每次我想标记它时我都应该再次进入它?
    • @bgmCoder:是的,您可以在桥表中为给定的狗创建任意数量的行。
    • 呃,还有一件事……你能告诉我获取带有三个标签的狗的查询字符串吗? (嘻嘻 - 嗯,谢谢!)一旦我看到这样的东西,我就可以操纵然后更好地理解。它对我有很大帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    相关资源
    最近更新 更多