知识智囊-MySQL-业务设计范式(九)

逻辑设计

  • 范式设计
    第一范式:数据库表的所有字段都是单一属性列,不可再拆分
    第二范式:只有一个业务主键
    第三范式:不能存在另外一个业务主键和业务主键相关依赖的字段
  • 反范式设计
  1. 反范式化是针对范式化而言得,在前面介绍了数据库设计得范式
  2. 所谓得反范式化就是为了性能和读取效率得考虑而适当得对数据库设计范式得要求进行违反
  3. 允许存在少量得冗余,换句话来说反范式化就是使用空间来换取时间
  • 总结
    不能完全按照范式得要求进行设计,考虑以后如何使用表

范式化设计优缺点
优点:
1.可以尽量得减少数据冗余
2.范式化的更新操作比反范式化更快
3.范式化的表通常比反范式化的表更小

缺点:
1.对于查询需要对多个表进行关联
2.更难进行索引优化

反范式化设计优缺点

优点:
可以减少表的关联
可以更好的进行索引优化

缺点:
存在数据冗余及数据维护异常
对数据的修改需要更多的成本

物理设计

命名规范:
1.数据库、表、字段的命名要遵循可读性原则,hw_question_account;表示公司:华为,系统模块:question
,表名:account
2.数据库、表、字段的命名要能描述它所表示的对象
3.数据库、表、字段的命名要遵循,尽可能少写或不使用缩写

数据类型的选择:
当一个列可以选择多种数据类型时

  1. 优先考虑数字类型
  2. 其次是日期、时间类型
  3. 最后是字符类型
  4. 对于相同级别的数据类型,应该优先选择占用空间小的数据类型

浮点类型
在这里插入图片描述
注意float 和double 是非精度类型,如果是和金额相关尽量用decimal
在这里插入图片描述
select sum(c1),sum(c2),sum(c3) from test_numberic
在这里插入图片描述
日期类型
面试经常问道 timestamp 类型 与 datetime区别
在这里插入图片描述
timestamp 和时区有关,而datetime无关

在这里插入图片描述
insert into test_time VALUES(NOW(),NOW(),NOW());

set time_zone=“-10:00”

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值