我有一个数据表如下:
出版社表
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次了,这样的查询我觉得应该很慢,请问有什么方法可以改进的?
google: nested set model
这是一种无线级分类的解决方案,希望能有帮助。
还有另外几种方法,优缺点不同,具体名字我忘记了,可以参考: 《sql反模式》一书