代码之家  ›  专栏  ›  技术社区  ›  Herr

面向国际用户的网站数据库设计技巧

  •  0
  • Herr  · 技术社区  · 14 年前


    世界。约会区从一开始就被分成了几个城市
    世界。
    我在这里看到的问题是,我没有覆盖所有城市的数据库

    我正在确认每一个用户,所以这给了我机会审查
    用户城市和国家。
    主要的方法是,在数据库中给每个城市一个“城市id”。

    好像有人从纽约来,我就给他身份证
    如果这个人从法兰克福来,他们会得到身份证

    这两个用户在数据库中都有自己的城市名

    “法兰克福”
    “纽约” 而不是“纽约”的名字。

    这样我就可以让每个用户都能写作,并给城市一个特殊的id
    并通过该ID运行所有查询。


    你知道我能做的更好吗?


    我正在运行此服务,如果您愿意建议我获取数据库
    从某处:)

    谢谢你的阅读。

    2 回复  |  直到 13 年前
        1
  •  1
  •   Paul Tomblin    14 年前

    为什么不使用geonames.org或Google的geocoding API等地理编码服务器来查找位置的规范名称,以及纬度/经度。我想你需要某种规范形式的位置,这样你就能找到最接近的匹配,对吧?好吧,纬度/经度是去那里的方法。

    例如,如果你问谷歌关于“法兰克福美因”,就像这样:

    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>
    
        2
  •  1
  •   Mr Hyde    14 年前

    http://www.geonames.org/

    看起来很全面。