建表规约总结
表示是否逻辑的字段 用 is_xxx的命名方式。数据类型是 unsigned tinyint 1表示是,0表示否。
不要用关键字命名字段。
库名保持与应用名一致,表明表示业务+表作用。
用 unsignd 无符号数能够扩大存储范围。
字段允许冗余,提高查询性能,但需要考虑数据一致性。
表行超过500万行才考虑分库分表,如果近三年都到不了,那就没必要分库分表。
字段一律小写,linux上区分大小写,windows不区分。
小数存储用decimal,不要用float或者double,会导致精度丢失,但我觉得可能存储字符串,到时候就是需要在代码层进行解析就可以。pk_xxx主键,uk_xxx唯一索引名,idx_xxx普通索引。
varchar 是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长度 大于此值,定义字段类型为 text,独立出来一张表,用主键来对应,避免影响其它字段索引效 率。
如果存储的字符串长度几乎相等,使用 char 定长字符串类型。
表必备三字段:id, gmt_create, gmt_modified。 说明:其中 id 必为主键,类型为 bigint unsigned、单表时自增、步长为 1。gmt_create, gmt_modified 的类型均为 datetime 类型,前者现在时表示主动式创建,后者过去分词表示被动式更新。其实也可以是creatime,updatetime字段都为两个字段让数据库自己维护,程序员不需要。比如
create_time
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
update_time
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’