自己构思的一些,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.适合需要回源和复原操作功能的需求。

注:结合自己的实际需求选用,未必这个方案就适合你。