Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010
Помог: 1 раз(а)
Имеется проект, в котором есть таблица список:
1. Страна
2. Регион
3. Город
4. Район
5. Улица
Требуется иметь значения виде локализации, хотел бы макс. правильно реализовать логику, т.к. записей много и производительность надо учитывать.
Приведу прим. таблицы "Страна", по моему мнению имеется 2 варианта, если есть ещё варианты подскажите.: 1. Хранить в БД значения и уже через PHP файл выводить яз. константу
----- То что программа работает, не означает что она написана правильно!
pantela
Отправлено: 04 Апреля, 2015 - 23:26:19
Частый посетитель
Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010
Помог: 1 раз(а)
ХммМ, да но на сколько я помню такого вида локализация не особо хорошая, т.к. при добавлении нового яз. придётся всё структуру менять БД что бы новые поля ещё добавить...
Хотя строго будет только 3 яз.
Sail
Отправлено: 04 Апреля, 2015 - 23:35:09
Участник
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
pantela, можно представить такую, например, структуру:
Одна таблица:
id страны, другие параметры (кроме строк, зависящих от локализации)
Другая таблица:
id локализации
описание локализации (одним, или несколькими полями, по необходимости)
Третья таблица:
id строки, требующей локализации
описание строки...
Четвёртая таблица:
id страны
id строки (название, полное название, аббревиатура)
id локализации
собственно текстовое представление строки в необходимой версии локализации названия и чего-там-ещё.
pantela
Отправлено: 04 Апреля, 2015 - 23:39:07
Частый посетитель
Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010
Помог: 1 раз(а)
тоже такое думал, вот только при связке этого всего через JOIN и при сравнению с другими вариантами какой будет более быстрее работать?
Если учитывать и вариант KingStar, просто его вариант на сколько я понимаю ни динамичен с точки зрения если количество яз. будет изменятся на сайте, но у меня строго известно что только 3 яз. будет в проекте...
KingStar
Отправлено: 05 Апреля, 2015 - 21:38:03
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
pantela, чем он не динамечен? если использовать другие варианты, то что? не придется заново добавлять языки? я представляю себе так - в кукисы по умолчанию добавляется локаль, запрос береться
меняется локаль - меняется поле, при этом строго задан id страны, который используется в связях с
Цитата:
2. Регион
3. Город
4. Район
5. Улица
как раз таки более динамичного я себе не представляю, а выводить на страницу можно и по числовому индексу запроса
----- То что программа работает, не означает что она написана правильно!
Sail
Отправлено: 05 Апреля, 2015 - 23:10:04
Участник
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
KingStar, есть разница между добавлением записи и добавлением поля в таблицу БД.
LIME
Отправлено: 05 Апреля, 2015 - 23:11:40
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
pantela твой вариант 2 вполне рабочий
так называемая умышленная денормализация
причем самый ее классический пример
KingStar пишет:
если использовать другие варианты, то что? не придется заново добавлять языки?
не придется заново добавлять поля
переписывать модель, модульные тесты и бох знает что еще
только данные добавятся
pantela
Отправлено: 05 Апреля, 2015 - 23:13:23
Частый посетитель
Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010
Помог: 1 раз(а)
Ну это ясн, что через куки или другим методом в запрос подставлять яз., но просто помню что такое вариант сильно критиковали...
`title_ru`
`title_en`
Хотя по моему мнению такое метод будет быстрее работать чем другие...
Sail
Отправлено: 05 Апреля, 2015 - 23:17:08
Участник
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
pantela, кстати, почему во втором варианте в три поля добавляются четыре значения?
LIME
Отправлено: 05 Апреля, 2015 - 23:21:42
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
да кстати
незаметил
(`id`, `title`, `lang`, `local`)
так наверное? (Добавление)
pantela пишет:
такое метод будет быстрее работать чем другие...
фигня
pantela
Отправлено: 06 Апреля, 2015 - 01:27:12
Частый посетитель
Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010
Помог: 1 раз(а)
Цитата:
(`id`, `title`, `lang`, `local`)
так наверное?
Да, отпичатался...
Цитата:
фигня
Ну почему, смотри напр. у меня 100 записей, и через вариант lang_ru, lang_en будет выводить данные быстрее, вроде чем-же среди 200 записей, где через поле lang будет выводить записи соотвествующего яз.
LIME
Отправлено: 06 Апреля, 2015 - 01:35:43
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
разница настолько получится мизерная на реальном приложении(кэширование запросов СУБД, выборка по индексам в большой таблице и неважность оптимизации для маленькой) что ... фигня
а выгода в скорости и качестве разработки есть вполне определенная
динамичность добавления новых переводов как сам сказал
в форме достаточно указать любой язык
перевод добавляется без участия программиста
pantela
Отправлено: 06 Апреля, 2015 - 12:16:38
Частый посетитель
Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010
Помог: 1 раз(а)
Ок, но если выбирать напр. Страну Россия, и все её дочерные записи (регион, город, район, улицы) в этом случае тоже мизерная разница будет? Просто представь себе 4 JOIN и по скольким записям надо вытаскивать + результат улиц может быть несколько...
LIME
Отправлено: 06 Апреля, 2015 - 17:26:58
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.