Mysql常见的数据表类型

文章介绍了数据库设计中的几种常见表类型,如明细表用于存储详细信息,关系表用于建立多对一或多对多关联,记录表用于记录操作轨迹,历史表用于冷热数据分离,而配置表则提供灵活的系统配置选项。这些设计有助于优化查询效率和维护数据完整性。
摘要由CSDN通过智能技术生成

明细表

明细表/详情表比较常用。一般会有一张带有 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表示关掉。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值