powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
8 сообщений из 8, страница 1 из 1
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
    #37546216
MAR91NAL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Нужен совет знающих людей. Я ради интереса и общего развития хочу сделать свой сайт, однако не знаю как именно реализовать то, что мне нужно, и можно ли вообще это сделать. Идея - сайт музыкальных, киношных и игровых новостей, связанных с конкретными релизами. Одной из особенностей является автоматическая мультиязычность. Как я себе это представляю (для упрощения вопроса пусть у нас будут только музыкальные новости):
есть таблица "music news", содержащая следующие поля:
ID новости (PK),
ID типа события (FK) (анонс, начало записи, объявление треклиста, выход на CD и т.д.),
ID объекта (FK) (конкретный музыкальный релиз),
ID автора новости (FK),
дата события,
дата публикации новости.
Так вот, каждая новость на сайте - это, по сути, текст вроде "2011.11.11 - Певица Adele выпустила альбом "21", который формируется из конкретной строчки в таблице "music news". Однако в этой таблице указаны только ID, которые уже ведут к конкретным типам новостей и названиям релизов в других таблицах.
А теперь вопрос: можно ли сделать так, чтобы в зависимости от страны пользователя, дочерние таблицы - "objects" и "releases types", в данном случае, - были бы разными (например, "releases types russian" и "releases types english"? Т.е. ты заходишь с РФ и видишь "2011.11.11 - Певица Adele выпустила альбом "21", а заходишь с США - "2011.11.11 - Singer Adele released her album "21", при этом это одна и та же новость.
Для меня, неразбирающегося человека, такая конструкция кажется более удобной, чем иметь несколько одинаковых копий "music news" для каждого языка: "music news russian", "music news english", "music news germany" и т.д.
Если так делать можно, тогда следующие вопросы: а имеет ли смысл делать именно так? в каких БД можно такое сделать (я пробую в MySQL)? Какие команды использовать? Можно ли реализовать подобный механизм не средствами БД, а как-нибудь по-другому?
...
Рейтинг: 0 / 0
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
    #37546339
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользуемся поиском. Недавно было
http://www.sql.ru/forum/actualthread.aspx?tid=888283
...
Рейтинг: 0 / 0
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
    #37546448
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAR91NALможно ли сделать так, чтобы в зависимости от страны пользователя, дочерние таблицы -
"objects" и "releases types", в данном случае, - были бы разными

Можно, но это будет геморрой страшный как для тебя, так и для пользователя.

Тебе придётся громоздить динамические запросы, что просадит производительность.

Пользователь будет видеть текст по текущей стране пребывания вместо того к которому он
привык. Ты должен выбирать язык не по стране, а по предпочтениям, установленным в
браузере. Никогда не видел там пункт "предпочитаемый язык", причём не как выбор, а как
список по убыванию предпочтительности?..
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
    #37546499
MAR91NAL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257Пользуемся поиском. Недавно было
http://www.sql.ru/forum/actualthread.aspx?tid=888283
Спасибо за наводку, кое-что прояснил из похожих тем, но не все.
Dimitry SibiryakovПользователь будет видеть текст по текущей стране пребывания вместо того к которому он привык. Ты должен выбирать язык не по стране, а по предпочтениям, установленным в
браузере. Никогда не видел там пункт "предпочитаемый язык", причём не как выбор, а как
список по убыванию предпочтительности?..

Проблемы с выбором языка на самом деле нет. Подразумевается, что большинство пользователей будут зарегистрированы, и нужный им язык будет выбран в настройках профиля. А для тех, кто зашел первый раз, видеть сайт на языке страны - нормально.
Dimitry SibiryakovТебе придётся громоздить динамические запросы, что просадит производительность.

Тогда какой вариант вы предлагаете? Делать копию гигантской главной таблицы с новостями для каждого языка?
...
Рейтинг: 0 / 0
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
    #37546527
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAR91NALТогда какой вариант вы предлагаете? Делать копию гигантской главной таблицы с новостями
для каждого языка?

Зачем копию? Все новости на всех языках в одной таблице. Каждая новость имеет уникальный
ID (на всех языках). При показе выбирается запросом
Код: plaintext
select ... from ... order by <user preference list> limit  1 
Это автоматически даст пользователю новость в том языке, который он предпочитает или (если
новости на таком языке нет) - на языке по умолчанию.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
    #37546621
MAR91NAL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточню, чтобы быть уверенным, что мы говорим об одном и том же. Сама новость у меня не содержит текстовой информации. Это просто совокупность значений: дата, id объекта и id типа события. Существуют отдельные таблицы объектов и таблицы типов событий для каждого языка, но значения в них по смыслу совпадают. Т.е. в таблице "russian news types" у id=12 будет name="анонс релиза", а в таблице "english news types" под тем же id=12 будет name="release announcement".
Так вот я хочу, чтобы для одних пользователей главная таблица брала расшифровку из одной дочерней таблицы, для других - из другой и т.д. То, как вы предлагаете, это сделать в главной таблице вместо "ID типа события и ID объекта" такой вариант "ID типа события rus, ID объекта rus, ID типа события eng, ID объекта eng, ID типа события germ и т.д." и обращаться уже к нужным ячейкам. Это решение, конечно, но очень неудобное. Должно же быть что-то специально для такого случая?
...
Рейтинг: 0 / 0
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
    #37546851
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Информация на всех языках должна храниться в одной таблице, имеющей поле ID языка. Для каждого языка своя строка а не поле.
...
Рейтинг: 0 / 0
Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
    #37546919
Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ы
Гость
MAR91NAL…Сама новость у меня не содержит текстовой информации. Это просто совокупность значений: дата, id объекта и id типа события. Существуют отдельные таблицы объектов и таблицы типов событий для каждого языка, но значения в них по смыслу совпадают. Т.е. в таблице "russian news types" у id=12 будет name="анонс релиза", а в таблице "english news types" под тем же id=12 будет name="release announcement".
Так вот я хочу, чтобы для одних пользователей главная таблица брала расшифровку из одной дочерней таблицы, для других - из другой и т.д.…

Вар. 1. В основной таблице оставить только ID и сделать дополнительные для переводов, напр., типов можно так:
idlangtxt1enrelease announcement1ruанонс релиза

Вар. 2. Генерировать текст новости из ID/кодов отдельной процедурой для каждого языка. Так проще с грамматикой, которая у всех языков разная.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Дочерняя таблица выбирается в зависимости от страны пользователя. Как сделать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]