Здравствуйте.
Пишу самописный новостной сайт на PHP.
Новости будут на двух языках и хранится в таблице MySQL.
Вот думаю, чтобы быстрее будет работать (так как новостей будет очень много - очень важна скорость и производительность). Вопрос в том как построить таблицу в БД, где будут хранится новости.
Первый вариант:
1. id | subject_ua | subject_ru | text_ua | text_ru| tags_ua | tags_ru
или второй вариант, делать для каждого языка свою таблицу в БД? Или лучше держать все таки в одной таблице?
самое простое решение (имхо самое верное) :
id | subject | text tags | lang_id | group_id
group_id будет объединять одинаковые новости на разных языках, при переходе с одного языка на другой выборку из базы делаешь по lang_id - выбираются все новости на нужном языке.
и табличку справочник языков
id | prefix | lang_name
1 | ru | Русский
2 | ua | Украинский
нет, на каждую новость на 1 языке все равно надо будет делать отдельное добавление, например если у вас будет новость только на одном языке, или допустим будут 2 админа, каждый для своего языка, короче много есть нюансов, у меня реализовано как 1 форма с полями, + ссылки на все языки ввода новости над формой, например ссылка на редактирование новости на украинском с group_id = 6 у меня будет выглядеть так: mysite.dom/admin/news/edit/6/2, на русском /6/1
индексы по обоим полям, выборки по ним будут интенсивными.
нет. group_id вносим ручками, это объединяющий ключ для записей на разных языках, т.е. при создании новой записи делаем выборку max(group_id) из базы, добавляем 1, создаем новую запись в базу с этим group_id, теперь у нас этот групид забинден для этой новости, при редактировании можно переключиться на другой язык и вписать новость на нем, тогда групид будет браться из урл, а не создаваться по новой, а у новой записи будет лангид другой.