MySQL数据表设计 系统权限表设计 权限、角色、用户表设计

news/2025/1/7 20:18:34/

数据库

创建

CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

修改

ALTER DATABASE my_database CHARACTER SET=utf8mb4  COLLATE=utf8mb4_unicode_ci;

字符集:utf8和utf8mb4,推荐使用:utf8mb4

utf8:主要支持Unicode字符集中的基本多语言平面(BMP)范围内的字符,码点范围从0x0000到0xFFFF。这涵盖了大多数常用的字符,包括拉丁语、希腊语、中文、日文等。但它不包含一些表情符号(Emoji)。

utf8mb4:是utf8的超集,支持Unicode字符集的全部字符,能够表示更多的特殊字符。

校对规则(Collation),推荐使用:utf8mb4_unicode_ci

校对规则(Collation)也可以称为排序规则,是一组字符编码规则,用于对字符串进行排序和比较。

数据库配置设置:my.ini或者my.cnf

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

权限系统

ACL(Access Control List),访问控制列表

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

RBAC(Role-Based Access Control),基于角色的访问控制

RBAC模型,三个基础组成部分:用户(User)、角色(Role)和权限(Privilege),通过定义角色的权限,授予用户某个角色从而来控制用户的权限,实现了用户和权限的逻辑分离(区别于ACL模型);

RBAC权限授权,实际上是:Who、What、How,构成了访问权限三元组,也就是:Who对What(Which)进行How的操作。

Who:权限的拥用者或主体,如:Principal、User、Group、 Role、Actor等等;

What:权限针对的对象或资源(Resource、Class);

How:具体的权限(Privilege,正向授权与负向授权);

Operator:操作,表明对What的How操作,也就是:权限(Privilege)+ 资源(Resource);

Role:角色,一定数量的权限的集合,权限分配的单位与载体,目的是隔离用户(User)和权限(Privilege)的逻辑关系;

Group:用户组,权限分配的单位与载体,权限不考虑分配给特定的用户而给组,组可以包括组(以实现权限的继承),也可以包含用户,组内用户继承组的权限,User与Group是多对多的关系,Group可以层次化,以满足不同层级权限控制的要求。

数据库表设计

/** 功能权限表 **/
CREATE TABLE `t_permission` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '菜单ID' primary key,`name` VARCHAR(32) NOT NULL COMMENT '菜单名称',`mark` VARCHAR(32) NULL DEFAULT NULL COMMENT '菜单权限标识',`path` VARCHAR(128) NULL DEFAULT NULL COMMENT '前端URL',`url` VARCHAR(128) NULL DEFAULT NULL COMMENT '请求链接',`method` VARCHAR(32) NULL DEFAULT NULL COMMENT '请求方法',`parent_id` INT(11) NULL DEFAULT NULL COMMENT '父菜单ID',`parent_full_path` VARCHAR(256) NULL DEFAULT NULL COMMENT '菜单全路径',`icon` VARCHAR(32) NULL DEFAULT NULL COMMENT '图标',`component` VARCHAR(64) NULL DEFAULT NULL COMMENT '组件',`type` INT(2) NULL DEFAULT '0' COMMENT '菜单类型 (0菜单 1按钮)',`status` INT(2) NULL DEFAULT '1' COMMENT '状态:1:启用;0:停用',`level` INT(5) NULL DEFAULT '1' COMMENT '级别',`sorted` INT(5) NULL DEFAULT '1' COMMENT '排序值',`create_time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`create_uid` INT(11) NULL DEFAULT '1' COMMENT '创建用户ID',`create_user` VARCHAR(50) NULL DEFAULT '' COMMENT '创建人',`modify_time` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
)
COMMENT='功能权限表',ENGINE=InnoDB;/** 角色表 **/
CREATE TABLE `t_role` (`id` INT(11) NOT NULL AUTO_INCREMENT primary key COMMENT '主键ID',`name` VARCHAR(100) NOT NULL COMMENT '角色名称',`code` VARCHAR(100) NOT NULL COMMENT '角色编号',`type` INT(5) NULL DEFAULT '0'  COMMENT '角色类型',`sorted` INT(11) NULL DEFAULT '1' COMMENT '排序值',`status` INT(2) NULL DEFAULT '1' COMMENT '状态:1:启用;0:停用',`describe` VARCHAR(255) NULL DEFAULT '' COMMENT '角色描述',`create_uid` INT(11) NULL DEFAULT NULL COMMENT '创建用户ID',`create_user` VARCHAR(100) NULL DEFAULT '' COMMENT '创建人',`create_time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`modify_time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间'
)
COMMENT='角色表',ENGINE=InnoDB;/** 角色权限关系表 **/
CREATE TABLE `t_role_permission` (`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',`role_id` INT(11) NULL DEFAULT NULL COMMENT '角色id',`permission_id` INT(11) NULL DEFAULT NULL COMMENT '权限id',`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`create_uid` INT(11) NULL DEFAULT NULL COMMENT '创建用户ID',`create_user` VARCHAR(100) NULL DEFAULT '' COMMENT '创建人'
)
COMMENT='角色权限关联表',ENGINE=InnoDB;/** 用户表 **/
CREATE TABLE `t_user` (`id` INT(11) NOT NULL AUTO_INCREMENT primary key COMMENT '主键ID',`username` VARCHAR(60) NOT NULL UNIQUE COMMENT '登录用户名',`password` VARCHAR(255) NOT NULL COMMENT '登录密码',`type` INT(5) NULL DEFAULT '0' COMMENT '用户类型',`real_name` VARCHAR(60) NULL DEFAULT '0' COMMENT '用户真实名称',`nick_name` VARCHAR(60) NULL DEFAULT '1' COMMENT '用户昵称',`avatar` VARCHAR(255) NULL DEFAULT NULL COMMENT '用户头像',`gender` INT(5) NULL DEFAULT '0' COMMENT '用户性别,0:未知,1 男 2 女',`phone` VARCHAR(30) NULL DEFAULT '' COMMENT '用户电话',`mobile` VARCHAR(30) NULL DEFAULT '' COMMENT '用户手机号',`email` VARCHAR(60) NULL DEFAULT '' COMMENT '用户邮箱',`status` INT(1) NULL DEFAULT '0' COMMENT '用户状态: 0:停用、1:正常',`job_number` VARCHAR(50) NULL DEFAULT ''  COMMENT '用户工号',`id_number` VARCHAR(30) NULL DEFAULT ''  COMMENT '用户身份证号码',`work_title` VARCHAR(50) NULL DEFAULT NULL COMMENT '工作职称',`work_post` VARCHAR(50) NULL DEFAULT NULL COMMENT '工作职位',`work_role` VARCHAR(100) NULL DEFAULT NULL COMMENT '工作角色',`describe` VARCHAR(35) NULL DEFAULT ''  COMMENT '用户描述',`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`create_uid` INT(11) NULL DEFAULT NULL COMMENT '创建用户ID',`create_user` VARCHAR(100) NULL DEFAULT '' COMMENT '创建人',`modify_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`logic_deleted` INT(1) NULL DEFAULT '0' COMMENT '0,正常 1,已删除'
)
COMMENT='用户表' ENGINE=InnoDB;/** 用户角色关系表 **/
CREATE TABLE `t_user_role` (`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',`user_id` INT(11) COMMENT '用户id',`role_id` INT(11) COMMENT '角色id',`create_uid` INT(11) COMMENT '创建用户ID',`create_user` VARCHAR(50) NULL DEFAULT '' COMMENT '创建人',`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
)
COMMENT='用户角色关联表',ENGINE=InnoDB;


http://www.ppmy.cn/news/1561057.html

相关文章

ceph文件系统

ceph文件系统 ceph基础知识ceph系统的核心原理和组件1. 架构和组件1.1 Ceph Monitor (MON)1.2 Ceph OSD (Object Storage Daemon)1.3 Ceph MDS (Metadata Server)1.4 Ceph Client 2. 数据存储与分布2.1 CRUSH 算法2.2 数据副本与容错 3. 数据一致性4. pg和存储池与osd之间的关系…

掌控ctf-2月赛

没事干 随便刷刷题 1伪协议读取系统进程 源码 <?php highlight_file(__FILE__); require_once flag.php; if(isset($_GET[file])) {require_once $_GET[file]; } 伪协议读取flag.php&#xff0c;/proc/self指向当前进程的 exp ?filephp://filter/readconvert.base64…

Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码 【AI辅助开发系列】

&#x1f380;&#x1f380;&#x1f380;【AI辅助编程系列】&#x1f380;&#x1f380;&#x1f380; Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…

Django Swagger文档库drf-spectacular

一、概述 drf-spectacular 是一个为 Django REST Framework (DRF) 设计的 OpenAPI 3.0 和 3.1 规范的生成器。它旨在提供既理智又灵活的方式来创建 API 文档&#xff0c;主要实现以下三个目标&#xff1a; 从 DRF 中提取尽可能多的 schema 信息提供灵活性&#xff0c;使 schema…

2025年贵州省职业院校技能大赛信息安全管理与评估赛项规程

贵州省职业院校技能大赛赛项规程 赛项名称&#xff1a; 信息安全管理与评估 英文名称&#xff1a; Information Security Management and Evaluation 赛项组别&#xff1a; 高职组 赛项编号&#xff1a; GZ032 1 2 一、赛项信息 赛项类别 囚每年赛 □隔年赛&#xff08;□单数年…

Dockerfile进行详细的介绍

Dockerfile 是用于定义 Docker 镜像构建过程的文本文件&#xff0c;它包含了一系列的命令和指令&#xff0c;这些命令告诉 Docker 如何构建一个镜像。Docker 镜像是应用程序和所有依赖项的打包&#xff0c;其中包括操作系统环境、安装的依赖包以及应用本身。 通过 Dockerfile&…

leetcode 面试经典 150 题:同构字符串

链接同构字符串题序号205题型字符串解法哈希表难度简单熟练度✅✅✅✅ 题目 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符&#…

软件需求规格是什么

软件需求规格&#xff08;Software Requirements Specification&#xff0c;简称SRS&#xff09;是软件开发过程中一个非常重要的文档&#xff0c;它详细描述了软件产品的功能和性能要求&#xff0c;以及为了满足这些要求而必须遵守的约束条件。软件需求规格为开发团队提供了一…