城市数据库设计流程

城市功能

 

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做缓存。

 

转载于:https://www.cnblogs.com/jay54520/p/6644291.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值