部门用户权限应用的设计和创建(进行中)

这篇具有很好参考价值的文章主要介绍了部门用户权限应用的设计和创建(进行中)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据库表设计

补充

PDManer元数建模_王小小鸭的博客-CSDN博客https://blog.csdn.net/clover_oreo/article/details/132314390?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132314390%22%2C%22source%22%3A%22clover_oreo%22%7D代码实现之前首先是表设计,部门用户权限应用的设计和创建(进行中),数据库

六个基本步骤

1.需求分析 (分析用户需求,包括数据、功能和性能需求)
2.概念结构设计(主要采用 E-R图)
3.逻辑结构设计 (将ER图转换成表,实现从E-R模型到关系模型转换)

4.数据库物理设计 (为设计的数据库选择合适的存储结构和存取路径)

5.数据库的实施(包括编程 测试和试运行)
6.数据库运行与维护

三大范式

1.确保每列原子性,即不可再分 ;
2.确保每列都与主键相关;
3.确保每列都和主键直接相关,而不是间接相关

表设计

 涉及到的表有用户表(USER_TEST_WXX)、部门表(DEPT_TEST_WXX2)、用户部门中间表(DEPT_USER__TEST_WXX)、角色表(ROLE__TEST_WXX)、用户角色中间表(ROLE_USER_TEST_WXX)、权限表permission(PERM__TEST_WXX)、角色权限中间表(PERM_USER_TEST_WXX),共计四张实体表,三张中间表。

关系

一个用户属于一个部门

一个用户拥有一个角色
一个角色有多个操作权限
一个操作权限可以属于多个角色

一个角色可以分配给多个用户

一个部门下有多个用户

ER图

画出来的ER图如下:

部门用户权限应用的设计和创建(进行中),数据库

 涉及的简单字段有

部门用户权限应用的设计和创建(进行中),数据库

 创建新表

-- 创建部门表
create table DEPT_TEST_WXX2
(
--     主键自增generated by default as identity primary key
    DEPT_ID     NUMBER generated by default as identity primary key not null,
    NAME        NVARCHAR2(64)                                       not null,
    DESCRIBE    NVARCHAR2(256),
    CREATE_DATE DATE,
    UPDATE_DATE DATE
);

-- 创建角色表
create table ROLE_TEST_WXX
(
--     主键自增generated by default as identity primary key
    ROLE_ID     NUMBER generated by default as identity primary key not null,
    NAME        NVARCHAR2(64)                                       not null,
    DESCRIBE    NVARCHAR2(256),
    UPDATE_DATE DATE
);

-- 创建用户角色表(中间表)
create table ROLE_USER_TEST_WXX
(
--     主键自增generated by default as identity primary key
    ROLE_USER_ID     NUMBER generated by default as identity primary key not null,
    ROLE_ID     NUMBER not null,
    USER_ID     NUMBER not null,
    REMARK    NVARCHAR2(256),
    UPDATE_DATE DATE
);

-- 创建权限表
create table PERM_TEST_WXX
(
--     主键自增generated by default as identity primary key
    PREM_ID     NUMBER generated by default as identity primary key not null,
    NAME        NVARCHAR2(64)                                       not null,
    DESCRIBE    NVARCHAR2(256),
    UPDATE_DATE DATE
);

-- 创建角色权限表(中间表)
create table ROLE_PERM_TEST_WXX
(
--     主键自增generated by default as identity primary key
    ROLE_PERM_ID     NUMBER generated by default as identity primary key not null,
    ROLE_ID    NUMBER not null,
    PERM_ID    NUMBER not null,
    REMARK     NVARCHAR2(64),
    UPDATE_DATE DATE
);

现在是新创建的表引入

角色信息交互式网格

部门用户权限应用的设计和创建(进行中),数据库

注意!!!

1. 创建好交互式网格之后记得导入工具包url,后续行选中用得到  

#WORKSPACE_FILES#static/js/mkUtils.v1.js

部门用户权限应用的设计和创建(进行中),数据库
2.关闭“值受保护”,便于后续操作,否则会出现新增/修改无法执行

部门用户权限应用的设计和创建(进行中),数据库

 新增、修改用到的空白页创建

部门用户权限应用的设计和创建(进行中),数据库

 3.点击修改因为要传入选中id,所以要有客户端条件

!utils.checkNull($v('P7_ROLE_ID')) && $v('P7_ROLE_ID').split(',').length == 1

部门用户权限应用的设计和创建(进行中),数据库
 4.如果为真,则将角色网格选中的id传到表单进行修改,这一步是传递id 部门用户权限应用的设计和创建(进行中),数据库
5.有了真操作,还有假操作,不满足哦情况则为假

部门用户权限应用的设计和创建(进行中),数据库

P7角色删除执行的PL/SQL代码

declare
    V_COUNT number(18) := 0;
 begin
     -- 删除关联的用户角色数据
    DELETE ROLE_USER_TEST_WXX WHERE ROLE_ID IN(SELECT * FROM TABLE(SPLITSTR(:P7_ROLE_ID,',')));
    --删除角色数据
    DELETE ROLE_TEST_WXX WHERE ROLE_ID IN(SELECT * FROM TABLE(SPLITSTR(:P7_ROLE_ID,',')));
    V_COUNT:= SQL%ROWCOUNT;
    APEX_UTIL.SET_SESSION_STATE('P7_ROW_COUNT',V_COUNT);   
 end;
6.记得提交输入项和返回项!!!

部门用户权限应用的设计和创建(进行中),数据库

 处理→ 处理之后→ 转到对应表单 → 行为→ 类型 重定向→ 目标 13,还设置了项,将id绑定

便于后续操作。

角色表单

1.新建P13_ROW_COUNT,记得关闭“值受保护”部门用户权限应用的设计和创建(进行中),数据库

 执行修改的代码

declare
    v_row_count number(10) := 0;

begin
    update ROLE_TEST_WXX set NAME = :P13_NAME,
     DESCRIBE =:P13_DESCRIBE,
     UPDATE_DATE = sysdate 
     where ROLE_ID = :P13_ROLE_ID;
    v_row_count := SQL%ROWCOUNT;
    apex_util.set_session_state('P13_ROW_COUNT',v_row_count);
end;

提交的项:P13_ROLE_ID、P13_NAME、P13_DESCRIBE

返回的项:P13_ROW_COUNT

权限信息交互式网格

创建网格和表单

【踩坑记录】创建交互式网格是不要开启“包括表单页”!

创建交互式网格是不要开启“包括表单页”!

创建交互式网格是不要开启“包括表单页”!

下面是踩坑实例↓

部门用户权限应用的设计和创建(进行中),数据库

【错误记录】PL/SQL: ORA-00904: "PERM_ID": 标识符无效

 在执行点击删除时pl/sql代码报错

ORA-06550: 第 7 行, 第 32 列: PL/SQL: ORA-00904: "PERM_ID": 标识符无效

部门用户权限应用的设计和创建(进行中),数据库
 解决方法

1、表名写错了,仔细检查核对一下表。

2、字段名写错了,仔细检查核对一下表。

3、表中无该字段,仔细检查核对一下表。

4、字段包含了Oracle的关键字,把报错的字段用单引号括起来试试

后续

经检验1.2.3皆正确,于是在“PERM_ID”加上单引号试试,可以了(双引号也试过,不行)

部门用户权限应用的设计和创建(进行中),数据库

展现出来是这样的

部门用户权限应用的设计和创建(进行中),数据库

 啊?交互式网格怎么变表单了?

为了一探究竟重新建了一个,这次不带表单,变成正常的了,所以

创建交互式网格是不要开启“包括表单页”!

【错误记录】行选中失败

部门用户权限应用的设计和创建(进行中),数据库

 查看了一下,居然是字段PERM_ID写错成PREM_ID,破案了终于

部门用户权限应用的设计和创建(进行中),数据库

 怪不得之前关键字报错,重新全改了

declare
    V_COUNT number(18) := 0;
 begin
     -- 删除关联的角色权限数据
    DELETE ROLE_PERM_TEST_WXX WHERE PREM_ID IN(SELECT * FROM TABLE(SPLITSTR(:P18_PREM_ID,',')));
    --删除权限数据
    DELETE PERM_TEST_WXX WHERE PREM_ID IN(SELECT * FROM TABLE(SPLITSTR(:P18_PREM_ID,',')));
    V_COUNT:= SQL%ROWCOUNT;
    APEX_UTIL.SET_SESSION_STATE('P18_ROW_COUNT',V_COUNT);   
 end;

改过来以后会报错

【错误记录】PL/SQL: ORA-00904: "PREM_ID": 标识符无效

Ajax 调用为Execute Server-Side Code返回了服务器错误ORA-06550: 第 5 行, 第 37 列:
PL/SQL: ORA-00904: "PREM_ID": 标识符无效。

部门用户权限应用的设计和创建(进行中),数据库

找到了,中间表又是对的PERM_ID,盖亚!!!

部门用户权限应用的设计和创建(进行中),数据库部门用户权限应用的设计和创建(进行中),数据库

 我真想给粗心的自己两巴掌部门用户权限应用的设计和创建(进行中),数据库

正确的pl/sql如下文章来源地址https://www.toymoban.com/news/detail-651458.html

declare
    V_COUNT number(18) := 0;
 begin
     -- 删除关联的角色权限数据
    DELETE ROLE_PERM_TEST_WXX WHERE PERM_ID IN(SELECT * FROM TABLE(SPLITSTR(:P18_PREM_ID,',')));
    --删除权限数据
    DELETE PERM_TEST_WXX WHERE PREM_ID IN(SELECT * FROM TABLE(SPLITSTR(:P18_PREM_ID,',')));
    V_COUNT:= SQL%ROWCOUNT;
    APEX_UTIL.SET_SESSION_STATE('P18_ROW_COUNT',V_COUNT);   
 end;

到了这里,关于部门用户权限应用的设计和创建(进行中)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL赋予用户的各种数据库操作权限

    MySQL清空数据库的操作:truncate table tablename; MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。  grant select on testdb.* to common_user@\\\'%\\\' grant insert on testdb.* to common_user@\\\'%\\\' gra

    2024年02月05日
    浏览(28)
  • MariaDB 使用 root 账户管理数据库用户权限和远程登录权限设置

    MariaDB 使用 root 账户管理数据库用户权限和远程登录权限设置 作为一种流行的关系型数据库管理系统,MariaDB 提供了丰富的功能和灵活的权限控制机制。在本文中,我们将学习如何使用 root 账户来创建新用户,并为其分配特定的数据库权限和远程登录权限。 首先,我们需要使

    2024年01月23日
    浏览(36)
  • openGauss学习笔记-105 openGauss 数据库管理-管理用户及权限-默认权限机制

    数据库对象创建后,进行对象创建的用户就是该对象的所有者。openGauss安装后的默认情况下,未开启 三权分立 ,数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过 GRANT 将对象的

    2024年02月07日
    浏览(42)
  • MySQL数据库——SQL(4)-DCL(管理用户、权限控制)

    目录 管理用户 1.查询用户 2.创建用户 3.修改用户密码 4.删除用户 示例 权限控制 1.查询权限 2.授予权限 3.撤销权限 示例 DCL总结 DCL DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。 注意: 主机名可以使用通配符‘%’。 这类S

    2024年02月12日
    浏览(37)
  • 【Spring Boot项目】根据用户的角色控制数据库访问权限

    在一些特定的业务需求下,要求创建只读用户,但是由于一些查询请求使用的是POST方法,因此在网关层面配置只允许请求GET方法又无法满足。所以就想到了是否可以在 JDBC 层面控制,判断角色并且只允许执行 SELECT 类型的SQL语句。 在Spring Boot项目中,我们可以通过结合网关和

    2024年02月06日
    浏览(43)
  • Day04 03-MySQL数据库的DCL(用户|权限|视图)

    第十二章 DCL 12.1 DCL的作用 DCL语句主要用来做用户的创建、管理,权限的授予、撤销等操作的。 12.2 管理用户 创建、删除用户的操作,必须要使用root用户才可以完成! 12.3 权限管理 如果在授权远程登录的时候,出现如下问题: Unable to load authentication plugin ‘caching_sha2_password’

    2024年02月07日
    浏览(45)
  • Java,设计,功能权限和数据权限,用户、角色、权限和用户组

    ACL(Access Control List),访问控制列表 ACL是一种访问控制机制,包含三个关键要素:用户(User)、资源(Resource)和操作(Operate),当用户请求操作资源时,检查资源的权限列表,如果资源的权限列表中存在该用户的操作权限则允许,否则拒绝。 BAC(Role-Based Access Control),

    2024年02月01日
    浏览(22)
  • 【Mysql数据库从0到1】-入门基础篇--用户与权限管理

    Mysql 用户分为root用户和普通用户,其中root用户是数据库超级管理员,拥有所有权限(创建、删除、修改密码、授权等管理权限),普通用户只拥有被授予的权限。 Mysql数据库的安全性通过账户管理来保障。 1.1 🍃 Mysql服务器登录 🍀 简单使用 🍀 复杂使用 1.2 🍃 用户创建

    2024年02月07日
    浏览(52)
  • Jwt(Json web token)——使用token的权限验证方法 & 用户+角色+权限表设计 & SpringBoot项目应用

    1.认证鉴权服务,注册中心,认证中心,鉴权中心; 2.用户,角色,权限表设计,数据库视图的使用; 3.项目中的应用,使用自定义注解+拦截器; 4.枚举类型的json化, @JsonFormat(shape = JsonFormat.Shape.OBJECT) @Getter https://gitee.com/pet365/springboot-privs-token 用户和权限之间关系(多对多

    2024年02月14日
    浏览(38)
  • MongoDB创建用户 、数据库、索引等基础操作

    MongoDB的权限认证是相对来说比较复杂的,不同的库创建后需要创建用户来管理。 本机中的MongoDB是docker 启动的,所以先进入docker的镜像中 这样就进入到了镜像MongoDB中,然后输入命令连接MongoDB数据库   注意用户名密码以及数据库名称  出现这个界面说明登录成功 接下来开始

    2024年02月14日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包