0

私が開発しているアプリケーションは、クライアントごとに定義された都市のリストに基づいてデータへのアクセスを提供する必要があります。クライアントは以下を持つことができます:

  • 国のすべての都市へのアクセスまたは
  • 州/地域内のすべての都市へのアクセスまたは
  • 任意の州または国の選択した都市へのアクセス。

データベースでこれを定義するための最良の方法は何でしょうか(データベースにCountryテーブル、State / Regionテーブル、Cityテーブル、およびClientテーブルがある場合)。

明確化:(この質問に関連する重要な列のみを含むテーブルの簡略化されたビュー)。

カントリーテーブル-

idCountry | 名前

状態テーブル-

idState | idCountry | 名前

シティテーブル-

idCity | idState | 名前

クライアントテーブル-

idClient | 名前

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) のようなテーブルかもしれません。このようにして、セキュリティ アクセスを定義として定義できますが、null 許容フィールドを処理する必要があります。

于 2010-08-16T09:55:38.273 に答える