@vovella

Мультиязычность в базе данных недвижимости?

Ребята, помогите решить диллему
Требуется организовать структуру БД для агенства недвижимости. Сайт на 3 языках. Поиск квартир по множеству параметров: цена, этаж, вода и т.д.
Предложенный вариант:
в таблице flats делается три локализированные записи одной и той же квартиры со всеми возможными параметрами. Города, районы - тоже в трех вариантах отдельными записями. Получается квартира одна, но записи три. Город на самом деле один, но записи - три.

ID | STREET | LANG | PRICE | FLOOR | CITY_ID ....
---+----------------------+-------+----------+---------+-----------
1 | ул.Центральная ru 25000 5 1
1 | вул.Центральна ua 25000 5 2
1 | Center street en 25000 5 3

Мне все-таки кажется, что верным решением будет создание по одной сущности (город, квартира) и по три записи перевода

flats
ID | CITY_ID | PRICE | FLOOR
---+------------------------+--------+
1 | 1 25000 5
2 | 1 15000 1
3 | 1 30000 1

translations
ID | STREET | LANG | FLAT_ID |
---+----------------------+-------+----------+
1 | ул.Центральная ru 1
2 | вул.Центральна ua 1
3 | Center street en 1

Только вот доказать чем второй вариант лучше (а он лучше?)- не могу. Может кто поможет
  • Вопрос задан
  • 218 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Alj
Разумеется, несколько записей для одного объекта - как минимум нелогично. И считать, что языков всегда будет 3 тоже. Предложение простое - выбрать основной язык (на котором работают сотрудники, тот на котором объект обязан быть назван) и создать таблицу перевода:
язык ( id ; language )
перевод ( id AUTO_INCREMENT ; язык ; таблица ; строка ; значение )
Т.е. вы создали город "Москва" - просто один и в интерфейсе рядом кнопка "переводы" - открывается всплывающее окно с другими языка (ua, en) вводятся переводы, сохраняются, кнопка перекрашивается (красная - нет переводов; серая - частично переведено ; синяя - все переведено ) и title заодно можно использовать для информирования. А записи в БД следующие
города ( 1 , 'Москва'-выбрали основной - русский )
перевод ( * , 'города' , 1 - id записи в таблице города , 1-для украинского , 'Москва' - так же, наверное)
перевод ( * , 'города' , 1 - тот же id той же одной Москвы, 2-для английского , 'Moscow')
перевод ( * , 'улицы' , 1 , 2-для английского , 'Central st.') - т.е. перевели улицу "центральная" в таблице улицы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы