将网站划分为城市/国家的最佳方式?

时间:2011-03-20 08:32:11

标签: database database-design country city

我正在运行一个约会网站,或者更好的说,尝试。我希望成为通用的 尽可能覆盖各国。

由于这是一个本地约会网站,我必须跟踪城市 等等,所以我遇到了一些问题:

  1. 我需要有关于城市的信息,人们可以加入来 (一个我不知道的国家,我真的无法决定一个城市 或任何事情)

  2. 当人们从不同国家加入时,他们希望看到人们 附近。你会如何处理这种问题?

  3. 这可能看起来像2个简单点,但它们真的让我有些麻烦 天。 **尝试将它们视为与数据库相关的问题**

    我在SE周围盘旋,发现这是最好的要点,而不是其他任何一个 SE网站。

    非常感谢

2 个答案:

答案 0 :(得分:2)

美国城市的全名是{country_name,state_name,city_name}。我说假设在全球范围内,我称之为state_name并不是唯一的。我可以很容易地想象一个拉丁美洲国家的某个地区被命名为“内华达”或“科罗拉多”。

你也有拼写问题。住在德国的美国人可能会说她住在德国北莱茵 - 威斯特法伦州的科隆。住在那里的德国人称之为“科隆”。

“附近”是一个更难以破解的坚果。我曾经住在一个大城市。在州际高速公路上开车一小时来接我的约会并不罕见。我认为这是“附近”。现在我住在一个小城市。现在30分钟似乎是长途驾驶,但它可能只有15或20英里而不是65或70.

如果你住在边境小镇,15英里可能在另一个国家。也许是两个不同的国家。

我认为您最好的选择是使用地理定位API或服务来获取新城市插入时的纬度和经度。给定两点的距离计算很简单,但除非使用边界框,否则会导致查询性能下降。 (你不想计算到德克萨斯州每个城市的距离,以找到“靠近”韦科的人。)

答案 1 :(得分:1)

获取所有城市的纬度/经度。不要担心确切的距离。

使用excel进行游戏,找到给定距离(10英里,25英里,50英里)的纬度和/或经度(Δlat或Δlong)的最大变化,然后当您搜索其他人时,只需在数据库中搜索( Firstuser'sLongitude +/-Δlong)和(Firstuser'sLatitude +/-Δlong)。

我认为人们不会介意10英里和10 * 2 ^ 0.5英里之间的区别。