我有一个包含两个表的数据库: products和同义词。当用户键入一个或几个单词在products.description字段中搜索时,我也想搜索所有的同义词/替换词。
同义词表是基本的,必须列: word1和word2。其内容的例子:
在SQL中,当用户输入"chiptune“时,我如何向用户展示"lofi”这个词的形象?我试图实现的是“同义词之间的循环”,在这两方面。
如果你有想法的话,谢谢你。
发布于 2020-12-27 11:35:00
为了避免图中循环的问题,我建议您重新设计结构,以便:
CREATE TABLE products
( product_id ... NOT NULL PRIMARY KEY
, ...
);
CREATE TABLE synonym_groups
( synonym_group_id ... NOT NULL PRIMARY KEY
, ...
);
CREATE TABLE synonym_group_products
( synonym_group_id ... NOT NULL
, product_id NOT NULL PRIMARY KEY -- A product belongs to exactly one group
, CONSTRAINT ...
FOREIGN KEY (synonym_group_id)
REFERENCES synonym_groups (synonym_group_id)
, CONSTRAINT ...
FOREIGN KEY (product_id)
REFERENCES products (product_id)
);我创建了一个小提琴,我只是使用整数作为键,因为我不知道什么可以识别您的实体。要获得芯片音的同义词:
select p2.*
FROM products p1
JOIN synonym_group_products sgp1
ON p1.product_id = sgp1.product_id
JOIN synonym_group_products sgp2
ON sgp1.synonym_group_id = sgp2.synonym_group_id
JOIN products p2
ON sgp2.product_id = p2.product_id
WHERE p1.product_name = 'chiptune'
AND p1.product_id <> p2.product_id;https://dba.stackexchange.com/questions/282166
复制相似问题