Mysql数据库设计表准则

之前总是盲目设计数据库,今天总算抽空,系统性得学习了一下数据库设计的相关准则
一、命名规范

二、选择合适的数据类型
1、尽可能选择存储空间小的字段 ,如数字类型的 tinyint<int<bigint
2、小数类型比如金额,选择Decimal
3、varchar存可变长度字符串
4、如果存储值比较大,建议字段修改为text,同时抽出一张表,用主键与之对应。

三、主键设计要合理
主键设计最好不要与业务逻辑有关联,使用无意义独立不重复的id即可。

四、选择合适的字段长度
先引入一个问题,数据库字段长度是字符长度还是字节长呢?
答:在mysql中,varchar和char是字符长度,其他类型都是字节长度。比如char(10)代表字符长度10.
在设计表的时候,需要充分考虑字段长度,建议设置为2的幂

五、优先考虑逻辑删除,而不是物理删除
物理删除:把数据从硬盘中删除。
逻辑删除:给数据添加一个标识字段,如is_deleted,表机数据是否被删除。
物理删除好处:释放内存空间
逻辑删除好处:
1、恢复数据方便。
2、物理删除会使自增主键不再连续。
3、核心业务表建议都做逻辑删除。

六、通用字段记得加
create_time 创建时间
update_time 修改时间

七、一张表字段不宜过多,尽量20个以内

八、尽可能使用not null,减少null插入数据库
优点
1、not null减少空指针问题。
2、null 占用空间,复杂运算,优化器难自动优化。
3、null可能会让索引失效。

九、评估哪些字段要索引
首先,评估数据量,如果表数据千行以内,就没必要加索引。
索引也不能加的过多,单表不要超过5个。

十、不需要严格遵守三范式,可以通过业务字段冗余减少表关联,适用于表比较大的情况。

十一、避免使用mysql保留字,降低性能

十二、尽量少使用外键、存储过程、触发器

十三、时间类型的选择
mysql推荐用date_time ,存储范围大,与时区无关。

十四、多对多关系的设计
当两张表存在多对多关系M:N时,我们应该消除这种关系,通过增加第三张表,将M:N修改为两个1:N.
比如图书和读者,一本书可以被多个读者借,一个读者又可以借多本书,可以设计借书表,包含图书表主键,读者主键,借还标记等。

参考文献:
https://www.bilibili.com/video/BV1C44y1f7Rb/?spm_id_from=333.337.search-card.all.click

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值