标签:function NULL DEFAULT 数据库 page KEY 权限 id 结构设计
1、权限控制功能,其核心思路是控制某“用户”所属“角色”可以访问哪些“角色”,可以访问哪些“功能”。
在前后端分离架构模式下,功能实现是基于“接口”进行的,所以“功能”和“页面”会分别和“接口”所关联。
2、所以数据库中,至少有以上5张表,分别为:用户信息表、角色表、页面信息表,接口信息表,功能信息表,并且分别建立彼此之间的关联表
创建表结构sql语句如下:
CREATE TABLE `api_info` (
`api_id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`url` varchar(255) DEFAULT NULL,
PRIMARY KEY (`api_id`),
CONSTRAINT `api_info_ibfk_1` FOREIGN KEY (`api_id`) REFERENCES `function_api_relation` (`api_id`),
CONSTRAINT `api_info_ibfk_2` FOREIGN KEY (`api_id`) REFERENCES `page_api_relation` (`api_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `function_api_relation` (
`id` int(11) NOT NULL,
`function_id` int(11) DEFAULT NULL,
`api_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `api_id` (`api_id`),
KEY `function_id` (`function_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `function_info` (
`function_id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`function_id`),
CONSTRAINT `function_info_ibfk_1` FOREIGN KEY (`function_id`) REFERENCES `function_api_relation` (`function_id`),
CONSTRAINT `function_info_ibfk_2` FOREIGN KEY (`function_id`) REFERENCES `function_page_relation` (`function_id`),
CONSTRAINT `function_info_ibfk_3` FOREIGN KEY (`function_id`) REFERENCES `function_rule_relation` (`function_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `function_page_relation` (
`id` int(11) DEFAULT NULL,
`function_id` int(11) DEFAULT NULL,
`page_id` int(11) DEFAULT NULL,
KEY `function_id` (`function_id`),
KEY `page_id` (`page_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `function_rule_relation` (
`id` int(11) NOT NULL,
`function_id` int(11) DEFAULT NULL,
`rule_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `function_id` (`function_id`),
KEY `rule_id` (`rule_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `page_api_relation` (
`id` int(11) NOT NULL,
`page_id` int(11) DEFAULT NULL,
`api_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `page_id` (`page_id`),
KEY `api_id` (`api_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `page_info` (
`page_id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`uri` varchar(255) DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL,
`level` varchar(255) DEFAULT NULL,
KEY `page_id` (`page_id`),
CONSTRAINT `page_info_ibfk_1` FOREIGN KEY (`page_id`) REFERENCES `page_rule_relation` (`page_id`),
CONSTRAINT `page_info_ibfk_2` FOREIGN KEY (`page_id`) REFERENCES `page_api_relation` (`page_id`),
CONSTRAINT `page_info_ibfk_3` FOREIGN KEY (`page_id`) REFERENCES `function_page_relation` (`page_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `page_rule_relation` (
`id` int(11) NOT NULL,
`page_id` int(11) DEFAULT NULL,
`rule_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `page_id` (`page_id`),
KEY `rule_id` (`rule_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `rule_info` (
`rule_id` int(11) NOT NULL COMMENT '角色id',
`name` varchar(100) DEFAULT NULL,
`status` varchar(10) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`rule_id`),
CONSTRAINT `rule_info_ibfk_1` FOREIGN KEY (`rule_id`) REFERENCES `user_rule_relation` (`rule_id`),
CONSTRAINT `rule_info_ibfk_2` FOREIGN KEY (`rule_id`) REFERENCES `page_rule_relation` (`rule_id`),
CONSTRAINT `rule_info_ibfk_3` FOREIGN KEY (`rule_id`) REFERENCES `function_rule_relation` (`rule_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `user_info` (
`user_id` int(11) NOT NULL COMMENT '用户id',
`username` varchar(100) DEFAULT NULL COMMENT '用户名',
`password` varchar(200) DEFAULT NULL COMMENT '密码',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`user_id`),
CONSTRAINT `user_info_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user_rule_relation` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';
CREATE TABLE `user_rule_relation` (
`id` int(11) NOT NULL,
`user_id` int(11) DEFAULT NULL,
`rule_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `rule_id` (`rule_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
标签:function,NULL,DEFAULT,数据库,page,KEY,权限,id,结构设计
来源: https://blog.csdn.net/rengn/article/details/119001239
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。