2010-08-16 25 views
0

我正在開發的一個應用程序需要根據爲每個客戶端定義的城市列表提供對數據的訪問。客戶可以有:數據庫設計:定義訪問控制

  • 訪問所有的城市在一個國家或
  • 訪問所有城市的狀態/地區或
  • 訪問在任何狀態下 或國家來選擇城市。

什麼是數據庫中定義的最佳方式(如果該數據庫有一個國家表,國家/地區表,表和客戶表)?

澄清: (表的與僅關於這個問題的基本列的簡化圖)。

Country表 -

idCountry |名稱

國表 -

idState | idCountry |名稱

市臺 -

idCity | idState |名稱

客戶表 -

idClient |名稱

回答

0

,你可以創建一個Location自相關表(ID,姓名,ParentLocation)和AccessControl表(客戶端Id,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 

如果你想堅持當前的模式,也許就像一個表(客戶端Id,CountryId空,STATEID空,CityId可爲空)。通過這種方式,您可以將您的安全訪問定義爲您的定義,但需要處理可空字段。

+0

我更喜歡數據庫設計是否規範化,而位置表方法會打敗這個。關於第二種方法 - 這也是我的第一個想法 - 但也許有更好的解決方案? (謝謝。) – Mysti 2010-08-16 10:19:24