0

我正在开发的应用程序需要根据为每个客户定义的城市列表提供对数据的访问。客户可以拥有:

  • 访问一个国家的所有城市或
  • 访问州/地区的所有城市或
  • 访问任何州或国家的选定城市。

在数据库中定义它的最佳方法是什么(如果数据库有Country表、State / Region表、City表和Client表)?

澄清:(表格的简化视图,仅包含与此问题相关的基本列)。

国家表 -

idCountry | 姓名

状态表 -

身份 | idCountry | 姓名

城市表——

城市 | 身份 | 姓名

客户表 -

身份客户 | 姓名

4

1 回答 1

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)这样的表。这样,您可以将安全访问定义为您的定义,但需要处理可为空的字段。

于 2010-08-16T09:55:38.273 回答