設計OA系統的用戶-角色-權限分配


一,前言 

  本文主要講述在OA系統設計時用戶——角色——權限的數據庫設計,以便實現權限分配。

二,初步分析

  用戶通過UI登錄系統時,把用戶的用戶名、密碼傳遞給后台判斷用戶表中是否存在可用的用戶信息,如果存在那么允許頁面的跳轉,並設置一些Session信息,當頁面跳轉時根據用戶的Session信息獲取用戶的角色,進一步根據角色獲取用戶的操作權限,這里的操作權限包括角色可以操作的菜單,以及此菜單對應的操作按鈕。

  通過上面的描述就可以分析出系統中包含的數據表有T_Users(用戶表)、T_Roles(角色表)、R_UserRole(用戶角色關系表)、T_Menus(菜單表)、T_Button(按鈕表)以及

R_Privilege(角色、菜單、按鈕關系表)、R_MenuButton(菜單按鈕關系表),總共七張表。為了使文章更具有正對性,對於其他和本文分析的問題無關緊要的數據表例如T_Deprt(部門表)等省去不提。

  下面通過物理模型圖分析這些表的關系:

  

  以上的所有表中省去了對分析問題沒有必要存在的一些數據字段。這些必要的字段相信開發的人員都能知道是什么意思,所以不做解釋。

  需要說明的是:所有關系表(以"R_"開頭的表)關聯的表中的主鍵都是N:N的關系。此處需要特殊說明的就是R_Privilege表中的ObjectID、ObjectDescr。因為權限表既需要對應菜單,又需要對應增刪改查的

按鈕,所以ObjectID的值是MenuID或者MenuButtonID,這樣對應的ObjectDescr就是Menu和Button。

  當用戶登錄時,會根據條件ObjectDescr='Menu'獲取角色的RoleID對應的ObjectID=T_Menu.MenuID,這樣能夠獲取所擁有的可操作的菜單。

  當打開某一頁面時,根據條件ObjectDescr='Button'獲取角色的RoleID對應的ObjectID=R_MenuButton.MenuButtonID,這樣可以獲取用戶在相關頁面的操作按鈕BtnID。  

三,結語

  以上即是關於主題的分析,希望能拋磚引玉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM