|
|
|
Храниение названий признаков на разных языках
|
|||
|---|---|---|---|
|
#18+
Пока идея такая - код признака и код языка - PK. Поимеем соответственно кластерный индекс. Или PK суррогатный, а код признака и код языка - составной уникальный индекс. А суть задачи - есть некотрое устройство, которое в текстовом виде присылает название и значение признака (по другому не умеет) название приходит на тарабарском языке. Идея - класть это все базу, привлечь переводчика и конечному пользователю показывать отчет на его любимом языке (искать по названию признака) и возвращать нужное Что посоветует почтенная публика? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 12:56 |
|
||
|
Храниение названий признаков на разных языках
|
|||
|---|---|---|---|
|
#18+
Классически - признаки отдельная таблица, названия - отдельная. Признаки: AttrId int - PK AttrValue nvarchar(100) Названия признаков: AttrLangId int - PK AttrId int - FK LangId int - FK - соответственно требуется еще одна таблица языков. AttrName nvarchar(100) Суть - атрибуты существуют сами по себе, независимо от языка, а их представление для разных языков различается. При построении отчета соответственно нужно указывать язык и отображать название атрибута в нужно языке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 13:08 |
|
||
|
Храниение названий признаков на разных языках
|
|||
|---|---|---|---|
|
#18+
Infernal V. RavenКлассически - признаки отдельная таблица, названия - отдельная. Признаки: AttrId int - PK AttrValue nvarchar(100) Названия признаков: AttrLangId int - PK AttrId int - FK LangId int - FK - соответственно требуется еще одна таблица языков. AttrName nvarchar(100) Суть - атрибуты существуют сами по себе, независимо от языка, а их представление для разных языков различается. При построении отчета соответственно нужно указывать язык и отображать название атрибута в нужно языке. Не совсем понял назначение AttrValue - для чего? Предполагалось делать граничную сущность в отношении Отчет-Признак и значения признаков для конкретного типа отчета хранить в двух полях (в зависимости от типа) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 13:15 |
|
||
|
Храниение названий признаков на разных языках
|
|||
|---|---|---|---|
|
#18+
Infernal V. RavenКлассически - признаки отдельная таблица, названия - отдельная. Значения признаков - третья. А в таблицу признаков добавить "классическое название", которое будет использоваться если имени на желаемом языке в БД нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 13:16 |
|
||
|
Храниение названий признаков на разных языках
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, как-то так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 13:30 |
|
||
|
Храниение названий признаков на разных языках
|
|||
|---|---|---|---|
|
#18+
waszkiewiczкак-то так? Да, как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 13:37 |
|
||
|
Храниение названий признаков на разных языках
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, спс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 13:42 |
|
||
|
Храниение названий признаков на разных языках
|
|||
|---|---|---|---|
|
#18+
waszkiewiczИдея - класть это все базу, привлечь переводчика и конечному пользователю показывать отчет на его любимом языке (искать по названию признака) и возвращать нужное Мистер знает толк в извращениях :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 17:48 |
|
||
|
Храниение названий признаков на разных языках
|
|||
|---|---|---|---|
|
#18+
Столкнулся с аналогичной темой недавно. Изначально было сделано по модели EAV таблица-справочник объектов id, name,....... таблица-справочник параметров id, name,.......,NameRussian, NameEnglish,... таблица носитель данных: id_object(int),id_parameter (int), Value, id_units А описании параметров не стал париться с многообразием языков, просто вбил жесткие колонки для 5 языках основных(Русский, Английский, Немецкий, Испанский, Французский, чисто и практических соображений что технологии, что промышленность, что интернет развит в странах, говорящих на этих языках, остальные подстраиваются. На клиента выносил данные из последней таблицы транспонируя одномерную таблицу в классический вариант как в экселе: строки имена объектов, колонки имена параметров. Для этого использовалась хранимая процедура из 160 строк (если красиво отформатировать). В зависимости от выбора языка - перетранспонировал данные и брал название из соответствующей колонки. Для отчетов-карточек объектов запрос получался еще проще - одномерная таблица со списком значений для соотвествующего объекта. ----- Новое тербование - хранить таблицу-описание объектов в аналогичном экселу виде, строки - объекты, колонки имена параметров. Начался тра...дром! Поскольку имена параметров для простоты надо хранить в латинском спеллинге (можно, конечно, все в скобки обрамлять, но сложные названия, это пепец), то для отчета и показа на клиента требуется ТРАНСЛИРОВАТЬ латинскую аббревиацию имени параметра в название колонки на соответствующем языке, а для этого НАДО иметь эту самую таблицу перевода на разные языки. Пришлось сделать почти точно такую же таблицу как в случае EAV модели, только в этом случае natural key было мое латинское имя параметра. Ну и, соответственно, много-много кода для проверки языка 5 IF-groups по 50 параметров, итого уже 250 строк как минимум при выносе данных на клиента. Короче, мое долгое повестование имеет целью вопрос - а н а х р е н а козе баян? В варианте EAV я ну запросто крутил данными, и даже если добавляется НОВЫЙ язык (что довольно редкое явление), всего несколько небольших изменений в коде, а в случае НОВОЙ парадигмы сверху - еще 50 проверок-трансляций как минимум и куча других изменений и на клиенте и на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 20:06 |
|
||
|
Храниение названий признаков на разных языках
|
|||
|---|---|---|---|
|
#18+
Alexander2Поскольку имена параметров для простоты надо хранить в латинском спеллинге (можно, конечно, все в скобки обрамлять, но сложные названия, это пепец), то для отчета и показа на клиента требуется ТРАНСЛИРОВАТЬ латинскую аббревиацию имени параметра в название колонки на соответствующем языке, а для этого НАДО иметь эту самую таблицу перевода на разные языки. Пришлось сделать почти точно такую же таблицу как в случае EAV модели, только в этом случае natural key было мое латинское имя параметра. Ну и, соответственно, много-много кода для проверки языка 5 IF-groups по 50 араметров, итого уже 250 строк как минимум при выносе данных на клиента. Что, у Вас код перевода названий колонок зависит от числа параметров и числа языков? А, ээ, зачем?. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 11:05 |
|
||
|
Храниение названий признаков на разных языках
|
|||
|---|---|---|---|
|
#18+
> а н а х р е н а козе баян? Хороший вопрос. Ответ - корректная локализация. Ключевой вопрос на самом деле в том, как вы одновременно обеспечиваете единообразное описание реляционных и не реляционных структур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 12:56 |
|
||
|
Храниение названий признаков на разных языках
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, guest_20040621 чтоб не портить тему TC, перенес обсуждение своего поста в новую ветку, если интересно, там картинку выложил, может она ответит на вопросы. новое обсуждение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 19:05 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38951735&tid=1540558]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
13ms |
check topic access: |
13ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 3ms |
| total: | 153ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...