前言
对于后端开发人员来说,访问数据库,是代码中必不可少的一个环节。
系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如: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 类型, float 和 double 可能会丟失精度
- 时间字段可以选择 timestamp 或 datetime 类型
主键
建议创建表时要创建 主键 并且主键要保证与业务无关,减少业务耦合方便扩展,单个数据库主键可设置为 自动增长,如果是 分布式 数据库中主键可以采用外部算法生成(比如:雪花算法)。
not null
建议定义字段时能定义成not nu1l就定义成not null,防止没有传值的时候数据还能保存成功,影响后续的使用。not null的字段需要给定默认值。
避免使用外键约束
使用外键有利于维持数据完整性和一致性,但是对于开发人员来说比较麻烦,每次删除或者修改的时候必须考虑外键约束,并且出现bug时追踪很麻烦。
冗余字段
建议合理使用冗余字段来提升查询速度,比如订单列表需要展示用户姓名,可以采用关联查询获取用户姓名,但是如果订单表和用户表数据量非常大,那么关联查询效率会比较低,可以在订单表中增加一个user_name的字段来提高查询效率。
标签:sys,建议,技巧,必备,数据库,单词,user,主键 From: https://www.cnblogs.com/zhaojinhui/p/18145247