【章节3】MySQL数据类型、数据表设计
MySQL常用数据类型
1.整数
tinyint:-128—127(1个字节)
smallint:-32768——32767(2个字节)
int:4个字节
bigint:8个字节
2.定点数:小数点的位置固定→数据精度得到保证
decimal(p,s) #p表示数字所占的总位数,s表示小数部分的位数
--实际有效字节为p+2位,最大8个字节--
3.浮点数:小数点的位置不固定→表示的范围更大,但是不能保证精度
float:4个字节
double:8个字节
4.日期时间
date:某年某月某日
time:时间(24h),时间间隔(-839:59:59——839:59:59)
datetime
5.文本
char:固定长度文本 char(5)表示长度为5注意:如果长度为3,会添加2个空格
varchar:varchar(5)注意:如果长度为3,只分配3个字节
text:大文本(无限长文本),不能作为查询条件
6.二进制数据
bit
用一张图来总结,如下:
数据表设计
1.数据表的设计流程和ER图
(1)需求分析阶段:分析客户的业务和数据处理需求
(2)概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整
(3)详细设计阶段:将E-R图转换成多张表→进行逻辑设计→应用数据库设计的三大范式进行审核
(4)代码编写阶段:将设计和规范的数据表进行物理实现
举个例子(模拟QQ游戏大厅项目)
ER(Entity-Relationship)实体关系图
此例子中的实体为:游戏和玩家
注意如下符号和含义:
(QQ游戏大厅项目E-R图):
2.使用范式检查数据表设计的合理性
【范式】:一种衡量数据库设计好不好(冗余?)的规范【第一范式(1st NF)】:每一列不能再分割
【第二范式(2nd NF)】:表中每一个列都表示主键所代表的实体
*一个关系--一个表
**胜者得分是用来描述难度的字段,不是用来描述游戏的
【第三范式(3rd NF)】:不存在冗余
*玩家昵称可以不出现在分数表中,因为玩家昵称可以在玩家表中找到