抖音项目——数据库设计| 青训营笔记

207 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第12天

前言

由于开发前数据库设计的比较仓促,导致后续在开发过程中一些字段设计出现了问题,甚至某个表都出现了一些不可调和的问题。例如,在Video表下的update_time(更新时间)从来都没用过,占用了资源等等诸多问题。


无奈之下,我们只能重新设计整个数据库。接下来我会讲解一下数据库设计的理念,我们在建库建表时需要严格地遵守,这次还可以重新来过,下一次的结果很可能就无法挽回,这是我们谁都无法预料的事情,我们要把风险掌握在可控范围内。

数据库设计规范

数据库设计规范主要包括命名约定数据库表基本规范、字段规范。我这里主要对前两种规范进行讲解。

v2-6e476f31be3d4c7cf795f6bb8b70917e_r.jpg

1. 命名约定

  • 禁止对数据库名称、表名称和字段名称使用 [MySQL] 保留字。
  • 库名称、表名称和字段名称使用通用英语而不是编码,并且名称与业务和产品线相关联。对于汉语词汇的英文翻译,可以参考常用术语来选择对应的英文词汇。
  • 库名、表名、字段名必须为名词的复数形式,并使用小写字母,多个名词加下划线分隔单词。MySQL有一个配置参数lower_case_table_names
  • lower_case_table_names=1,即数据库表名以小写形式存储,不区分大小写。
  • lower_case_table_names=0,则数据库表名存储为实际情况,大小写敏感。
  • lower_case_table_names=2,则按原样存储,但以小写形式进行比较。
  • 如果大小写和案例混合,则可能共存多个表,例如ABC,BAC,CAB等,这很容易导致混淆。

2. 库表基础规范

  1. 表字符集使用 UTF8MB4 字符集,校验字符集使用 utf8mb4_general_ci。
  2. 所有表都需要注释,除主键外的字段都需要注释
  3. 使用 InnoDB 存储引擎。
  4. 控制单个表中的字段数
  5. 默认存储引擎从 MySQL 5.5 版本开始为 InnoDB,从 5.7 版本开始放弃 MyISAM 用于系统表。
  6. 类状态类型应注明主值的含义,如“0-离线,1-在线”

R-C.jpg

总结

我们设计表结构以满足项目的需求。在我们完成要求的同时,我们应该合乎逻辑并减少冗余。