数据库表命名规范:
1.表名的命名可读性要高,让人一眼就知道是什么意思
2.必须使用字母小写或数字,禁止用数字开头,禁止使用拼音,不使用缩写
3.主键索引名为pk_字段,唯一索引名为uk_字段,普通索引idx_字段
4.尽可能选择存储空间小的字段类型,像数字类型的,从tinyint、smallint、int、bigint,从左往右选
5.小数类型,选择decimal,禁止使用float和double
=========================================================================
6.如果存储的字符串长度几乎相等,使用char
1)字符和字节的区别:
varchar和char类型是字符长度,其他类型都表示字节长度
比如char(10)表示字符长度是10,bigint(4)表示4个字节长度,但因为bigint的实际长度是8个字节,所以bigint(4)的实际长度就是8个字节
2)设计表怎么定义字段的长度:
一个用户名的字段为(5~20字符):字符的长度一般设置为2的幂,所以就是username varchar(32)
1、2、4、8、16、32、64、128…………
7.varchar长度不要超5000
8.如果存储的值太大,建议字段类型修改为text,同时抽出单独一张表,用主键与之对应
1)主键不要与业务逻辑有所关联,像身份证,不要用来做主键,推荐使用毫无意义不重复的数字,比如自增的主键
9.在同一张表中,所有varchar字段长度加起来,不能超过65535,如果超过,请使用text/longtext
=========================================================================
10.优先考虑逻辑删除,而不是物理删除
1)物理删除:把数据从硬盘删除
2)逻辑删除:给数据添加一个字段,比如is_deleted,标记该数据已经逻辑删除
例如:删除user_id='1'的信息
物理:delete from t_user user_id='1'
逻辑:update t_user set is_deleted=1 where user_id='1'
11.每个表都需要添加几个通用字段
如主键、create_time、modifed_time……
id:主键,每个表必须有一个主键,必须
create_time:创建时间,必须
modifed_time:修改时间,必须,更新记录时,需要更新它
version:数据记录的版本号,用于乐观锁,非必须
remark:数据的记录备注,非必须
modified_by:修改人,非必须
creator:创建人,非必须
12.表字段:
不宜超过20个字段,字段过多会导致查询效率降低,如果业务需要很多字段,可以把一张大表拆分成多张小表,主键相同即可,或者,拆分为两张表,一张用于条件查询,一张作为详细内容表
13.尽可能使用not null定义字段
1.not null 可以防止出现空指针
2.null值也占用空间,会导致运算更为复杂,难优化SQL
3.null值可能导致索引失效
1)表数据量>150行,没必要加索引
4.如果把字段设置为空字符串或常量值没什么不同,且不会影响应用逻辑,那就把字段设为 not null
14.表约束
原文是B站的CoderYang作者,这是本人的听课笔记。喜欢的点点赞,你的喜欢是我创作的动力