Советы по разработке базы данных сайта с международными пользователями - PullRequest
0 голосов
/ 30 октября 2010

Я занимаюсь разработкой сайта знакомств, на котором пользователи могут регистрироваться со всего мира
.Секция знакомств разделена на города со всего мира
.
Проблема, которую я вижу здесь, заключается в том, что у меня нет базы данных, которая охватывает все города
по всему миру.
Я являюсьподтверждение каждого пользователя вручную, так что это дает мне возможность просмотреть
город и страну пользователей.
Основной основной подход заключается в предоставлении каждому городу "city_id" в базе данных.

Это похоже на то, что если человек присоединяется из Нью-Йорка, я даю ему идентификатор US_NEWYORK
Если человек присоединяется из Франкфурта, он получает идентификатор DE_FRANKFURT

Оба этих пользователя по-прежнему имеют свое собственное название города в базе данных, и оно
записано так же, как и оно.Так, например,

«Франкфурт» вместо «Франкфурт-на-Майне» для правильного имени или
«Нью-Йорк Сити» вместо «Нью-Йорк»за правильное имя.

Таким образом, я могу написать каждому пользователю и дать городам специальный идентификатор
и выполнить все запросы через этот идентификатор.

Это мое собственное решение, и я думаю, что это не так уж плохо.У вас может быть
Идея, что я мог бы сделать лучше?

Я хотел бы помнить, что мне нужны все города из каждой страны
Я пользуюсь этой услугой, если вы хотите порекомендовать, я получу базу данных
откуда-нибудь :)

Спасибо за чтение.

Ответы [ 2 ]

1 голос
/ 30 октября 2010

http://www.geonames.org/

выглядит достаточно комплексно.

1 голос
/ 30 октября 2010

Почему бы вам не использовать серверы геокодирования, такие как geonames.org или API геокодирования Google, чтобы найти каноническое название местоположения, а также широту / долготу. Я предполагаю, что вам нужны местоположения в какой-то канонической форме, чтобы вы могли найти самые близкие совпадения, верно? Хорошо, широта / долгота - путь туда.

Например, если вы спросите Google о «Франкфурте-на-Майне», например:

curl 'http://maps.googleapis.com/maps/api/geocode/xml?address=Frankfurt%20am%20Main&sensor=false'

Вы получите обратно все это:

geocode/xml?address=Frankfurt%20am%20Main&sensor=false'
<?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
 <status>OK</status>
 <result>
  <type>locality</type>
  <type>political</type>
  <formatted_address>Frankfurt, Germany</formatted_address>
  <address_component>
   <long_name>Frankfurt</long_name>
   <short_name>Frankfurt</short_name>
   <type>locality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Frankfurt am Main</long_name>
   <short_name>Frankfurt am Main</short_name>
   <type>administrative_area_level_2</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Hesse</long_name>
   <short_name>HE</short_name>
   <type>administrative_area_level_1</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Germany</long_name>
   <short_name>DE</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <geometry>
   <location>
    <lat>50.1115118</lat>
    <lng>8.6805059</lng>
   </location>
   <location_type>APPROXIMATE</location_type>
   <viewport>
    <southwest>
     <lat>49.9968858</lat>
     <lng>8.4243871</lng>
    </southwest>
    <northeast>
     <lat>50.2258641</lat>
     <lng>8.9366247</lng>
    </northeast>
   </viewport>
   <bounds>
    <southwest>
     <lat>50.0155200</lat>
     <lng>8.4727150</lng>
    </southwest>
    <northeast>
     <lat>50.2269512</lat>
     <lng>8.8004960</lng>
    </northeast>
   </bounds>
  </geometry>
 </result>
</GeocodeResponse>
...