Skip to content

数据库表设计

提示

大公司的项目一般会先有产品经理进行需求分析,然后会产出需求文档、产品设计稿之内的东西。

开发拿到之后需要将其转化为开发文档,评估之后再进行开发。

本项目没有产品经理与 UI 设计之类的,就直接以类似仿站的需求直接开始做了。

改项目旨在提供一个最简的开发模版,需要提供基于用户角色的权限管理功能、动态菜单渲染功能。

需要实现的功能:

  • 部门管理
  • 权限管理
  • 角色管理
  • 用户管理

与之对应的则是四张数据表。

在实现基于用户角色权限管理系统是,需要两张关系表,那就是

  • 角色 - 权限关系表
  • 用户 - 角色关系表

数据表设计如下

uml diagram
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: "一个部门有多个员工"