数据库表设计
提示
大公司的项目一般会先有产品经理进行需求分析,然后会产出需求文档、产品设计稿之内的东西。
开发拿到之后需要将其转化为开发文档,评估之后再进行开发。
本项目没有产品经理与 UI 设计之类的,就直接以类似仿站的需求直接开始做了。
改项目旨在提供一个最简的开发模版,需要提供基于用户角色的权限管理功能、动态菜单渲染功能。
需要实现的功能:
- 部门管理
- 权限管理
- 角色管理
- 用户管理
与之对应的则是四张数据表。
在实现基于用户角色权限管理系统是,需要两张关系表,那就是
- 角色 - 权限关系表
- 用户 - 角色关系表
数据表设计如下
erDiagram
ums_department {
Integer id PK "主键"
String(50) name "部门名"
String(20) leader "负责人"
Boolean enable "部门是否启用"
Integer pid FK "上级部门 ID,自关联"
}
ums_rights {
Integer id PK "主键"
String(20) name "权限名"
String(50) code "权限编码"
String(20) type "权限类型,菜单、路径、权限"
String(128) icon_sign "图标符号"
Boolean status "权限状态,启用或禁用"
Integer sort "显示排序"
Integer open_type "打开方式"
Integer pid FK "上级权限 ID,自关联"
}
ums_role {
Integer id PK "主键"
String(20) name "角色名"
String(50) code "角色标识"
String(20) desc "角色描述"
}
ums_user {
Integer id PK "主键"
String(30) nickname "角色名"
String(30) username "用户昵称"
String(102) password_hash "密文密码"
String(11) mobile "电话号码"
String(50) email "邮箱"
Text avatar "头像 url"
DateTime create_at "创建时间"
Integer department_id FK "部门ID,外键"
}
ums_user_role {
Integer id PK "主键"
Integer user_id FK "角色名"
Integer role_id FK "角色标识"
}
ums_role_rights {
Integer id PK "主键"
Integer rights_id FK "角色名"
Integer role_id FK "角色标识"
}
ums_user }|..|{ ums_role: "用户 与 角色关系"
ums_rights }|..|{ ums_role: "角色 与 权限关系"
ums_role_rights }o--o{ ums_role: "角色 与 角色权限关系表"
ums_role_rights }o--o{ ums_rights: "权限 与 角色权限关系表"
ums_user_role }o--o{ ums_user: "用户 与 用户角色关系表"
ums_user_role }o--o{ ums_role: "角色 与 用户角色关系表"
ums_department ||--o{ ums_user: "一个部门有多个员工"