所以我要做的是设置一个标签和同义词结构。可以将标记指定为另一个标记的同义词。
例如:标签:摄影师
我想把“摄影,摄影师,照片”作为“摄影师”的同义词。
我提议的方法是,所有synoynms都创建为标记&通过在第二个表上执行1<->1关系,将标记与同义词关联起来。
以下是我的建议:
在这个表中,我们可以将一个标签作为同义词附加到另一个标签(例如,照片可以是摄影的同义词)
因此,我可以在一个标签中添加许多同义词。
这个解决方案可行吗?它能有所改进吗?我将用postgres编写这个模式。(欣赏任何提示:)
用例:
发布于 2017-05-01 11:26:52
因此,每个标签可以有一个或多个同义词,并且每个同义词都属于特定的标记。看起来很简单。我要提出的几点建议是:
(1)确保同义词在获得CHECKed之前完全是INSERTed。我已经看到了这样的情况:摄影/摄影/摄影{空白}存储在查找表中--尽管这3个单词对于最终用户来说有一个相同的含义(您可以使用to ()或LOWER()和RTRIM()/LTRIM()来防止这种情况)。尽可能在DDL代码中写入检查。
(2)我会对同义词表中的"description“列使用唯一的约束(例如,如果您不希望有重复的同义词--因为FK本身可能不会禁止这一点)。
(3)此外:你是否完全肯定一个具有相当广泛含义的同义词(类似于一个超级类型的名称)不能用于多个标签?在你的同义词--摄影,摄影师,照片--假设我们有一个标签叫做“图像”,那么“照片”也可以是这个的同义词(除了是“摄影师”的同义词)。您仍然可以对此进行建模,但为此您可能需要一个“交叉”表,因为在标记和同义词之间突然出现了多到多的关系。(如果你不清楚的话,请多问几个问题)。
https://dba.stackexchange.com/questions/172121
复制相似问题