数据库设计的必备小技巧

前言

对于后端开发人员来说,访问数据库,是代码中必不可少的一个环节。

系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等。

后端开发的日常工作,需要不断的建库和建表,来满足业务需求。

这里就跟大家分享一下数据库设计的一些小技巧!

见名知意

在数据库设计中,一个好的表名、字段名、索引名是非常重要的,不仅降低维护成本,还让后期的维护人员方便理解,好的名字要言简意赅、见名知意。

比如用户表:t_user:user_name,user_phone,user_card,...

表名

建议在创建表名的时候加上系统业务前缀。

比如:系统服务(sys)中,创建表加上 sys_ 前缀:sys_user,sys_role,order_pay,order_detail,...

大小写

建议命名尽量都用小写字母,小写字母阅读起来容易理解。

分隔符

一个字段名为了能达到见名知意效果,会包含多个单词,建议每个单词间使用_作为分隔符。

单词间没有分隔,或者单词间用驼峰标识,或者单词间用空格分隔,或者单词间用@分隔,这几种方式都不太建议。

通用字段统一管理

建议通用字段统一管理,比如表中的创建时间(createtime)、修改时间(update_time)、状态(status)等。
有的表使用flag表示状态、有的表status表示状态维护起来会有歧义。可以将通用字段抽象为父类。其他类通过继承父类实现字段统理解、管理。

字段类型

  • 建议在满足业务需求的情况下,选择占用存储空间小的字段类型
  • 字符串长度固定或者差别不大使用 char 类型,字符串差别较大选择 varchar 类型
  • 是否字段可以选择 bit 类型
  • 主键可以选择 bigint 类型
  • 金额字段可以选择 decimal 类型, floatdouble 可能会丟失精度
  • 时间字段可以选择 timestampdatetime 类型

主键

建议创建表时要创建 主键 并且主键要保证与业务无关,减少业务耦合方便扩展,单个数据库主键可设置为 自动增长,如果是 分布式 数据库中主键可以采用外部算法生成(比如:雪花算法)。

not null

建议定义字段时能定义成not nu1l就定义成not null,防止没有传值的时候数据还能保存成功,影响后续的使用。not null的字段需要给定默认值。

避免使用外键约束

使用外键有利于维持数据完整性和一致性,但是对于开发人员来说比较麻烦,每次删除或者修改的时候必须考虑外键约束,并且出现bug时追踪很麻烦。

冗余字段

建议合理使用冗余字段来提升查询速度,比如订单列表需要展示用户姓名,可以采用关联查询获取用户姓名,但是如果订单表和用户表数据量非常大,那么关联查询效率会比较低,可以在订单表中增加一个user_name的字段来提高查询效率。

查看更多

posted @ 2024-04-19 10:25  司码易  阅读(12)  评论(0编辑  收藏  举报