Здравствуйте, Makc2, Вы писали:
M>А у меня отдельная таблица с переводами — это таблица связей сущностей на разных языках. Идентификаторы сущностей на разных языках разные, то есть первичный ключ — это просто идентификатор сущности, а не идентификатор плюс язык. Если вдруг пользователь на странице сущности поменяет язык, то происходит клиентский редирект на ту же страницу, но с идентификатором той связанной через таблицу переводов сущности, которая соответствует выбранному языку. Проблем ни разу не возникало. Отдельная таблица ресурсов мне кажется не оптимальным решением, так как она большая и требует отдельного запроса к базе.
Я и не говорю, что решение оптимальное. Оно простое и достаточно эффективное для некоторых случаев. Надо исходить из реальных задач, а в моем случае реальность такова, что перевод делается редко, а значит и таблица небольшая. Собственно, даже если бы она и была большой, то ничего страшного — индекс по идентификатору строки, на которую сделан перевод, очень селективный. Отдельного запроса к базе для перевода, конечно же, не надо: достаточно написать функцию получения перевода и вызывать ее прямо в запросе. Да, это еще одна выборка, но она не требует перехода с клиента на сервер и выполняется очень быстро.