历史版本2 :四联表模型 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 背景

企业中存在复杂的层级关系,针对面向全体员工的看板,希望不同层级的人员可以查看到对应权限下的数据。

原始方案:使用一张权限宽表记录用户拥有的不同维度的权限信息,并在每个业务数据表上配置行权限。如下图所示:

注:本文示例使用品牌和区域维度,用户可根据实际使用场景进行调整。

1.2 问题描述

原始方案在真实场景中,可能会出现以下问题:

  • 数据冗余:用户和维度权限间为多对多关系,权限宽表中有大量冗余信息

  • 权限宽表不易于动态权限配置:若新增一个维度,有 n 个不同的维度值,且用户数量为 m ,则在权限宽表中共需要插入 m * n 条记录。

1.3 解决方案

我们提出「四联表」模型,将一张权限宽表拆分为多个维度权限表和用户信息表,独立维护用户在不同维度上的权限。如下图所示:

优点:

  • 减少数据冗余。

  • 用户在每个维度上的权限更清晰,且维度权限表为结构化数据,易于维护。

  • 新增业务数据表时,无需配置行权限,关联对应的维度表即可。

  • 维度可以无限扩展,且互不影响。新增维度时,无需在每张业务数据表上配置行权限,在新增的维度表上配置一次行权限即可。

2. 四联表模型编辑

2.1 模型介绍

四联表模型需要分别创建不同维度的「维度表」和「维度权限表」。其中,将「维度权限表」与「用户信息表」进行关联,记录用户拥有的不同维度的权限信息。再将「维度表」与「业务数据表」进行关联,只在维度表」上配置行权限,即可实现对多业务数据表行权限限制。

如下图所示:

2.1 数据准备

在配置行权限前,用户需提前准备以下类型的数据表:

注:需确保维度表的每个字段值都是唯一的。

1)用户信息表:包含用户的唯一标识等字段。

2)维度表:

3)维度权限表:用户与权限的关系

4)业务数据表:

2.2 模型搭建

1)建立以下两类关联,详情请参考:设置关联

  • 关联「用户信息表」与「维度权限表」,关联关系为 1:N

  • 关联「维度表」与「业务数据表」,关联关系为 1:N

设置关联后,系统会自动读取表间关联,可以通过关联关系获取到相应数据。

2)设置登录用户所在字段。

3)打开「维度表」和「业务数据表」的「组件数据」使用权限,详情请参考:公共数据组件数据权限 。

4)在「维度表上」配置行权限,获取到登录用户有权限的维度,最终查看到的数据为多个维度的交集数据。

模型搭建效果如 2.1 节图示。

3. 动态配置行权限编辑

企业的组织结构、职能部门、岗位在经营中会经常发生变化,如何针对变化部分进行权限配置呢?

本节提供新增维度和新增业务数据表的权限处理思路。

    3.1 新增维度

    「四联表」模型支持无限扩展维度,并可以方便快捷地进行配置和维护。

    新增维度时,用户需要配置相关关联,并在新增的维度表上配置一次行权限即可,系统会自动取多个维度的交集数据。

    具体操作步骤如下:

    1)准备一张「维度表」和一张「维度权限表」。

    2)建立以下关联:

    • 关联「用户信息表」与新增「维度权限表」,关联关系为 1:N

    • 关联「维度表」与相关「业务数据表」,关联关系为 1:N

    3)在新增的维度表上配置一次行权限。如下图所示:

    3.2 新增业务数据表

    新增业务数据表时,无需配置行权限,与对应的维度表进行关联即可。

    例如:新增「业务数据表 XXX」 ,此表与「区域维度表」有逻辑关系,则将其与「区域维度表」进行关联。如下图所示:


    4. 示例编辑

    公司领导、区域主管、区域组员间存在树状关系,需要根据不同门店维度为用户分配不同权限。

    实现效果为公司领导可以看到全部数据,区域主管看到对应区域的数据,区域组员只能看到自己的数据。详情请参考:多层级权限分配 。