关于位置的数据库设计?

我有一个数据表如下:

出版社表

id int(11) //出版社ID
location int(11) //地理位置

根据行政区划

我们有

国家表

country_id int(11)
...

地区表

region_id int(11) //华中地区等地区的id
...

省级表

 province_id int(11)
 ...

市级表

 city_id int(11)
 ...

区级表

 city_part_id int(11)
 ...

上面的表从上到下都是has-a的关系,所以,他们从上到下是1对n的二元关系,而出版社的locationid ,我觉得应该是区级表的,citypart_id,这样我们要找到每个省的出版社列表的话就需要先找到每个市的表,还需要递归的找到每个区的表,这样就属于3个表之间的join,省级的出版社列表就得4次join了,华中地区的就得5次了,这样的查询我觉得应该很慢,请问有什么方法可以改进的?

阅读 3.3k
2 个回答

google: nested set model
这是一种无线级分类的解决方案,希望能有帮助。

还有另外几种方法,优缺点不同,具体名字我忘记了,可以参考: 《sql反模式》一书

区级表 冗余 省、市、地区、国家 基本信息,查询就容易了 只是修改的时候比较麻烦

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题