城市数据库设计流程

城市功能

 

city 最高级

中国 其他州  (弄出 demo)

city 最低级

市;(限制任务的 city 为这个级别)

 

数据库

 

数据库字段

用途

定位城市:州—城市。 name, data_level,

推导出热门: 搜索次数。 中国—中国+1; 广州—广州+1;

 

导入数据

手动导入中国主要城市、美洲主要城市

最后

考虑如何自动导入

编写自动导入脚本

 

搜索各国行政区划分

中国

其他主要大洲及国家。

如果只需要部分数据,由需求方提供最好,可以参考旅游网站的热门目的地

如果需要很多数据,通过  世界各国行政区域和城市人口 进行爬虫?

谷歌搜索 `全球行政区划分`,没有找到

谷歌搜索 `全球行政区划分 sql`,能够找到。

 

 

数据库关系

city 表关系

自联接外键关系

recruit 与 city 表关系

多对多

 

传递给前端

国内以及其他州的树结构

 

常驻城市

多对多

 

任务城市

多对多

 

搜索流程

单个city

  1. 传入 city=中国
  2. 搜索 city = City.object.filter(city=‘中国’)
  3. 展开 city 直到最低级,这里为中国所有城市
  4. 搜索含有这个城市的任务

多个 cities

  1. 传入 city=中国|日本
  2. 查找出中国,日本
  3. 展开中国、日本到一个 set 里面
  4. 含有这个城市的任务

 

获取 name 下级的所有城市

获取直到最后一个级别的城市。

同一个 root 下面的叶子级别也可能不相同。

 

限制

用户、任务中的城市级别只能选择 leaf 级别的。

这样会引起说明架构问题

 

缓存数据

由于要从数据库中递归查找,所以速度会很慢,要十几秒。由于这个时序性要求不高,可以使用redis做缓存。

 

posted @ 2017-03-30 09:42  Jay54520  阅读(1346)  评论(0编辑  收藏  举报