自己构思的一些,Mysql数据库项目中常用的数据表结构
版本:mysql5.5版本及以上
一、特定数据的表构思方法【特定的数据,同时需要记录操作的】
以用户表为例,用户修改头像、昵称等操作为记录需求的构思。
主表:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nickname` varchar(50) DEFAULT NULL COMMENT '昵称',
`password` varchar(50) DEFAULT NULL COMMENT 'md5加密密文',
`phone` varchar(11) DEFAULT NULL COMMENT '手机号',
`avatar` varchar(500) DEFAULT NULL COMMENT '头像',
`age` int(11) DEFAULT NULL COMMENT '年龄',
`sex` tinyint(2) NOT NULL DEFAULT '1' COMMENT '1男 2女 0保密',
`login_at` int(11) DEFAULT NULL COMMENT '最后一次登录时间戳',
`created_at` int(11) DEFAULT NULL COMMENT '创建日期的时间戳',
`status` tinyint(2) NOT NULL DEFAULT '1' COMMENT '1正常 2封禁',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户表';
附属表:
1.用户数据修改记录表
DROP TABLE IF EXISTS `user_update`;
CREATE TABLE `user_update` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL COMMENT '操作名称',
`type` tinyint(2) NOT NULL DEFAULT '1' COMMENT '操作类型 1头像 2昵称 3手机 4性别',
`old_value` varchar(255) DEFAULT NULL COMMENT '旧值',
`now_value` varchar(255) DEFAULT NULL COMMENT '修改以后的值',
`created_at` int(11) DEFAULT NULL COMMENT '修改时间',
`uid` int(11) DEFAULT NULL COMMENT '用户id',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户修改记录表';
2.用户操作数据记录表
DROP TABLE IF EXISTS `user_log`;
CREATE TABLE `user_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL COMMENT '日志备注',
`url` varchar(255) DEFAULT NULL COMMENT '操作路径',
`ip` varchar(255) DEFAULT NULL COMMENT 'ip地址',
`info` varchar(255) DEFAULT NULL COMMENT '请求结果:成果或者失败',
`date` int(11) DEFAULT NULL COMMENT '请求的日期',
`uid` int(11) DEFAULT NULL COMMENT '用户id',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户操作数据记录表';
注:操作数据记录表可以合用户数据修改记录表合并,如下结构。
DROP TABLE IF EXISTS `user_do`;
CREATE TABLE `user_do` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL COMMENT '操作名称',
`type` tinyint(2) NOT NULL DEFAULT '1' COMMENT '操作类型 1头像 2昵称 3手机 4性别 5.登录 6.退出 7.发表文章',
`old_value` varchar(255) DEFAULT NULL COMMENT '旧值',
`now_value` varchar(255) DEFAULT NULL COMMENT '修改以后的值',
`created_at` int(11) DEFAULT NULL COMMENT '操作时间',
`uid` int(11) DEFAULT NULL COMMENT '用户id',
`ip` varchar(255) DEFAULT NULL COMMENT 'IP地址',
`url` varchar(255) DEFAULT NULL COMMENT '操作路径',
`info` varchar(255) DEFAULT NULL COMMENT '操作结果:成功或者失败以及其他',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户更新日志';
使用说明:
1.查询,通过uid进关联,查询时调用uid即可。
2.存储,每个操作处写上联动增加,修改后即可存入参数。
结构适合做修改完成数据后又可以还原的功能需求。
二、通用表结构构思 【任何内容数据,同时需记录操作的】
无参数合特定情况,只存储特定数据类型,通过数据类型和关联id进行查询和修改的需求。
主表:
DROP TABLE IF EXISTS `data`;
CREATE TABLE `data` (
`data_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL COMMENT '数据标识名称',
`value` text COMMENT '数据的内容值,json,xml,文本,数字等多种格式',
`type` tinyint(2) NOT NULL DEFAULT '1' COMMENT '数据类型:1json 2xml 3文本 4数字 依此类推 结合后端逻辑进行数据的处理',
`author_id` int(11) DEFAULT NULL COMMENT '关联id作者id',
`created_at` datetime DEFAULT NULL COMMENT '创建日期',
`update_at` datetime DEFAULT NULL COMMENT '修改日期',
PRIMARY KEY (`data_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
记录表:
DROP TABLE IF EXISTS `datalog`;
CREATE TABLE `datalog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`now_value` text COMMENT '数据标识名称',
`old_value` text COMMENT '数据的内容值,json,xml,文本,数字等多种格式',
`type` tinyint(2) NOT NULL DEFAULT '1' COMMENT '数据类型:1json 2xml 3文本 4数字 依此类推 结合后端逻辑进行数据的处理',
`data_id` int(11) DEFAULT NULL COMMENT '关联id',
`created_at` datetime DEFAULT NULL COMMENT '创建日期',
`ip` varchar(255) DEFAULT NULL COMMENT 'ip地址',
`url` varchar(255) DEFAULT NULL COMMENT '操作路径'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
使用说明:
1.适合需要把多种不同数据存在一张表的需求。
2.适合需要回源和复原操作功能的需求。
注:结合自己的实际需求选用,未必这个方案就适合你。