Нужно имея слово заданное найти его айдишник, затем просмотреть какие синонимы соотвествуют этому айдишнику, и выбрать синонимы.
Ну так все ж уже описал - просто пиши, как пишешь.
SELECT w.id, ws.id, ws.word
FROM words w, syninyms s, words ws
WHERE w.word = '.......'
AND (
s.w_id = w.id
OR s.s_id = w.id
)
AND ws.id IN (s.w_id, s.s_id);
К недостаткам этой базы отнесу то, что поиск идет по всем столбцам обеих таблиц, а значит и индексы нужно делать на все столбцы (как и какие - лучше проверить экспериментально).
Но кое что мне не понятно тут. Ведь у синонима может быть еще один синоним и т.д...
Вопрос такой: в таблице synonyms к каждому слову (естественно, только те, что имеют синонимы) имеется полный набор синонимов (каждый с каждым) или как?