|
|
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
Создаю структуру базы данных. В базе данных хранятся переводы фраз на разных языках. 1. способ - таблица "справочник языков" (Код (первичный ключ), название языка (строка), название таблици в которой хранятся фразы (строка)) -таблица "Фразы на английском языке" (Код фразы (первичный ключ), фраза (строка)) -таблица "Фразы на французком языке" (Код фразы (первичный ключ), фраза (строка)) -и тд. Таблици фраз создаются по мере появления новых языков 2. способ - таблица "справочник языков" (Код (первичный ключ), название языка (строка)) -таблица "Фразы" (Код фразы + Код языка (ключ), фраза (строка)). Интерисует ваше мнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 12:39 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
AhillesИнтерисует ваше мнение. отдельные таблицы на каждый язык сразу ф топку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 13:34 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
Ahilles, перечень языков TLang (id,Name) перечень фраз TF (TLang.id1,TLang.id2,...TLang.idN) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 16:29 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
И переводы можно не хранить:) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 16:51 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
AhillesСоздаю структуру базы данных. В базе данных хранятся переводы фраз на разных языках. 1. способ - таблица "справочник языков" (Код (первичный ключ), название языка (строка), название таблици в которой хранятся фразы (строка)) -таблица "Фразы на английском языке" (Код фразы (первичный ключ), фраза (строка)) -таблица "Фразы на французком языке" (Код фразы (первичный ключ), фраза (строка)) -и тд. Таблици фраз создаются по мере появления новых языков 2. способ - таблица "справочник языков" (Код (первичный ключ), название языка (строка)) -таблица "Фразы" (Код фразы + Код языка (ключ), фраза (строка)). Интерисует ваше мнение. Способ 2, конечно же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 18:30 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
Flying DutchmanAhillesСоздаю структуру базы данных. В базе данных хранятся переводы фраз на разных языках. 1. способ - таблица "справочник языков" (Код (первичный ключ), название языка (строка), название таблици в которой хранятся фразы (строка)) -таблица "Фразы на английском языке" (Код фразы (первичный ключ), фраза (строка)) -таблица "Фразы на французком языке" (Код фразы (первичный ключ), фраза (строка)) -и тд. Таблици фраз создаются по мере появления новых языков 2. способ - таблица "справочник языков" (Код (первичный ключ), название языка (строка)) -таблица "Фразы" (Код фразы + Код языка (ключ), фраза (строка)). Интерисует ваше мнение. Способ 2, конечно же. Хотя я в своих проектах в таких случаю использую 3 таблицы - 2 такие, как в случае 2 плюс справочник фраз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 18:33 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
Flying DutchmanFlying Dutchmanпропущено...Способ 2, конечно же.Хотя я в своих проектах в таких случаю использую 3 таблицы - 2 такие, как в случае 2 плюс справочник фраз.а справочник фраз зачем нужен? можно вас попросить пример коротенький? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 19:02 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
egorychа справочник фраз зачем нужен?чтобы было проще валидировать по справочнику букв. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 19:18 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
egorychFlying Dutchmanпропущено... Хотя я в своих проектах в таких случаю использую 3 таблицы - 2 такие, как в случае 2 плюс справочник фраз.а справочник фраз зачем нужен? можно вас попросить пример коротенький? 1. Справочник фраз может содержать дополнительную информацию, одну и ту же для фразы независимо от перевода. Например, если фраза - это сообщение об ошибке в некой системе, то справочник фраз может содержать такие, например, атрибуты, как "уровень серьезности", "внутренний код ошибки" и т.д. 2. В справочнике может быть атрибут "имя фразы". Рассмотрим случай, когда фраза - это название товара в каталоге товаров веб-магазина. В этом случае "перевод фразы" - это название товара, которое видит покупатель на своем языке на веб-сайте магазина, а "имя фразы" - это внутреннее название товара, который используют разработчики и адинистраторы магазина. В этом случае важно отметить, что переводы имен товаров могуть быть одними и теми же для разных товаров, но внутреннее имя товара всегда уникально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2011, 23:49 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
Flying Dutchman, я понял, спасибо за пояснения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2011, 00:43 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
Кто-нибудь может аргументировано пояснить - какие недостатки у первого метода реализации? Есть мнение что метод плох, так как в нём будут использоваться динамические запросы. А в чём тогда недостатки динамических запросов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 15:29 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
Донаркан, Когда пару пользователей будут пользовать, то я думаю ничего страшного. А вот если с полсотни или больше? А если еще и ресурсы ограничены? Вывод я думаю понятен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 18:54 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
ДонарканКто-нибудь может аргументировано пояснить - какие недостатки у первого метода реализации? чтобы добавить еще один язык будешь еще одну табличку рисовать? и зачем тебе десяток одинаковых табличек? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 18:59 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
Я тоже однозначно за 2-й способ. ДонарканКто-нибудь может аргументировано пояснить - какие недостатки у первого метода реализации? 1. Для каждого языка придется новую одинаковую табличку создавать 2. Также придется создавать сопутствующие ХП для каждой таблички, либо параметрические запросы в ХП, либо вообще без ХП. ИМХО этот путь не самый удобный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 00:10 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
Поясню ход моих мыслей, возможно неправильный, так как с механизмами работы внутри самой MySQL знаком плохо. Во-первых - запрос к БД осуществляется из РНР и разве для БД есть разница - статично задана в скрипте строка запроса или имя таблицы в неё подставлено при составлении строки? Во-вторых. При наличии в системе 30 поддерживаемых языков, в каждом из которых перевод 2000 терминов, получается что при хранении всей информации в одной таблице её размер будет 60000 строк и поиск в ней придется осуществлять по индексу, составленному из двух полей - "язык + идентификатор строки". Если для каждого языка будет своя таблица, то в ней будет 2000 записей и поиск будет по индексу на основе одного поля "идентификатор строки". Выигрыша в производительности не будет? То, что будет создано много таблиц - по одной на каждый язык, тут да, возможно минус (в phpMyAdmin долго листать :). Но на производительности это сказаться не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 15:57 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
Донарканполучается что при хранении всей информации в одной таблице её размер будет 60000 строк и поиск в ней придется осуществлять по индексу, составленному из двух полей - "язык + идентификатор строки".От того, что разбить на отдельные таблицы, строк меньше не станет. А выборка таблицы по имени из словаря чем-то сродни составному индексу, только будет задействовано больше объектов на пути выхода на адрес конкретной строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 16:07 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
ДонарканВо-первых - запрос к БД осуществляется из РНР и разве для БД есть разница - статично задана в скрипте строка запроса или имя таблицы в неё подставлено при составлении строки? для БД все-равно, откуда ты имя таблицы возьмешь - она получит строку запроса а вот для тебя... откуда ты будешь брать имя таблицы при 30-ти языках? в коде пхп хранить и переписывать код при каждом добавлении/удаления языка? или табличку в БД создашь и будешь ее дергать каждый раз, чтобы сформировать запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 17:23 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
ДонарканВо-первых - запрос к БД осуществляется из РНР и разве для БД есть разница - статично задана в скрипте строка запроса или имя таблицы в неё подставлено при составлении строки? Возьмите и проверьте. Когда сам уткнешся во что-то - это лучше любых советов. И запоминается навсегда. ДонарканВо-вторых. При наличии в системе 30 поддерживаемых языков, в каждом из которых перевод 2000 терминов, получается что при хранении всей информации в одной таблице её размер будет 60000 ... Будет все те же 2000 строк, но столбцов будет 30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 17:25 |
|
||
|
Как правильнее и лутше?
|
|||
|---|---|---|---|
|
#18+
ДонарканКто-нибудь может аргументировано пояснить - какие недостатки у первого метода реализации? Есть мнение что метод плох, так как в нём будут использоваться динамические запросы. А в чём тогда недостатки динамических запросов? По поводу недостатков метода 1: 1. Несколько таблиц хуже, чем одна, потому что - Выше стоимость сопровождения: при добавлении нового языка нужно добавить новую таблицу, ключи, индексы, права для нее и т.д., то есть DBA должен потратить на это свое время. 2. Сложно запросы, требующие данные по всем языкам сразу, например: "Получить список используемых языков + количество переводов фраз по каждому языку" "Для каких языков отсутствует перевод фразы с Id = 1 ?" 3. Динамические запросы хуже статических (если мы говорим о хранимых процедурах), потому что: - Код получается более сложным - Ошибки в статическом SQL выявляются на этапе компиляции, а в динамическом - только на этапе выполнения запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 21:31 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37112529&tid=1542320]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
417ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 766ms |

| 0 / 0 |
