数据库是网站里最不显眼、也最难改的部分。前期图省事把产品信息塞进一张大表,等业务要加"多规格""多语言""多仓库"的时候,改动会牵连整个后台。
先想清楚有哪些内容类型
企业站的数据结构通常不复杂,但类型要分清。常见的几种:
- 文章或新闻:标题、正文、封面、发布时间、分类
- 产品:名称、分类、参数、图片集、说明书下载
- 案例:客户、行业、问题描述、解决过程、成果数据
- 单页面:关于我们、联系方式这类结构固定的内容
- 表单线索:提交内容、来源页面、时间、跟进状态
把它们分开建表,而不是混在一起。混在一起的后果是:想给产品加个"型号"字段,结果所有类型都被迫带上这个字段。
字段规划的三个原则
- 能拆就拆:地址拆成省市区,姓名和电话分开存,以后做筛选和统计会轻松很多
- 预留扩展位:加一两个备用的扩展字段,或者用单独的元数据表,避免频繁改表结构
- 类型要选对:价格用小数别用字符串,时间用日期类型别存成文本,否则排序和筛选都会出错
产品参数的难题
企业站最麻烦的是产品:不同品类参数完全不同,用固定字段根本装不下。三种常见处理方式:
- 固定字段:适合品类单一、参数稳定的情况,后台最好用,但不够灵活
- 键值对扩展表:参数名和参数值分开存,灵活但后台编辑体验一般
- JSON 字段存储:现代数据库都支持,兼顾灵活与简洁,缺点是不方便按参数筛选
多数企业站用"固定字段加 JSON 扩展"的组合最实用:常用参数做成固定字段便于筛选,其余的塞进扩展里。
多语言怎么存
计划做多语言的话,一开始就要设计好,后加的代价很大。两种主流做法:
- 按语言分行:同一内容的不同语言各存一条,用语言代码区分,结构清晰但要注意关联
- 翻译表:主表存通用信息,另建一张翻译表存各语言的文本,适合字段多的情况
别忘了有些字段是不需要翻译的:图片、日期、数字、某些代码字段,别一股脑全做成多语言。
别忽略这些基础工作
几件容易被跳过但很重要的事:
- 建立索引:经常用来查询和排序的字段加上索引,数据量上万后差别明显
- 软删除:加一个删除标记而不是真删记录,误操作还能救回来
- 记录创建与更新时间:排查问题和做数据分析时非常有用
- 线索表存来源:记录从哪个页面、哪个渠道提交的,后期算转化全靠它
备份是底线
设置每日自动备份,保留至少七天,并且定期演练一次恢复流程。没验证过能恢复的备份,不能算备份。这条听起来老生常谈,但真出事的时候,它决定的是业务停摆一天还是一周。
数据库是网站的骨架,骨架长歪了,后面每加一块肉都要付出代价。
—— 一位接手过遗留系统的后端开发