Mysql常见的数据表类型

明细表

明细表/详情表比较常用。一般会有一张带有 id 的主表,比如 tt_order,主键为 id,字段比较少。

明细表/详情表 tt_order_detail ,存放了大量的明细字段,有一个字段 order_id,通过这个字段去关联主表。

关系表

比如现在有一张用户表 tt_user,还有一张角色表 tt_role,这时可以设计一张 用户角色关系表 tt_user_role。

常见的关系有一对一,一对多,多对多。

CREATE TABLE `tt_user_role` (
  `id` int NOT NULL COMMENT '主键',
  `user_id` varchar(20) NOT NULL DEFAULT '' COMMENT '用户id',
  `role_id` varchar(20) NOT NULL DEFAULT '' COMMENT '角色id',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uni_user_role` (`user_id`,`role_id`),
  KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4  COMMENT='用户角色关系表'

记录表

CREATE TABLE `tt_record` (
  `id` int NOT NULL COMMENT '主键',
  `handle_user_id` varchar(20) NOT NULL DEFAULT '' COMMENT '处理人工号',
  `handle_user_name` varchar(128) DEFAULT '' COMMENT '处理人姓名',
  `handle_node` varchar(50) DEFAULT '' COMMENT '处理节点',
  `handle_note` varchar(256) DEFAULT '' COMMENT '处理详情',
  `handle_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间',
  PRIMARY KEY (`id`),
  KEY `idx_handle_user_id` (`handle_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4  COMMENT='记录表'

关键的业务逻辑,加上一个record 轨迹记录。出了问题,方便溯源。

历史表

历史表,跟主表的数据表结构一样。

主表只保存最近一个月的数据,其他的数据放到历史表。也就是数据"冷热分离"

数据量不大时,可以通过 UNION ALL 联合主表和历史表进行查询。

配置表

CREATE TABLE `tb_system_config` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
  `config_key` varchar(128) NOT NULL COMMENT '配置的KEY',
  `config_value` varchar(2000) DEFAULT '' COMMENT '配置的值',
  `description` varchar(100) DEFAULT '' COMMENT '描述',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `is_delete` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除:0-否;1-是',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_config_key` (`config_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4  COMMENT='系统配置表';

通过配置表,灵活的配置。

某些经常变更的参数值,加上配置。比如 订单30分钟后失效,需求变更,要改为15分钟,那么直接改配置表就行了,不用发版。

某些关键的容易出错的逻辑,加上一个开关,也就是 config_value为 0或1,为1表示打开,为0表示关掉。

不需要的逻辑,可以及时用开关关掉。

开发环境,逻辑复杂,造数据麻烦时,也可以用开关,把前置条件关掉,方便验证数据。

posted on   乐之者v  阅读(112)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2017-02-28 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示