一、数据库的三大范式
1.1第一范式
数据表中的每一列(每个字段)都不可以再拆分。例如用户表,用户地址还可以拆分成国家、省份、市,这样才符合第一范式。
1.2第二范式
在第一范式的基础上,非主键完全依赖于主键,而不能是依赖于主键的一部分。
例如订单表里面,存储了商品信息(商品价格、商品类型),那就需要把商品ID和订单ID作为联合主键,才满足第二范式。
1.3第三范式
在满足第二范式的基础上,表中的非主键只依赖于主键,而不依赖于其它非主键。
例如订单表就不能存储用户信息(姓名、地址)。
1.4三大范式的关系
第一范式包含第二、三范式,第二范式包含第三范式。
1.5三大范式的作用
三大范式的作用是为了控制数据库的冗余,是对空间的节省。
实际上一般互联网公司的设计都是反范式的,通过冗余一些数据,避免跨表跨库,利用空间换时间,提高性能。
二、varchar与char的区别
2.1 char
char表示定长字符串,长度固定;
如果插入数据长度小于char的固定长度则用空格填充;
因为长度固定,所以存取数据比varchar要快很多,甚至能快50%,但因其长度固定所以占据多余的空间,是用空间换时间;
对于char来说,最多能存放的字符个数为255,和编码无关。
2.2 varchar
varchar表示可变长字符串;
插入数据是多长就按照多长来存储;
varchar再存取方面于char相反,因其长度不固定所以存取较慢,但是不占据多余的空间,是时间换空间;
对于varchar来说最多能存放的字符个数为65532
日常设计时,对于长度相对固定的字符串可以使用char,对于长度不确定的可以使用varchar更合适。
标签:范式,char,长度,varchar,主键,三大 From: https://blog.51cto.com/u_16255459/7738026