首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标签和同义词表设计

标签和同义词表设计
EN

Database Administration用户
提问于 2017-04-27 06:34:14
回答 1查看 660关注 0票数 2

所以我要做的是设置一个标签和同义词结构。可以将标记指定为另一个标记的同义词。

例如:标签:摄影师

我想把“摄影,摄影师,照片”作为“摄影师”的同义词。

我提议的方法是,所有synoynms都创建为标记&通过在第二个表上执行1<->1关系,将标记与同义词关联起来。

以下是我的建议:

标签:

  • tag_id
  • 标题
  • 这里有更多元数据字段..。

同义词:

在这个表中,我们可以将一个标签作为同义词附加到另一个标签(例如,照片可以是摄影的同义词)

  • tag_id (我们附加了一个同义词的标签)
  • synonym_tag_id (将成为同义词的tag_id )

因此,我可以在一个标签中添加许多同义词。

这个解决方案可行吗?它能有所改进吗?我将用postgres编写这个模式。(欣赏任何提示:)

用例:

  1. 用户的应用程序将能够附加标签到那里的文章。如果用户添加了摄影作为文章标题,我们的搜索也将显示带有照片同义词作为标签的文章。
  2. 请注意,我们不是使用SQL进行搜索,而是使用elaticsearch。sql只用于存储数据,以便以后可以导入elasticsearch。
EN

回答 1

Database Administration用户

发布于 2017-05-01 11:26:52

因此,每个标签可以有一个或多个同义词,并且每个同义词都属于特定的标记。看起来很简单。我要提出的几点建议是:

(1)确保同义词在获得CHECKed之前完全是INSERTed。我已经看到了这样的情况:摄影/摄影/摄影{空白}存储在查找表中--尽管这3个单词对于最终用户来说有一个相同的含义(您可以使用to ()或LOWER()和RTRIM()/LTRIM()来防止这种情况)。尽可能在DDL代码中写入检查。

(2)我会对同义词表中的"description“列使用唯一的约束(例如,如果您不希望有重复的同义词--因为FK本身可能不会禁止这一点)。

(3)此外:你是否完全肯定一个具有相当广泛含义的同义词(类似于一个超级类型的名称)不能用于多个标签?在你的同义词--摄影,摄影师,照片--假设我们有一个标签叫做“图像”,那么“照片”也可以是这个的同义词(除了是“摄影师”的同义词)。您仍然可以对此进行建模,但为此您可能需要一个“交叉”表,因为在标记和同义词之间突然出现了多到多的关系。(如果你不清楚的话,请多问几个问题)。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/172121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档