为了账号安全,请及时绑定邮箱和手机立即绑定

在 MYSQL 数据库中存储和查询标签的最有效方法是什么

在 MYSQL 数据库中存储和查询标签的最有效方法是什么

PHP
元芳怎么了 2021-07-08 13:01:55
我正在构建我的 MYSQL 表,我正在使用 Laravel 构建一个平台,用户可以在其中上传包含描述的图像。此描述将包括主题标签。现在我想知道存储描述和搜索它的最有效方法可能是什么。最初我想将描述作为一个整体存储在单个文本列中,并在为该列建立索引后进行简单的搜索。这将允许用户通过主题标签和一般词进行搜索。然后我想知道提取主题标签并将其存储在自己的表中与照片 ID 是否会更有效。如果这个想法只能按标签搜索,那么这个想法会很有效,但您也可以按常规词进行搜索。任何人都可以确认最好的方法是什么,甚至建议另一种方法。
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

存储数据的方式取决于您希望如何访问数据。

如果您只想查看描述和哈希标签,那么您可以将它们放入一个未编入索引的字段中,并在每个图像的时间获取它们。

从您指定的内容来看,您似乎想要一个descriptions可作为文本搜索的列。这可能足以满足您的目的。

但是,如果您希望能够专门询问有关哈希标签的问题,例如:

  • 数据库中有哪些哈希标签,有多少?

  • 特定图像或一组图像上有哪些哈希标签?

  • 两个图像有哪些共同的哈希标签?

  • 哪些散列标签“包含”其他散列标签(即#cat 和#catamaran)?

那么您将需要一个单独的哈希标签表。我的建议是将两者结合起来。就像是:

create table images (

    imageId int auto_increment primary key,

    description text,

    createdAt datetime,

    createdBy varchar(255),

    fulltext (description)

);


create table imageHashtags as (

    imageHashtagId auto_increment primary key,

    imageId int not null,

    hashtag varchar(255),

    constraint fk_imagehashtags_imageid foreign key (imageid) references images(imageid),

    index (hashtag)

);

可以想象,您可能需要一个主题标签本身的参考表,这样它们就不会在表中重复。没有足够的信息来知道这是否是一种好方法。


查看完整回答
反对 回复 2021-07-09
  • 1 回答
  • 0 关注
  • 252 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信