0

同義語と反意語のデータベースを作成したいのですが、パフォーマンスを向上させるためにテーブル間の関係を作成する方法と、どのインデックスを作成すればよいかわかりません。

最初に私は考えました:

table name: synonymous
id (int) primary key
name (varchar) text index
syn_group_id (int)
ant_group_id (int)  

したがって、すべての同義語は同じ syn_group_id を持ちますが、すべての単語が同じ同義語を共有していないため、これは不可能です。同じことが反意語にも起こります。そのため、これを行う方法が完全にわかりません。

4

1 に答える 1

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];
于 2012-08-01T17:05:26.000 に答える