关系型数据库中常用的表设计

1.字典表(sys_dict)

作用:用于存放多组值不变的基础数据,只对系统提供查询功能.

关系型数据库中常用的表设计

*记录的新增、更新、删除都是通过手动进行操作.

*其中dict_code为dict_title的编码,相同dict_title的记录为同一组基础数据,每组基础数据下又有多对dict_value与dict_name.

*每组基础数据可以根据实际的业务需求在程序中创建对应的枚举类(value和name属性).

2.系统配置表(sys_config)

作用:用于存放系统的配置项,某些业务逻辑需要根据配置项的值来做出相应的处理.

关系型数据库中常用的表设计

*记录的新增、删除都是通过手动进行操作.

*在系统配置页面中查询配置项并修改配置项的值.

*在某些业务逻辑中需根据模块ID和配置代码查询配置项,根据不同的配置值做出相应的处理. 

*可以创建一个枚举类存放模块ID,创建常量类存放config_code.

3.地域表(sys_area)

作用:用于存放省市区地域数据,一般只对系统提供查询功能.

关系型数据库中常用的表设计

*记录的新增、更新、删除都是通过手动进行操作. 

*页面中通过多级联动选择地域,调用根据父编码查询记录的API(首次查询父编码为0的记录表示顶层节点)

4.RBAC

用户表(sys_user)

关系型数据库中常用的表设计

角色表(sys_role)

关系型数据库中常用的表设计

菜单表(sys_menu)

关系型数据库中常用的表设计

*若使用Shiro安全管理框架,则在实现Realm的doGetAuthorizationInfo()方法中,通过用户的Principal查询用户拥有的Role以及Permission各存放到Set集合中返回给SecurityManager,在Controller中通过注解或XML配置的方式设置资源必须拥有指定的role或permission时才能访问.

*登录接口校验成功后需要返回用户的个人信息以及拥有的角色给前端进行页面元素的控制.

用户角色关联表(sys_user_role)

*其中user_id和role_id为联合主键,可以保证一个用户不会存在相同的角色.

*当在页面查看用户拥有的角色时,调用后台API通过用户ID查询用户拥有的角色以及系统所有的角色,后台进行双重遍历,当用户拥有目标角色时flag设置为ture,供前端checkbox渲染.

*当在页面为用户新增或移除角色时,调用后台API传递选中的角色实体,后台可以删除用户拥有的所有角色再进行批量入库或者相对当前用户判断新增和删除了哪些角色再进行分步SQL操作.

角色菜单关联表(sys_role_menu)

*其中role_id和menu_id为联合主键,可以保证一个角色不会存在相同的权限.

*当在页面查看角色拥有的权限时,调用后台API通过角色ID查询角色拥有的权限以及系统所有的权限,后台进行双重遍历,当角色拥有目标权限时flag设置为ture,供前端checkbox渲染.

*当在页面为角色新增或移除权限时,调用后台API传递选中的权限实体,后台可以删除角色拥有的所有权限再进行批量入库或者相对当前角色判断新增和删除了哪些权限再进行分步SQL操作.

5.机构表(sys_office)

作用:用于存放公司的组织架构关系(适用于集团)

关系型数据库中常用的表设计

*新增记录时前端需要传递新增的机构信息以及父机构ID,后台将会根据父ID查询机构实体,获取其所有的父ID,构造本次新增机构实体的所有父ID,最终进行入库操作.

*删除记录时前端需要传递要删除的机构ID,后台将删除本机构及其所有子机构,只要所有的父ID中包含要删除的机构ID则也应被删除.

6.系统操作日志(sys_log)

作用:用于记录用户在系统中的操作行为. 

*系统操作日志功能一般会进行日志的输出以及数据的入库.

*系统操作日志表由于数据量众多,因此需要在查询参数中添加索引. 

关系型数据库中常用的表设计

*利用拦截器的afterCompletion方法实现系统操作日志(在请求被响应之后调用)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/574d0ed8a6853f166d06ab75f888fbb9.html