@Sulin

Как правильно спроектировать БД?

Как лучше спроектировать БД для многоязычных страниц?

есть страницы текстовые, они могут быть на неограниченном количестве языков, хоть на 1 хоть на 2,3, 10 языках. все переводы задаются вручную в админке, никаких автоматических переводов нет.

у страницы есть общие данные независящие от количества языков, например статус (вкл. выкл.) или ЧПУ (он один для страницы на любом языке)

если все сливать в одну таблицу то из-за автоинкримента мы получим разные id для каждого перевода как будто это разные страницы.

напрашивается вариант в одной таблице хранить общие данные, в ней же мы получим id
а в другой таблице хранить остальную информацию, без каких либо автоинкриментов, с задачей id страницы который получили добавляя общие данные и с id языка. Языки хранятся в отдельной таблице.

при редактировании страницы информация на всех языках должна разом вытягиваться.

Есть ли какие-то другие варианты как спроектировать получше, поудобнее, гибче может быть?
  • Вопрос задан
  • 234 просмотра
Пригласить эксперта
Ответы на вопрос 3
vodnicear
@vodnicear
Добавить префикс таблиц, например articles_ru и articles_en.
Ответ написан
thewind
@thewind
php программист, front / backend developer
напрашивается вариант в одной таблице хранить общие данные, в ней же мы получим id
а в другой таблице хранить остальную информацию, без каких либо автоинкриментов, с задачей id страницы который получили добавляя общие данные и с id языка. Языки хранятся в отдельной таблице.

имхо, самый логичный вариант. Почему нет?
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Правильный вариант: для записей хранить id, groupid - общий идентификатор для группы материалов на разных языках, languageid - поле языка конкретной записи. В остальном записи идентичны.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы