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表示关掉。
不需要的逻辑,可以及时用开关关掉。
开发环境,逻辑复杂,造数据麻烦时,也可以用开关,把前置条件关掉,方便验证数据。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用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[]