概述
这次的数据库采用了MYSQL,设计了6张表,其实还应该再细分多两三个表出来的,如果再改的话很多表和后台的代码也都要跟着改,都是多表联动,耦合性很强,比较麻烦,因为也能正常运作,索性就没再改了。接下来细说这6张表。
数据库表
数据库的话可以根据自己的习惯命名,我是直接命名为“test”,而对应的6张表分别命名为:
test_user,test_activity,test_handle,test_position,test_power,testdepartment。
需要注意的是这里表的前缀都是“ test ”,如果你命名为其他的话,都要保持一致的前缀,这个前缀会在后面的后台接口配置中使用。
具体如下:
test_user:用户表,一对多,存放用户信息,包括其具有的权限,pid指的是position_id,代表的是用户的职位,其他的都有注释
1234567891011121314151617181920DROP TABLE IF EXISTS `test_user`;CREATE TABLE `test_user` (`user_id` int(11) NOT NULL AUTO_INCREMENT,`user_name` varchar(255) CHARACTER SET utf8 NOT NULL,`user_englishname` varchar(255) DEFAULT NULL,`user_openid` varchar(255) DEFAULT NULL COMMENT '微信的openid',`user_num` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '工号',`user_pid` int(11) NOT NULL COMMENT 'posision id,职位id',`user_powerid` int(11) NOT NULL COMMENT '权限id',`user_departmentid` int(11) NOT NULL COMMENT 'department部门id',`user_ischeck` int(11) NOT NULL DEFAULT '0' COMMENT '有无权限审核别人的活动',PRIMARY KEY (`user_id`),KEY `1` (`user_powerid`),KEY `2` (`user_pid`),KEY `3` (`user_departmentid`),KEY `user_name` (`user_name`),CONSTRAINT `1` FOREIGN KEY (`user_powerid`) REFERENCES `test_power` (`power_id`),CONSTRAINT `2` FOREIGN KEY (`user_pid`) REFERENCES `test_position` (`position_id`),CONSTRAINT `3` FOREIGN KEY (`user_departmentid`) REFERENCES `test_department` (`department_id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;test_activity:我把请假、出差申请都统称为(活动)acivity,用type来区分它们,time为活动的时长。申请通常都会有初审和终审,并且初审不能为空,终审可以为空。因为有些申请只需要一个人审核就可以了。
123456789101112131415161718192021222324SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for test_activity-- ----------------------------DROP TABLE IF EXISTS `test_activity`;CREATE TABLE `test_activity` (`activity_id` int(11) NOT NULL AUTO_INCREMENT,`activity_type` int(11) NOT NULL COMMENT 'type判断是请假还是出差。。。1或者2',`activity_openid` varchar(255) NOT NULL COMMENT 'userid用户id',`activity_st` datetime NOT NULL COMMENT '活动开始时间',`activity_et` datetime NOT NULL COMMENT '活动结束时间',`activity_createtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,`activity_address` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '出差地点',`activity_reson` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '活动事由',`activity_fristcheck_openid` varchar(255) NOT NULL COMMENT '审核人1的id(用户表)',`activity_secondcheck_openid` varchar(255) DEFAULT NULL COMMENT '审核人2 的id',`activity_fristcheck_result` int(11) NOT NULL DEFAULT '0' COMMENT '审核人1的审核结果,同意还是拒绝0或1',`activity_secondcheck_result` int(11) DEFAULT NULL COMMENT '审核人2的审核结果,同意还是拒绝1或是2',`activity_allresult` int(11) NOT NULL DEFAULT '1' COMMENT '活动是否完成,默认1为未完成,2为完成,3为拒绝该申请(无效)',`activity_time` float(11,0) NOT NULL,PRIMARY KEY (`activity_id`),KEY `activity_uid` (`activity_openid`)) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=latin1;test_handle:处理表,为审核人查询是否有向自己申请的活动,有的话就要去处理。这里需要注意,每当审核人处理完成后都会删除对应的数据,意思是处理完之后再查询,是查询不到的,因为已经处理完成。而申请人要查看自己的申请完成情况可以查询test_activity表
1234567891011121314SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for test_handle-- ----------------------------DROP TABLE IF EXISTS `test_handle`;CREATE TABLE `test_handle` (`handle_id` int(11) NOT NULL AUTO_INCREMENT,`handle_check_uid` varchar(255) NOT NULL COMMENT '审核人id',`handle_check_activityid` int(11) NOT NULL COMMENT '活动的id',`handle_one_or_two` int(11) NOT NULL COMMENT '是初审还是终审',PRIMARY KEY (`handle_id`),KEY `handle_check_uid` (`handle_check_uid`)) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=latin1;test_position:职位表:代表着用户什么职位,这里可以参照我的测试数据
123456789101112131415161718192021SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for test_position-- ----------------------------DROP TABLE IF EXISTS `test_position`;CREATE TABLE `test_position` (`position_id` int(11) NOT NULL AUTO_INCREMENT,`position_name` varchar(255) CHARACTER SET utf8 NOT NULL,PRIMARY KEY (`position_id`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;-- ------------------------------ Records of test_position-- ----------------------------INSERT INTO `test_position` VALUES ('1', '办事员');INSERT INTO `test_position` VALUES ('2', '专员');INSERT INTO `test_position` VALUES ('3', '中专');INSERT INTO `test_position` VALUES ('4', '副经理');INSERT INTO `test_position` VALUES ('5', '经理');INSERT INTO `test_position` VALUES ('6', '总经理');test_power:权限表,,管理员有添加用户(新员工),删除用户(员工离职),修改员工权限的能力。这个不多做解释
1234567891011121314151617SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for test_power-- ----------------------------DROP TABLE IF EXISTS `test_power`;CREATE TABLE `test_power` (`power_id` int(11) NOT NULL AUTO_INCREMENT,`power_name` varchar(255) NOT NULL COMMENT '权限名称',PRIMARY KEY (`power_id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;-- ------------------------------ Records of test_power-- ----------------------------INSERT INTO `test_power` VALUES ('1', 'admin');INSERT INTO `test_power` VALUES ('2', 'user');test_department:部门
123456789101112131415161718SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for test_department-- ----------------------------DROP TABLE IF EXISTS `test_department`;CREATE TABLE `test_department` (`department_id` int(11) NOT NULL AUTO_INCREMENT,`department_name` char(255) NOT NULL,PRIMARY KEY (`department_id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;-- ------------------------------ Records of test_department-- ----------------------------INSERT INTO `test_department` VALUES ('1', '人事组');INSERT INTO `test_department` VALUES ('2', '电商组');INSERT INTO `test_department` VALUES ('3', 'IT组');