编程数据库结构设计的重要性分析及解决办法!

编程数据库结构设计的重要性分析及解决办法!

我们先来分析一下数据库结构: 数据库

一、action表(以下简称“权限表”)、Grupmanager表(以下简称“管理组表”)、Master表(以下简称“人员表”)三张实体表java用户角色权限设计,依次记录“权限”信息、“管理组”信息和“人员”信息。如下图:编程

这三个表之间的关系是多对多的。 一个权限可能同时属于多个管理组,一个管理组也可能同时包含多个权限。 同理,一个成员可能同时属于多个管理组,一个管理组也可能同时包含多个成员。下图:数据库设计

因为这三个表之间存在多对多的关系,所以最好使用另外两个表来完成它们之间的交互。 这两张表起到映射作用,即“actiongroup”表(以下简称“权限映射表”)和“mastergroup”表(以下简称“人员映射表”)。 前者映射权限表和管理组表之间的交互。 后者映射人员表和管理组表之间的交互。 下图:水疗中心

另外,系统运行时还需要一个表来控制左侧菜单中的权限列,即“权限列表”,如下图: 设计

根据以上分析,我们设计数据库结构,如下图:

为了更好的进行分析,我们将数据库结构图进行了拆分。 三个实体表的作用已经很清楚了。 现在我们来看看这两个映射表的作用。 io

权限映射表如下所示:ast

首先我们看一下权限映射表、管理组表、权限表之间的字段关系。

看图中红圈,首先看gorupid场相关性。 这种关联方法在实际数据库中的表现如下:

如图所示,管理组表中“超级管理员”的groupid为1,因此权限映射表中groupid为1的权限就是“超级管理员”拥有的权限。

使用groupid字段关联的目的是为了找出一个管理组可以执行哪些权限。 但这些权限的详细信息是通过action字段关联来查询的。

数据库中action字段关联的性能如下:

关联完成后,就可以在权限映射表中查询这些权限的详细信息。 综上所述,我们知道管理组可以执行哪些权限以及这些权限的详细信息是什么。

你可能会问,为什么不使用actionid字段来关联呢? 因为:

重复操作数据库后,权限表中的id字段可能会发生变化。

权限映射表只记录管理组可以执行的权限。

一旦权限表中的id发生变化游戏评测,权限映射表中的记录��就会发生变化。

一个管理组能够执行的权限必然是错误的,这是非常不可取的。

考虑到上述情况,应该使用action字段来关联,因为:

在权限表中,id可能会改变,但是action字段在任何情况下都不可能改变。

权限映射表中记录的action字段不会改变。

管理组可以执行权限而不会出错。

两人映射表如下:

我们看一下人员映射表、管理组表和人员表之间的字段关系,如下图所示:

看图中红圈,首先看groupid字段关联。 这种关联方法在数据库中的表现如下:

如图所示,“超级管理员”组的groupid为1,我们看一下人员映射表。 Admin属于超级管理员组,administrator属于超级管理员组,也属于管理员组。

此关联方法用于找出管理组中的人员。 同上,通过关联id字段(人员映射表中的masterid字段)来查询人员的详细信息。

id字段(人员映射表中的masterid字段)在数据库中的表示形式如下:

一名员工可能同时属于多个“管理组”。 如图所示,管理员同时属于两个“管理组”。 因此,人员映射表中将会有两条关于管理员的记录。

通过这种关联方式可以查询管理组中人员的详细信息。 综合起来,我们可以知道管理组中有哪些人以及他们的详细信息。

结合上面提到的权限表和权限映射表,实现了需求中的“分组”操作,如下图所示:

事实上,管理组表只记录了组的基本信息,如名称、组ID等。组中人员的详细信息,以及该组可以执行的权限的详细信息都记录在组表中。人员表和权限表。 这两个映射表实际上记录了一个组中有哪些人以及他们可以执行哪些权限。 通过两个映射表的连接,可以实现三个实体表之间的交互,从而完成需求中提到的“分组”操作。

我们来看一下权限列表和权限表之间的交互。 这两个表的字段关系如下:

这两个表使用 actioncolumnid 字段关联。 这个关联在数据库中的表现如下:

如图所示java用户角色权限设计,通过这种关联方式,我们可以非常清晰的看到权限表中的权限属于哪一列。

现在,数据库结构已经非常清晰了,并且已经实现了分配权限和“组”操作的功能。 接下来我们来分析一下权限管理系统需求中提到的复用性问题。

为什么使用这种数据库设计方法构建的系统可以被重用?

三个实体表记录了系统的三个决定性要素。 “权限”、“组”和“人员”。 这三个元素可以随意添加,互不影响。 无论是什么类型的业务系统,这三个决定要素都不会改变,也就是说结构不会改变,改变的只是数据。

两个映射表记录了三个元素之间的关系。 但这些关系完全是人为建立的。 当需要进行更改时,仅操作数据库中的记录,而不改变结构。

权限列表记录了系统使用时显示的列。 无论是添加列、修改列还是减少列,都只是一个操作记录。

综上所述,通过这样设计数据库,系统是完全可重用的程序开发,能够经受住“变化”的考验。

总结:

该系统的关键在于三个实体表紧紧抓住了系统的核心组件,两个映射表完美映射了三个实体表之间的交互。 困难在于理解映射表的工作原理,映射表记录关系并实现“组”操作的概念。 系统总体设计的思想是可以在不同的MIS系统中“复用”,以满足不同系统的功能权限设置。

附录:

权限管理系统数据表字段设计

我们看一下权限管理系统的数据库表设计,分为六张表,如下图所示:

动作表:

动作表记录了系统中的所有动作以及动作相关的描述。

动作列表:

动作列表记录动作的列。 系统运行时,左侧菜单栏提供了多种不同的功能。 每列都是一列。 每添加一列,表中的记录就会被添加。 ,相应的,左侧菜单栏中会增加一个新的栏目。

动作组表:

动作组表记录了动作所在的组。

组经理表:

groupmanager表记录了管理组的相关信息。 每添加一个管理组,此处的记录就会加一。

主组表:

mastergroup表记录了管理员所属的管理组。 由于一个管理员可能同时属于多个组,因此表中可能存在一个管理员的多条记录。

主表:

主表记录了所有管理员的信息。 每次添加管理员时,表都会添加一条记录。

文章来源:http://www.noobyard.com/article/p-vgnqpmbp-kn.html