spring和mysql我在mysql Country State,City,District和Lawyer 表中有表。现在用户可以通过在UI场景中提供标签进行搜索
1->用户可以按地区搜索律师
2->用户可以按城市搜索律师
3→ USer可以按州搜索律师,
4-> USer可以按国家/地区搜索律师
5->用户可以按州,市和区搜索律师
6->用户可以通过州和城市搜索律师
7 - >用户可以提供所有四种更精细的粒度搜索
为了有效和快速搜索与律师和所有四个表国家,州,市和区的表关系是什么
我已经为国家,州,市和区制作了一张表,其中包含以下关系 国家---一对多---------国家--------对许多人 - 城市------------对很多人------ -----区
但是现在我想与律师表建立关系,所以如果有人想要搜索律师的名字或任何来自上面的搜索标准,我将能够通过查询表快速给予优化结果。
我应该再创建一个包含lawyerid,stateId,countryId,cityid和districtId的表吗?
答案 0 :(得分:0)
我建议您创建五个表。
带主键的区域。
带有主键和城区参考(外键)的城市。
使用主键和城市的引用(外键)说明。
具有主键和国家的引用(外键)的国家/地区。
一名律师,主要钥匙和国家,州,市和区的参考书(外键)。
在搜索过程中,您将创建一个简单快速的LEFT JOIN:
SELECT lawyer.name, lawyer.data
FROM lawyer
LEFT JOIN country ON lawyer.country_id = country.id
WHERE country.name = "USA";
或更多compex查询:
SELECT lawyer.name, lawyer.data
FROM lawyer
LEFT JOIN ON state lawyer.state_id = state.id
LEFT JOIN ON city lawyer.city_id = city.id
LEFT JOIN district lawyer.district_id ON = district.id
WHERE STATE_NAME = "Alabama"
AND city.name = "Birmingham"
AND district.name = "Northern";
其他人会以类似方式出现,具体取决于查询。
它应该是可以接受的快速。