|
|
|
Глобальный генератор
|
|||
|---|---|---|---|
|
#18+
Всем добрый день! Перевожу БД с ФБ на MySQL. Задался таким вопросом как локализация. Значения которые в бд возможно придётся переводить на другие языки. Какую реализация вижу я. Сделать для всех таблиц в базе общий глобальный генератор. В табилцу локализации писать id нужной записи, указывать язык и значение т.е. в какой-то таблице есть запись id - 1235 name - Дверь в таблице локализации id -1235 lang - en value - door и если указатель языка отличается от стандартного (ru) то брать значение из этой таблицы. Но что-то не могу найти как создать такой глобальный генератор и привязать аутоинкремент в таблицах базы к нему, прошу помощь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:52:45 |
|
||
|
Глобальный генератор
|
|||
|---|---|---|---|
|
#18+
Dozentи если указатель языка отличается от стандартного (ru) то брать значение из этой таблицыОсталось сделать следующий логический шаг и отказаться от "стандартного языка", перейдя к приоритету языков, в котором следует производить выбор, если для запрошенного языка запись отсутствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 16:15:05 |
|
||
|
Глобальный генератор
|
|||
|---|---|---|---|
|
#18+
Спасибо за совет, это я не учёл. Но всё ещё не могу найти как сделать глобальный генератор. Да и я немножко переделаю схему у меня в каждой необходимой таблице будет поле ещё одно которые будет отвечать за id локализации. Как привязать это поле к глобальному генератору? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 16:20:34 |
|
||
|
Глобальный генератор
|
|||
|---|---|---|---|
|
#18+
Какой "глобальный генератор"? В предложенной мной схеме у тебя будет одна таблица слов (ИД слова, ИД языка, слово, уникальный индекс из пары ИДов). Ну и возможно таблица языков с приоритетом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 20:35:06 |
|
||
|
Глобальный генератор
|
|||
|---|---|---|---|
|
#18+
Akina, ну у них там так принято. Есть генераторы и они генерируют уникальные значения, которые триггерами записывают значения в primary key. А в mysql принято вставлять в таблицу (с дефолтным языком в данном случае) с auto_increment, получать это значение и использовать либо как поле, либо с функцией LAST_INSERT_ID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 11:08:20 |
|
||
|
Глобальный генератор
|
|||
|---|---|---|---|
|
#18+
Подождите. Как мне поможет аутинкремент тут? Я сейчас делаю так есть таблица localization_id: id- чтобы получить новое id - аутоинкремент localization: (сложный ключи id,lang) id- из таблицы localization_id lang -я язык (ru, en....) value - значение таблица с данными: id - аутоинкремент внутри таблицы id_localization- внешний ключи на таблицу localization которая отфильтрована по нужному языку ТАкая реализация высчитаете плохая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 11:57:09 |
|
||
|
Глобальный генератор
|
|||
|---|---|---|---|
|
#18+
netwindу них там так принято. Есть генераторы и они генерируют уникальные значения, которые триггерами записывают значения в primary key.А собсно никто не мешает организовать всё то же в MySQL. Пользовательские функции и триггеры у тебя никто не отбирал. DozentЯ сейчас делаю так есть таблица Вот тут я ни хрена не понял. По моей схеме у тебя есть две таблицы. Таблица языков (которые ты называешь локализациями) languages: IDlanguagepriority1russian12english2......... И таблица слов words: IDID_languageword11Открыть12Open.........21Сохранить22Save......... Настройка на требуемую на конкретной рабочей станции локализацию производится изменением значений поля languages.priority. А выборка нужного тебе слова производится по его идентификатору с учётом приоритетов языка: Код: sql 1. 2. 3. 4. 5. 6. Если есть версия для предпочитаемого языка (у которого languages.priority = 1) - получишь его, если нет - получишь вариант для языка с приоритетом 2 (если и такого нет- 3, и так далее). Если такого слова в таблице нет вообще - ожидаемо ни хрена не получишь. Если какой-то язык не нужно выводить ни при каких обстоятельствах - ну указывай для него, например, в качестве приоритета NULL, и добавь соотв. условие в запрос. Это всё при условии, что я верно понимаю поставленную тобой задачу. В чём у меня есть определённые сомнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 13:44:45 |
|
||
|
Глобальный генератор
|
|||
|---|---|---|---|
|
#18+
AkinaА собсно никто не мешает организовать всё то же в MySQL. Пользовательские функции и триггеры у тебя никто не отбирал. ну там есть особенности : генераторы как бы вне транзакций работают. не выдают разным потокам одни и те же данные и почти совсем не блокируются. Делать аналог на UDF будет сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 14:04:58 |
|
||
|
Глобальный генератор
|
|||
|---|---|---|---|
|
#18+
DozentЗначения которые в бд возможно придётся переводить на другие языки. тут еще не ясно будут ли вообще переводить, а вы уже приоритетами все усложнили ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 14:13:51 |
|
||
|
|

start [/forum/search_topic.php?author=All4One&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 672ms |
| total: | 777ms |

| 0 / 0 |
