根据所选择的关系型数据库的特典对逻辑模型进行存储结构设计
物理设计涉及的内容:
1.定义数据库、表及字段的命名规范
多个人协作完成,玩了工作的沟通方便,我们需要有规范
要完成以下几个原则
①数据库、表以及字段的命名要遵守可读性原则,例如使用下划线分隔不同单词,或者首字母大写等等(对MYsql来说表名大小写敏感)
②遵守表意性原则,对象命名时应该选择能体现内容给的
③长名原则:是的名字能代表内容,少的使用或者不适用缩写,当然也不能太长
2.选择合适的存储引擎
推荐使用INNODB,表的主键尽可能的小,应该顺序增长的,可以避免随机IO产生,增加数据的插入效率。
INNODB主键可以与业务主键不同
3.为表中字段选择合适的数据类型
当一个列可以选择多种数据类型的时候,应该优先考虑数字类型,其次是日期或二进制类型,最后是字符类型。对于相同级别的数据类型,应该优先占用空间小的数据类型。
整数类型:
实数类型:
财务相关必须精确的DECIMAL
如何选择VARCHAR和CHAR
VARCHAR存储变长字符串,只占用必要的空间
列的最大长度小于255则只占用一个额外字节用于记录字符串长度,大于255两个字节
VARCHAR长度的选择问题,使用最小符合需求的长度
VARCHAR(5)和VARCHAR(200)性能不同
适合存储最大长度比平均大很多,很少被跟新,因为字符串变化,会引起分裂出碎片,适合存储UTF-8的多字节字符集
CHAR类型
CHAR类型时定长,定义50就算不用50 也是50
如果字符串末尾包含空格会被自动删除(VARCHAR不会)
CHAR类型最大宽度255
适合存储近似长度,比如md5 或者身份证和手机号
适合存储短字符串(varchar还需要存长度)
适合存储经常更新
DATATIME类型
同时区无关,占用8个字节的存储空间,范围从1000-01-01 00:00:00到9999-12-31 23.59.59
TIMESTAMP类型
时间戳
1970-1-1到2038-01-19
依赖于时区
在行的数据修改时自动修改其值
DATE类型和TIME类型 只需要保存日期或者时间 比如生日
优点:占用的字节数最少,只需要3个字节
1000-01-01到9999-12-31
TIME:格式 HH:MM:SS
注意事项:不要使用字符串类型来处理日期时间数据
原因:日期时间类型占空间小,进行查找过滤时可以利用日期来进行对比,有着丰富的处理函数,可以方便对时期类型进行日期计算
INT存储日期时间不如时间戳格式
4.建立数据库结构