数据库设计

三大范式与反范式

第一范式
保证原子性 保证不可以再进行拆分 集合与数组不能作为某一个属性出现

例如:地址可以进一步拆分为 省 市 区
在这里插入图片描述

第二范式
基于第一范式,依赖于主键而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情;

例如:订单表只描述订单相关的信息,所以所有字段都必须与订单id相关

产品表只描述产品相关的信息,所以所有字段都必须与产品id相 关;
因此不能在一张表中同时出现订单信息与产品信息;

第三范式
要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
所以第三范式具有如下特征:
1,每一列只有一个值
2,每一行都能区分。
3,每一个表都不包含其他表已经包含的非主关键字信息。
例如,帖子表中只能出现发帖人的id,而不能出现发帖人的id,还同时出现发帖人姓名,否则,只要出现同一发帖人id的所有记录,它们中的姓名部分都必须严格保持一致,这就是数据冗余。

反范式
有时候我们为了提高查询效率,会有一些数据冗余的情况出现,避免join 查询,这些称为之反范式

数据库表字段类型

char与varchar
char和varchar都是用来存储字符串类型的数据,但是他们保存和检索的方式不一样.char属于固定长度的字符类型, varchar属于可变长的字符类型
char 插入时会将末尾的空格去掉 varchar不会
varchar不建议存储超过 255个字符,可以考虑用text存储 凡是用到 text 数据类型的 应该做主表分离
索引扫描效率: char > varchar >text

数字类型
在这里插入图片描述

int => 4294967295(最大值,长度 10 ,我们经常写int(11)) , 能存储的时间能到 2136年
smallint=>65535(最大值,长度5,我们经常写smallint(6))

时间类型
date 3个字节 00-00-00
time 3个字节 00:00:00
datetime 8个字节 00-00-00 00:00:00 允许为null
year 1个字节 0000
int类型存储时间戳

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值