如何设计一个灵活的 MySQL 数据表,应对灵活多变的需求

作者/分享人:李岩
向 Ta 提问
某教育公司架构师,从零开始搭建起整个技术部门。前锤子科技工程师,擅长数据库、支付系统、直播系统、商城等,主导多个项目架构设计,在轻量化、模块化、多复用等方向有丰富实战和经验。

我曾设计过一个活动报名数据表,每次发布的活动都不一样,需要的字段也不同。按照平常的业务设计理念,需要每一次活动设计一个数据表。还要对应的增删改查及逻辑方法。

如何以不变应万变解决此类问题,解放生产力呢?我采用数据容器理念设计了一个通用数据表。直到现在这套系统还在稳健运行。经历了多次活动考验。无论业务和需求怎么改,依然不动如山。

本场 Chat 您将学到以下内容:

  1. 如何设计可复用的数据表;
  2. 如何应对多变的字段;
  3. 数据容器理念如何简化业务代码量;
  4. 设计通用数据表,一表多用,代码复用。
已有769人预订
预订达标
文章出炉
     
18.11.28
18.12.13
本场 Chat 文章已出炉,购买后即可阅读文章并获得一张李岩的读者圈Pass
请务必添加GitChat服务号以查看活动进度及获取活动通知。
查看文章评论/提问
jcc@octobercms
悬悬而望,万念俱灰
冯春龙
对于这篇学习笔记,免费更合理。
blank
根本行不通,难道写代码时还要一份手册来对应那个字段是什么意思……
王横: 直接做映射就好了,代码里还是真实的名字
李岩: 对象映射,说明文档,也可以在数据中填上字段含义。tpye=xxx内容的含义。就当注释了。
Jesse
1.9我都觉得浪费了!!!
彭毅
我们公司也有系统这么设计的,当初还以为是为了做混淆呢,现在是明白了
hitherto
在一个表中存放多种类型的时候怎么确定每个字段的意义呢?还有个缺点就是这种对数字储存的话用sql语句无法求和
李岩
团队开发的场景,可能不允许你这样做(全面使用),但可以借鉴这种思想。预留字段,增加type字段。来增加部分灵活性。能帮你少改一次代码,就算成功啦。
郝伟
一楼
杨柳
花了两块钱就让看这种字段名称定义吗,太坑了吧,那且不是下一个接手我工作的人会骂我十八代,只有自己知道这个字段是干嘛的,过三个月试试看你还记得住吗?作者你在锤子的时候,在教育机构的时候就是这样给教你的下级给你学生吗,
李岩: 举个例子,公司要做一个圣诞节促销活动,涉及报名,支付,查看商品发货状态,抽奖。就当天用一下。你要用多久能写完这些功能呢?如果用我这种设计方法。不到半天就好了,因为所有的数据都存到一张表,也不怕它业务临时改。这种方法有它的最佳适用场景。并不一定适用你的场景
马丁之帜
更好的方法请参照58的数据库设计,我本以为找到比58更好的。。。
郝伟: 58那篇文章谁写的
谈德茂: 58的数据库设计在哪儿呢,可否分享一下哦
danzi🌴
完全不考虑做后续统计和数据的人。而且维护成本太高,换一个直接歇菜。你描述的业务场景请考虑用存储过程实现,前台不需要修改什么
空空如也
1 用你这个还不如用nosql 2 设计字段类型本来就是为了提高效率 3 根本不知道每个类型对应字段是什么意思,看了要骂人 4 做统计等基本操作无法实现 5 我要这样设计,估计得被开 6 可以申请退款吗
吴涵: 和我的想法一样,不就是key-value吗
一言难尽
桃子
对于数据量大的情况不太好
🍵农鲜哥🍵
失望透顶
kingkm
太坑爹
老本
呵呵 .坑
寒俊
这不就是纵表么,大哥。这还值得哪来骗钱。
李岩: 横表+纵表
小九
无语,这还值1.99,真是不知道哪里来的自信
昨日
发现不能在这地方买文章了,还首页推荐。真是服了,毫无借鉴价值,个人维护还行,别人维护的时候必须骂人
你可能还喜欢
高并发、低 RT 的风控系统架构及技术架构的实现
火币集团研发中心
程序员副业赚钱的 8 种模式
安晓辉
全栈开发入门实战:后台管理系统
鲁鹏
每一个开发人员都应该懂的 UML 规范
码匠笔记
不写代码:程序员最重要的技能 [英文版]
Chat 三人行
“花式吊打”系列之逻辑回归讲透透
天马行空
微信扫描登录
关注提示×
扫码关注公众号,获得 Chat 最新进展通知!
添加小助手微信×