powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Глобальный генератор
10 сообщений из 10, страница 1 из 1
Глобальный генератор
    #39030863
Dozent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добрый день!

Перевожу БД с ФБ на MySQL.

Задался таким вопросом как локализация. Значения которые в бд возможно придётся переводить на другие языки.
Какую реализация вижу я. Сделать для всех таблиц в базе общий глобальный генератор. В табилцу локализации писать id нужной записи, указывать язык и значение

т.е.

в какой-то таблице есть запись
id - 1235
name - Дверь


в таблице локализации
id -1235
lang - en
value - door

и если указатель языка отличается от стандартного (ru) то брать значение из этой таблицы.

Но что-то не могу найти как создать такой глобальный генератор и привязать аутоинкремент в таблицах базы к нему, прошу помощь
...
Рейтинг: 0 / 0
Глобальный генератор
    #39030899
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dozentи если указатель языка отличается от стандартного (ru) то брать значение из этой таблицыОсталось сделать следующий логический шаг и отказаться от "стандартного языка", перейдя к приоритету языков, в котором следует производить выбор, если для запрошенного языка запись отсутствует.
...
Рейтинг: 0 / 0
Глобальный генератор
    #39030910
Dozent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за совет, это я не учёл. Но всё ещё не могу найти как сделать глобальный генератор.
Да и я немножко переделаю схему у меня в каждой необходимой таблице будет поле ещё одно которые будет отвечать за id локализации.

Как привязать это поле к глобальному генератору?
...
Рейтинг: 0 / 0
Глобальный генератор
    #39031112
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой "глобальный генератор"? В предложенной мной схеме у тебя будет одна таблица слов (ИД слова, ИД языка, слово, уникальный индекс из пары ИДов). Ну и возможно таблица языков с приоритетом.
...
Рейтинг: 0 / 0
Глобальный генератор
    #39031404
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, ну у них там так принято. Есть генераторы и они генерируют уникальные значения, которые триггерами записывают значения в primary key.
А в mysql принято вставлять в таблицу (с дефолтным языком в данном случае) с auto_increment, получать это значение и использовать либо как поле, либо с функцией LAST_INSERT_ID.
...
Рейтинг: 0 / 0
Глобальный генератор
    #39031455
Dozent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подождите.
Как мне поможет аутинкремент тут?

Я сейчас делаю так есть таблица

localization_id:
id- чтобы получить новое id - аутоинкремент

localization: (сложный ключи id,lang)
id- из таблицы localization_id
lang -я язык (ru, en....)
value - значение

таблица с данными:
id - аутоинкремент внутри таблицы
id_localization- внешний ключи на таблицу localization которая отфильтрована по нужному языку

ТАкая реализация высчитаете плохая?
...
Рейтинг: 0 / 0
Глобальный генератор
    #39031572
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindу них там так принято. Есть генераторы и они генерируют уникальные значения, которые триггерами записывают значения в primary key.А собсно никто не мешает организовать всё то же в MySQL. Пользовательские функции и триггеры у тебя никто не отбирал.

DozentЯ сейчас делаю так есть таблица
Вот тут я ни хрена не понял.

По моей схеме у тебя есть две таблицы.
Таблица языков (которые ты называешь локализациями) languages:
IDlanguagepriority1russian12english2.........
И таблица слов words:
IDID_languageword11Открыть12Open.........21Сохранить22Save.........
Настройка на требуемую на конкретной рабочей станции локализацию производится изменением значений поля languages.priority. А выборка нужного тебе слова производится по его идентификатору с учётом приоритетов языка:
Код: sql
1.
2.
3.
4.
5.
6.
select words.word
from words,languages
where words.id = (ИД требуемого слова)
and words.id_language = languages.id
order by languages.priority asc
limit 1


Если есть версия для предпочитаемого языка (у которого languages.priority = 1) - получишь его, если нет - получишь вариант для языка с приоритетом 2 (если и такого нет- 3, и так далее). Если такого слова в таблице нет вообще - ожидаемо ни хрена не получишь.
Если какой-то язык не нужно выводить ни при каких обстоятельствах - ну указывай для него, например, в качестве приоритета NULL, и добавь соотв. условие в запрос.

Это всё при условии, что я верно понимаю поставленную тобой задачу. В чём у меня есть определённые сомнения.
...
Рейтинг: 0 / 0
Глобальный генератор
    #39031602
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaА собсно никто не мешает организовать всё то же в MySQL. Пользовательские функции и триггеры у тебя никто не отбирал.

ну там есть особенности : генераторы как бы вне транзакций работают. не выдают разным потокам одни и те же данные и почти совсем не блокируются.
Делать аналог на UDF будет сложно.
...
Рейтинг: 0 / 0
Глобальный генератор
    #39031620
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DozentЗначения которые в бд возможно придётся переводить на другие языки.

тут еще не ясно будут ли вообще переводить, а вы уже приоритетами все усложнили
...
Рейтинг: 0 / 0
Глобальный генератор
    #39031723
Dozent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Спасибо! Я по другому представлял, предложенный вами вариант лучше)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Глобальный генератор
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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