轉自:http://blog.csdn.net/A123638/article/details/50374555
我只是進行了一個學習,整理
設計目標
設計一個靈活、通用、方便的權限管理系統
一、相關概念
1.權限
系統的所有權限信息。權限具有上下級關係,是一個樹狀的結構。
例如:
系統管理
用戶管理
查看用戶
新增用戶
修改用戶
刪除用戶
對於上面的每個權限,又存在兩種情況,一個是隻是可訪問,另一種是可授權,例如用戶只被授予“可訪問”,那麼他就不能將他所具有的這個權限分配給其他人
2.用戶
應用系統的具體操作者,用戶可以自己擁有權限信息,可以歸屬於0~n個角色,可屬於0~n個組。他的權限集是自身具有的權限、所屬各角色具有的權限、所屬各組具有的權限的合集。它與權限、角色、組之間的關係都是n對n的關係。
3.角色
爲了對多個擁有相似權限的用戶進行分類管理,定義了角色的概念。例如系統管理員、管理員、用戶、訪客等角色。角色具有上下級關係,可以形成樹狀視圖,父級角色的權限是自身及它的所有子角色的權限的綜合。父級角色的用戶、父級角色的組同理可推。
4.組
爲了更好地管理用戶,對用戶進行分組歸類,簡稱爲用戶分組。組也具有上下級關係,可以形成樹狀視圖。在實際情況中,我們知道,組也可以具有自己的角色信息、權限信息。
例如QQ用戶羣,一個羣可以有多個用戶,一個用戶也可以加入多個羣。每個羣具有自己的權限信息。例如查看羣共享。QQ羣也可以具有自己的角色信息,例如普通羣、高級羣等。
四個對象之間的關係:
二、數據庫設計
1.本系統至少需要十張表,分別爲:
- 權限表
- 用戶表
- 角色表
- 組表
- 用戶權限關聯表
- 用戶角色關聯表
- 角色權限關聯表
- 組權限關聯表
- 組角色關聯表
- 用戶屬組關聯表
2.PowerDesigner中的各表
PowerDesigner中設計文件下載地址:
3.表結構設計
3.1 用戶表(TUser)
字段名稱 |
字段 |
類型 |
備註 |
記錄標識 |
tu_id |
bigint |
pk, not null |
所屬組織 |
to_id |
bigint |
fk, not null |
登錄帳號 |
login_name |
varchar(64) |
not null |
用戶密碼 |
password |
varchar(64) |
not null |
用戶姓名 |
vsername |
varchar(64) |
not null |
手機號 |
mobile |
varchar(20) |
|
電子郵箱 |
email |
varchar(64) |
|
創建時間 |
gen_time |
datetime |
not null |
登錄時間 |
login_time |
datetime |
|
上次登錄時間 |
last_login_time |
datetime |
|
登錄次數 |
count |
bigint |
not null |
3.2 角色表(TRole)
字段名稱 |
字段 |
類型 |
備註 |
角色ID |
tr_id |
bigint |
pk, not null |
父級角色ID |
parent_tr_id |
bigint |
not null |
角色名稱 |
role_name |
varchar(64) |
not null |
創建時間 |
gen_time |
datetime |
not null |
角色描述 |
description |
varchar(200) |
|
3.3權限表(TRight)
字段名稱 |
字段 |
類型 |
備註 |
權限ID |
tr_id |
bigint |
pk, not null |
父權限 |
parent_tr_id |
bigint |
not null |
權限名稱 |
right_name |
varchar(64) |
not null |
權限描述 |
description |
varchar(200) |
|
3.4 組表(TGroup)
字段名稱 |
字段 |
類型 |
備註 |
組ID |
tg_id |
bigint |
pk, not null |
組名稱 |
group_name |
varchar(64) |
not null |
父組 |
parent_tg_id |
bigint |
not null |
創建時間 |
gen_time |
datetime |
not null |
組描述 |
description |
varchar(200) |
|
3.5 角色權限表(TRoleRightRelation)
字段名稱 |
字段 |
類型 |
備註 |
記錄標識 |
trr_id |
bigint |
pk, not null |
角色 |
Role_id |
bigint |
fk, not null |
權限 |
right_id |
bigint |
fk, not null |
權限類型 |
right_type |
int |
not null(0:可訪問,1:可授權) |
3.6 組權限表(TGroupRightRelation)
字段名稱 |
字段 |
類型 |
備註 |
記錄標識 |
tgr_id |
bigint |
pk, not null |
組 |
tg_id |
bigint |
fk, not null |
權限 |
tr_id |
bigint |
fk, not null |
權限類型 |
right_type |
int |
not null(0:可訪問,1:可授權) |
3.7 組角色表(TGroupRoleRelation)
字段名稱 |
字段 |
類型 |
備註 |
記錄標識 |
tgr_id |
bigint |
pk, not null |
組 |
tg_id |
bigint |
fk, not null |
角色 |
tr_id |
bigint |
pk, not null |
3.8 用戶權限表(TUserRightRelation)
字段名稱 |
字段 |
類型 |
備註 |
記錄標識 |
tur_id |
bigint |
pk, not null |
用戶 |
tu_id |
bigint |
fk, not null |
權限 |
tr_id |
bigint |
fk, not null |
權限類型 |
right_type |
int |
not null(0:可訪問,1:可授權) |
3.9 用戶角色表(TUserRoleRelation)
字段名稱 |
字段 |
類型 |
備註 |
記錄標識 |
tur_id |
bigint |
pk, not null |
用戶 |
tu_id |
bigint |
fk, not null |
角色 |
tr_id |
bigint |
fk, not null |
3.10 用戶組表(TUserGroupRelation)
字段名稱 |
字段 |
類型 |
備註 |
記錄標識 |
tug_id |
bigint |
pk, not null |
用戶 |
tu_id |
bigint |
fk, not null |
組 |
tg_id |
bigint |
fk, not null |
3.11組織表(TOrganization)
字段名稱 |
字段 |
類型 |
備註 |
組織id |
to_id |
bigint |
pk, not null |
父組 |
parent_to_id |
bigint |
not null |
組織名稱 |
org_name |
varchar(64) |
not null |
創建時間 |
gen_time |
datetime |
not null |
組織描述 |
description |
varchar(200) |
|
3.12操作日誌表(TLog)
字段名稱 |
字段 |
類型 |
備註 |
日誌ID |
log_id |
bigint |
pk, not null |
操作類型 |
op_type |
int |
not null |
操作內容 |
content |
varchar(200) |
not null |
操作人 |
tu_id |
bigint |
fk, not null |
操作時間 |
gen_time |
datetime |
not null |
三、概要設計說明書