我正在开发的应用程序需要根据为每个客户端定义的城市列表提供对数据的访问。客户可以:
在数据库中定义此方法的最佳方法是什么(如果数据库有国家表,州 / 区域表, 城市表和客户表)?
澄清: (表格的简化视图,仅包含与此问题相关的基本列)。
国家/地区表 -
idCountry |名称
州名表 -
idState | idCountry |名称
城市表 -
idCity | idState |名称
客户表 -
idClient |名称
答案 0 :(得分:0)
您可以创建一个Location
自我相关的表(Id,Name,ParentLocation)和一个AccessControl
表(ClientId,LocationId)。当客户端与某个位置相关时,您可以授予对其下方所有位置的访问权限。一些例子:
ID Name Parent
-------------------
1 World NULL -- Need to represent all countries
2 Brazil 1 -- A country
3 São Paulo 2 -- A state
4 São Paulo 3 -- A city
如果你想坚持你当前的模型,可能会有一个表(ClientId,CountryId nullable,StateId nullable,CityId nullable)。这样您就可以将安全访问定义为定义,但需要处理可空字段。