我想创建一个同义词和反义词的数据库,但我不知道如何建立表之间的关系以获得更好的性能以及我应该创建哪个索引。
首先我想:
table name: synonymous
id (int) primary key
name (varchar) text index
syn_group_id (int)
ant_group_id (int)
因此所有同义词将具有相同的syn_group_id,但这是不可能的,因为所有单词不共享相同的同义词,对于反义词也是如此。所以我完全不知道如何做到这一点。
答案 0 :(得分:1)
我会想象你可以简单地拥有这样的结构:
table: Words
id(int, autoindex,primary,key)
word(varchar, unique index)
table: Synonyms
lookup_id, related_id (both int related to words table id field with compound primary key indexing)
table: Antonyms (same structure as synonyms)
同义词和反义词表只是与单词表相关的多对多连接表。
所以样本查询查询可以是:
SELECT w.word FROM words as w INNER JOIN synonyms as s on w.id = s.related_id WHERE s.lookup_id = [LOOKUP_ID];