2013-11-29 50 views
1

我需要一些幫助來解決疑問。
我有27個州和5700個城市,我想給我的用戶許可,以便他們訪問或不訪問每個州或城市。
每次用戶嘗試訪問系統時讀取5700個城市並不是一個好主意,因爲他們必須「下載」表中的所有信息,以瞭解誰可以訪問每個城市。
我在考慮賦予「二進制權限」,把5700位分爲兩種可能性,0(不可訪問)或1(可訪問),然後系統可以讀取每一位並與城市列表進行比較,並給予或不允許。
這個問題的最佳解決方案是什麼?任何其他數學可能性來優化此權限檢查?權限表

回答

0

我想你可以創建許多一對多表2列:

  • 用戶ID
  • cityid

,只把記錄在那裏,如果用戶訪問城市。

這將更容易管理,併爲用戶選擇適當的城市也會很容易。

+0

這是我今天的做法,但取決於用戶連接,下載表格需要相當長的時間,並且此操作會延遲用戶登錄,大多數情況下,如果用戶具有完全訪問權限或幾乎如此。對於每個擁有完全訪問權限的用戶,我擁有超過5000行的數據庫行,「二元權限」的想法是爲每個用戶保留1行:userid,state1,state2,state3 ... state27,然後每個狀態都有一個固定的因此輸入將如下所示:userid(1),state1 - 例如有10個城市 - (0100000001)等等。這樣用戶1可以訪問城市2和10的第一個州 – ZeroNegative

+0

您可以根據用戶標識在一個查詢中加入新表格和城市中的所有信息。 – Szymon

+1

我會在這個解決方案中工作,感謝您的幫助。 – ZeroNegative