乐趣区

你能说说你理解的数据库规范吗?

上一篇简单的说了下,自己公司的接口规范和上线规范,这次说下关于数据库方面的规范,希望能够帮助到大家。

1、首先是工具,我们用的是 Mysql 数据库,工具是 Workbench,这个工具是专门为 Mysql 设计的数据库建模工具,你可以用它进行设计和创建新的数据库图示,在 windows 上面我们大多用的是 PowerDesiger,在 mac 上用 workbench 目前来看还是挺好用的,无论是建立数据库文档,ER 图,数据库的迁移都还是很贴心的。
2、数据库字符集 UTF-8,统一字符集,也就避免了麻烦的乱码转码问题,UTF- 8 几乎是好多工具的通用码,特殊的列使用扩展字符集。
3、每个文件都有一个 script 文件,这个 script 文件里面有的应该是这个项目的数据库设计 ER 图,还有该项目数据库初始的 sql 语句,任何有关于该项目的数据库更改,都应该首先更改该 script 文件,并且标注日期,确保该 script 文件是正确的据库设计,因为我们在上线的时候要给运维上传的 sql 语句就是从这个 ER 图导出来的。
4、相关联的业务数据表的名字要使用相同的前缀,确保一个业务的多个表在大量表中处于相邻位置。这点觉得还是很贴心的。
5、数据经常变化的放到一张表;数据不变化的放到一张表;数据不经常变化的一张表。
6、存储引擎必须使用 InnoDB,InnoDB 支持事务、行级锁、并发性能更好。
7、不可使用存储过程、视图、触发器,高并发大数据的互联网业务,如果并发量太大,使用这些会把数据库拖垮,把业务逻辑放到服务层具备更好的扩展性,需求有所变化的时候也更好修改,而不用去修改繁琐的 sql 语句,并且能够轻易简单的 实现增加机器就增加性能,数据库的专长在于存储和索引。专业的事情就让专业的人来做。
8、禁止使用 Blob 和 Clob 类型的字段,可以使用单独的库、单独的表来存储大文本的数据,这样做的话,当运维想要处理、备份数据的时候,这样的表可以针对性的优化,不用在意一些别的因素。
9、表名使用下划线分隔,id 主键统一命名为 id BIGINT(20),数据写入时可以提高插入性能。
10、每个表中必须包含字段 createTime 字段,创建时间,确保未来默认排序。
11、外键禁止关联。外键会导致表和表之间的耦合,update 和 delete 都会涉及到相关联的表,十分影响 sql 性能,还有可能会造成死锁。
12、保存时间相关的数据,要使用时间戳的格式,因为在未来可能会涉及到时区的问题,而时间戳可以完全避免该问题;保存货币相关的数据,要保存最小货币的数量,避免有小数点,因为可能会引起数据精度问题,导致数据不准确。
13、索引命名定义规则,其中一定要包括表名 + 列名,来确保该索引在整个数据库中是唯一的。
14、建立组合索引的同时要把区分度较高的放在前面,这样能够更加有效的过滤数据。
以上都是自己开发过程中遵守的,并且感觉很高效的数据库规范,简单整理下,沉淀下来,希望能帮助到这个公众号的读者。
这样的分享会一直持续,你的关注,转发、点赞和收藏是对我最大的支持,感谢。
关注公众号,最新文章会先在那里出现哦

退出移动版