MySQL库表设计小技巧
前言:
在我们项目开发中,数据库及表的设计可以说是非常重要,我遇到过很多库表设计比较杂乱的项目,像表名、字段名命名混乱、字段类型设计混乱等等,此类数据库后续极难维护与拓展。我一直相信只有的库表设计才能发挥出MySQL大的性能,前面有篇文章也分享了数据库的使用规范,本篇文章主要讲几个库表设计的小技巧,希望对大家有所启发。
http://1.int类型的选用
整型字段类型包含 tinyint
、smallint
、mediumint
、int
、bigint
五种,占用空间大小及存储范围如下图所示:
存储字节越小,占用空间越小。所以本着小化存储的原则,我们要尽量选择合适的整型,下面给出几个常见案例及选择建议。
- 根据存储范围选择合适的类型,比如人的年龄用 unsigned tinyint(范围 0~255,人的寿命不会超过 255 岁);海龟就必须是smallint,但如果是太阳的年龄,就必须是int。
- 若存储的数据为非负数值,建议使用 UNSIGNED 标识,可以扩大正数的存储范围。
- 短数据使用 TINYINT 或 SMALLINT,比如:人类年龄,城市代码。
- 存储状态变量的字段用 TINYINT ,比如:是否删除,0代表未删除 1代表已删除。
- 主键列,无负数,建议使用 INT UNSIGNED 或者 BIGINT UNSIGNED;预估字段数字取值会超过 42 亿,使用 BIGINT 类型。
下面给出建表语句示范:
CREATE TABLE `tb_int` (
`increment_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`stu_age` tinyint unsigned NOT NULL COMMENT '学生年龄',
`is_deleted` tinyint unsigned DEFAULT '0' COMMENT '0:未删除 1:删除',
`col1` bigint NOT NULL COMMENT 'bigint字段',
PRIMARY KEY (`increment_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='int测试表';
相关文章