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

数据库表设计

 

代码实现之前首先是表设计,

六个基本步骤

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 keyDEPT_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 keyROLE_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 keyROLE_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 keyPREM_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 keyROLE_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,后续行选中用得到

2.关闭“值受保护”,便于后续操作,否则会出现新增/修改无法执行

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

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

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

 4.如果为真,则将角色网格选中的id传到表单进行修改,这一步是传递id 

5.有了真操作,还有假操作,不满足哦情况则为假

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

declareV_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,记得关闭“值受保护”

 执行修改的代码

declarev_row_count number(10) := 0;beginupdate 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,破案了终于

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

declareV_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如下

declareV_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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/91758.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transformer(二)(VIT,TNT)(基于视觉CV)

目录 1.视觉中的Attention 2.VIT框架(图像分类,不需要decoder) 2.1整体框架 2.2.CNN和Transformer遇到的问题 2.3.1CNN 2.3.2Transformer 2.3.3二者对比 2.4.公式理解 3TNT 参考文献 1.视觉中的Attention 对于人类而言看到一幅图可以立…

机器学习笔记 - 基于C++的​​深度学习 二、实现卷积运算

一、卷积 卷积是信号处理领域的老朋友。最初的定义如下 在机器学习术语中: I(…)通常称为输入 K(…)作为内核,并且 F(…)作为给定K的I(x)的特征图。 虑多维离散域,我们可以将积分转换为以下求和 对于二维数字图像,我们可以将其重写为: <

STM32F103-OLED使用教程

目录 1. OLED屏介绍2. OLED如何显示一个点3. 配置OLED屏幕4. OLED显示字符串和汉字5. OLED屏幕显示图片6. 总结 1. OLED屏介绍 OLED&#xff08;Organic Light Emitting Diode&#xff09;&#xff1a;有机发光二极管OLED显示屏&#xff1a;性能优异的新型显示屏&#xff0c;具…

Jay17 2023.8.14日报 即 留校集训阶段性总结

8.14 打了moeCTF&#xff0c;还剩一题ak Web。 Jay17-集训结束阶段性总结&#xff1a; 集训产出&#xff1a; 自集训开始以来一个半月&#xff0c;最主要做的事情有三。 一是跟课程&#xff0c;复习学过的知识&#xff0c;学习新的知识&#xff1b;目前课程已大体听完&…

HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具

公文一键排版系统基本完成&#xff0c;准备继续完善SysInfo&#xff0c;增加用户帐户信息&#xff0c;其中涉及到Win32_Account结构&#xff0c;其C定义如下&#xff1a; [Dynamic, Provider("CIMWin32"), UUID("{8502C4CC-5FBB-11D2-AAC1-006008C78BC7}"…

H13-922题库 HCIP-GaussDB-OLAP V1.5

**H13-922 V1.5 GaussDB(DWS) OLAP题库 华为认证GaussDB OLAP数据库高级工程师HCIP-GaussDB-OLAP V1.0自2019年10月18日起&#xff0c;正式在中国区发布。当前版本V1.5 考试前提&#xff1a; 掌握基本的数据库基础知识、掌握数据仓库运维的基础知识、掌握基本Linux运维知识、…

idea打jar包

目录 1、打包设置 2、打包介绍 3、开始打包 1、打包设置 先设置要打包的模块信息&#xff0c;即打包进去的内容。如下图所示&#xff1a;File --> Project Structure --> Artifacts&#xff0c;点击&#xff0b;号完成模块创建&#xff0c;其中有两种方式&#xff1a;…

SpringBoot整合、SpringBoot与异步任务

目录 一、背景描述二、简单使用方法三、原理五、使用自定义线程池1、默认使用2、如何使用自定义线程池 六、Async失效情况1、同一个类中&#xff0c;一个方法调用 Async标注的方法 一、背景描述 java 的代码是同步顺序执行&#xff0c;当我们需要执行异步操作时我们通常会去创…

Vue 批量注册组件

全局组件 在components文件夹下新建一个Gloabl文件夹&#xff08;可以自行命名&#xff09; 在目录下新建index.js import Vue from vue// require.context(路径, 是否遍历子目录, 匹配规则) const requireComponents require.context(./, true, /\.vue/)requireComponents.k…

【TypeScript】基础类型

安装 Node.js 环境 https://nodejs.org/en 终端中可以查到版本号即安装成功。 然后&#xff0c;终端执行npm i typescript -g安装 TypeScript 。 查到版本号即安装成功。 字符串类型 let str:string "Hello"; console.log(str);终端中先执行tsc --init&#xf…

uni-app 集成推送

研究了几天&#xff0c;终于是打通了uni-app的推送&#xff0c;本文主要针对的是App端的推送开发过程&#xff0c;分为在线推送和离线推送。我们使用uni-app官方推荐的uni-push2.0。官方文档 准备工作&#xff1a;开通uni-push功能 勾选uniPush2.0点击"配置"填写表单…

日常BUG——普通页面跳转tabbar页面报错

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一、问题描述 微信小程序页面跳转的时候出现下面的问题&#xff1a; wx.redirectTo({url: /pages/index/i…

matlab使用教程(16)—图论中图的定义与修改

1.修改现有图的节点和边 此示例演示如何使用 addedge 、 rmedge 、 addnode 、 rmnode 、 findedge 、 findnode 及 subgraph 函数访问和修改 graph 或 digraph 对象中的节点和/或边。 1.1 添加节点 创建一个包含四个节点和四条边的图。s 和 t 中的对应元素用于指定每条…

SSL握手协议相关概念

下图为握手协议的流程图&#xff0c;具体的解释参考博客&#xff1a; 【下】安全HTTPS-全面详解对称加密&#xff0c;非对称加密&#xff0c;数字签名&#xff0c;数字证书和HTTPS_tenfyguo的博客-CSDN博客 下面梳理一下SSL协议中的一些细节。首先是相关名词&#xff1a;证书、…

SpringBoot中的可扩展接口

目录 # 背景 # 可扩展的接口启动调用顺序图 # ApplicationContextInitializer # BeanDefinitionRegistryPostProcessor # BeanFactoryPostProcessor # InstantiationAwareBeanPostProcessor # SmartInstantiationAwareBeanPostProcessor # BeanFactoryAware # Applicati…

npm install 中 --save 和 --save-dev 是什么?

npm&#xff0c;全名 Node Package Manager&#xff0c;套件管理工具&#xff0c;package.json 会记下你在项目中安装的所有套件。 假设在项目中安装 lodash npm i --save lodash这样在 dependencies 中会出现&#xff1a; 如果修改了导入方式&#xff1a; npm i --save-dev …

使用python读Excel文件并写入另一个xls模版

效果如下&#xff1a; 原文件内容 转化后的内容 大致代码如下&#xff1a; 1. load_it.py #!/usr/bin/env python import re from datetime import datetime from io import BytesIO from pathlib import Path from typing import List, Unionfrom fastapi import HTTPExcep…

Dedecms V110最新版RCE---Tricks

前言 刚发现Dedecms更新了发布版本&#xff0c;顺便测试一下之前的day有没有修复&#xff0c;突然想到了新的tricks去实现RCE。 文章发布的时候估计比较晚了&#xff0c;一直没时间写了。 利用 /uploads/dede/article_string_mix.php /uploads/dede/article_template_rand.…

Spring Boot 项目应用消息服务器RabbitMQ(简单介绍)

一、背景 本章讲述的是在用户下单环节&#xff0c;消息服务器RabbitMQ 的应用 1.1 消息服务器的应用 在写一个电商项目的小demo&#xff0c;在电商项目中&#xff0c;消息服务器的应用&#xff1a; 1、订单状态通知&#xff1a;当用户下单、支付成功、订单发货、订单完成等…

如何使用CSS实现一个模态框(Modal)效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现模态框&#xff08;Modal&#xff09;效果⭐ HTML 结构⭐ CSS 样式⭐ JavaScript⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎…