ER Diagram of Roles, Permissions, and Routers

Added on: May 14, 2025
User Prompt

我需要生成一份ER图,以下是表结构
CREATE TABLE `roles` (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(64) NOT NULL UNIQUE COMMENT '角色名',
description TEXT COMMENT '角色说明',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE `role_permissions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`role_id` tinyint NOT NULL COMMENT '对应roles表的id字段',
`permission_id` int(11) NOT NULL COMMENT '关联permissions表',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_role` (`role`),
KEY `idx_permission` (`permission_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色权限关联表';

CREATE TABLE `user_roles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`role_id` tinyint NOT NULL COMMENT 'role表的id字段',
`user_id` int(11) NOT NULL COMMENT '关联user表',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY uniq_user_role (user_id, role_id),
KEY `idx_role_id` (`role_id`),
KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';

CREATE TABLE `permissions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL COMMENT '权限名称(如:用户管理)',
`code` varchar(255) NOT NULL COMMENT '权限唯一标识(如:user:manage)',
`description` VARCHAR(255) DEFAULT '' COMMENT '权限描述',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `code_UNIQUE` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统权限表';

CREATE TABLE routers (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`method` VARCHAR(255) NOT NULL COMMENT '请求方法path',
type VARCHAR(16) NOT NULL COMMENT 'http or socket',
description VARCHAR(255) DEFAULT '' COMMENT '路由描述',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE(method, type)
);

CREATE TABLE router_permissions (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`permission_id` INT NOT NULL,
`router_id` INT NOT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE(permission_id, router_id)
);
其中user和role是多对多关系,role和Permission也是多对多,Permission和router也是多对多