数据库设计规范

文章提出了数据库设计的一系列规范,包括库名、表结构、字段设计、列数据类型和索引设计的详细规则。例如,库名和表名应限制长度,必须指定字符集,表名应带有业务相关的前缀。字段设计推荐使用驼峰命名,避免NULL值,经常需要查询的字段应设置索引。此外,还强调了索引的创建和管理,如主键和唯一键的命名约定,以及优化索引策略。
摘要由CSDN通过智能技术生成

一路走来,数据库命名总是随心所欲,是时候规范一下啦~

设计规范

一、库名
1、【强制】库名必须在32个字节以内
2、【强制】创建库时必须指定字符集

二、表结构
1、【强制】表名要求32字符以内,与模块名强相关,为避免过长采用模块缩写作为前缀,如教师模块采用“teach_”做前缀。
2、【强制】必须指定字符集。
3、【强制】必须有comment注释。
4、【强制】中间表用于保留中间结果集,名称必须以tmp_开头
备份表用于备份,以bak_开头。
5、【强制】对于数据量比较大的表进行alter_table,需要在业务低峰期运行,因为alter_table会产生表锁,影响写入。
6、【建议】核心表要带入create_time和update_time方便后期查问题。
7、【建议】表中字段都使用not null,业务可以根据需要定义默认值。数据库中不插入null。因为使用null会占用额外空间,数据迁移的时候还容易出错,聚合函数计算结果也会因此出错。
8、【建议】反范式设计:把经常需要join查询的字段加上索引。

三、字段设计
1、【强制】驼峰设计。
2、【建议】每个表最好都有一个create_time。
3、【建议】可能会使用索引的字段,就要设置字段属性是not null,可以根据业务设置默认值。
4、【建议】可枚举的类型,建议用1、2、3…来表示,default=99表示其他
备份表用于备份,以bak_开头。
5、【建议】表示是否类型的使用is_动词。

四、列数据类型
1、【建议】业务中选择比较少的状态、类型推荐使用tinyint类型节省存储空间。
2、【建议】boolean类型属性命名规范
boolean类型不要加is,否则部分框架解析会引起序列化错误。
根据阿里巴巴团队的中文手册,固定boolean类型的类属性和数据表字段都统一使用flag结尾。如online_flag
3、【建议】文本数据尽量用varchar,小数类型用decimal

五、索引设计
1、[强制]主键的名称以”“开头,唯一键以"uix"开头,普通素引以idx开头,一律使用小写格式,字段名作为后缀。
2、[强制]innoDB和MyISAM存储引擎表,索引美型必须为BTREE;MEMORY表可以根据需要选择HASH或省BTREE类型索引。
3、[建议] 单个表上的豪引个数不能超过5个。
4、[建议] 在理立索引时,多考建立联合索引,并把区分度最高的字段放在最前面
5、[建议]在多表ioin的SQL里,保证被驱动表的连接列上有索引,这样执行效率最高。
6、[建议] 建表或加索引时,保证表里互相不存在冗余索引,对于MySQL来说,如果表里已经存在key(a,b),则key(a)为冗余索引,需要删除。

参考文献
https://www.bilibili.com/video/BV1HJ411G7vh/?spm_id_from=333.880.my_history.page.click

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值