[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нужен совет в вопросе хранения данных в БД
Xes
Посоветуйте как хранить данные такого типа....
Есть допустим небольшая статейка на руском языке хранится в поле с именем txt.
Допустим потом появился перевод этой статейки на другой язык, и еще на одни .... как хранить такие данные.
На ум приходит только json виде массива 'ru'=>'Русакий текст статьи', 'en'=>'Engl'
зарание количество языков и какие они не известно.

Исли хранить в одной ячейки, а так оно наверное и должно быть, то скажите что лучше serialize или json?



Спустя 23 минуты, 32 секунды (6.02.2012 - 13:29) killer8080 написал(а):
Xes
под другой язык делай отдельный столбец в таблице, например text_en

Спустя 2 минуты, 35 секунд (6.02.2012 - 13:31) Xes написал(а):
killer а если я не знаю сколько языков будет у страницы может быть 15 у одной а у другой только один язык, что раздувать таблицу под каждый язык свое поле?
При том что я низнаю какой язык может быть в принципе любой, со всего мира.

Спустя 1 минута, 45 секунд (6.02.2012 - 13:33) killer8080 написал(а):
Xes
добавляй поля по мере надобности, какие проблемы?

Спустя 2 минуты, 18 секунд (6.02.2012 - 13:35) nugle написал(а):
Xes
Может быть отдельно создать таблицу
id | id_txt | txt | lg_txt
в txt хранить сам текст, а lg_txt язык этого текста

Спустя 12 минут, 51 секунда (6.02.2012 - 13:48) Xes написал(а):
вошем Вы все за отдельное поле для каждого языка, с различными вариантами реализации в одной или в дополнительной таблице.

Мне просто не хочется таблицы раздувать как их количество так и количество полей в таблице.

В настоящий момент есть 4 текстовых поля на руском по каждой записи. Вот если для каждого языка делать свою ячеку, то при 3 основных языках получается уже 12 ячеек.
Другой текст может быть переведен на руский и албанский, но не английский и немецкий. и так скажем по 10-15 основным языкам может быть. гдето все гдето ни чего. При 5 языках это уже 20 столбцов. Причем посетитель может писать на любом своем местном языке, + русский.

Кароче такокого мирового маштаба программа ))

Чем плох джейсон?
Скорость работы согласен. Мне прийдется его разбирать.
что то еще есть?

Спустя 2 минуты, 33 секунды (6.02.2012 - 13:51) nugle написал(а):
Xes
чем тебя не устраивает отдельная таблица? Захотел выбрал язык у текста с таким то Id и все, никакого гемора

Спустя 7 минут, 29 секунд (6.02.2012 - 13:58) Xes написал(а):
Тем что мне прийдется следить за целостностью данных между таблицами. И стаким делом без админ панели в пхпмайадмин уже тяжко будет работать для меня скажем как для админа собрать инфу по всем таблицам.

Я вижу проблему еще в раздутие таблиц, вместо исмользования одной ячеки типа mediumtext

Ну еще можно усмотреть что вслучае появления нового поля скажем к 10 языкам существующим в таблице а это 40 столбцов у нас получается (гдето заполнены все гдето только один язык, гдето два) надо добавить еще 10 столбцов чтобы хранить еще какието данные относительно этой записи на разных языках.

Эсли с джейсоном то будет только одна ячека где укаждого будут данные только которые действительно существуют, на 2х ,3х и т.д. языках.

Спустя 3 минуты, 52 секунды (6.02.2012 - 14:02) nugle написал(а):
Xes
ааааааааааа, ты че мои сообщения не читаешь вообще? какое раздутие таблиц, посмотри структуру, которую я тебе указал и подумай

Спустя 22 секунды (6.02.2012 - 14:02) killer8080 написал(а):
Xes
nugle предложил нормальный вариант, чем он тебя не устраивает?

Цитата (Xes @ 6.02.2012 - 12:48)
Чем плох джейсон?
Скорость работы согласен. Мне прийдется его разбирать.
что то еще есть?

Всем, ничего кроме сложности и повышения нагрузки на сервер он не дает. Данные нужно хранить в нормальном виде, а если нужно будет сделать поиск по тексту, что тогда?

Спустя 4 минуты, 43 секунды (6.02.2012 - 14:07) Xes написал(а):
nugle, спасибо, не разглядел красоту-распрекрасную твоего предложения сразу. )
Со второрого раза понял, че ты имел виду.

Спустя 8 минут, 46 секунд (6.02.2012 - 14:16) nugle написал(а):
ахах) да не за что)

Спустя 28 дней, 8 часов, 45 минут, 5 секунд (5.03.2012 - 23:01) Xes написал(а):
==========
Набрасал кое чего.... появились еще вопросы о том как лучше ораганизовать многоязычность.


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

Далее есть такой момент например страна по руски это Россия по английски Russia
в базе данных ключ country_uri = russia, на других языках россия еще как то иначе пишится. Далее названия городов по руски Абакан по инглишу Abakan ключ в базе abakan
И вобщем то еще много других переменных величин которые надо сделать мульти язычными например месеца, дни недели да вощем пално....

Так вот я склоняюсь к тому что в базе должны быть только ключи стрнан, городов, и т.д. А написание уже слов должно быть в виде массиа
например страны
$country_lang = array(
'russia'=>array('ru'=>'Россия', 'en'=>'Russia'),
'usa'=>array('ru'=>'США', 'en'=>'USA'),
......
);

Ну вот файлик php с таким массивом в нужный момент должен подключаться и по ключу и выбранному языку мы определяем что нам печатьать в html код.
Я думаю это лучше нежели по каждаму такому вопросу обращаться к БД.

Есть мнения, предложения может еще более рационально как то можно организовать хранение таких нестатичных, разноязыковых, небольших слов.

Спустя 40 минут, 39 секунд (5.03.2012 - 23:41) neadekvat написал(а):
В каталоге langs создаешь файлы с именами ru.php, us.php и пр., соответствующее двухбуквенным сокращениям.
В файле - массив, все массивы имеют одинаковую структуру, типа:
ru.php:
$lang = array(
'russia' => 'Россия';
'usa' => 'США';
);


en.php:
$lang = array(
'russia' => 'Russia';
'usa' => 'USA';
);


Во входной точке сайта (допустим, что такая имеется) проверяешь, какой язык выбран пользователем (можешь в кукисах хранить) и подключаешь соответствующий файл из langs.
В коде пишешь просто
$lang['russia']; $lang['usa']; $lang['sth_else'];
и вообще не думаешь больше о том, что там с языками. Главное - чтобы структура массива была одинаковой у всех языков.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.