MySQL建表的经验较多,列举部分:
-
注意选择存储引擎,如果要支持事务选择InnoDB。
-
注意字段类型的选择,对一日期类型如果要记录时分秒建议使用datetime,只记录年月日使用date类型;对于字符类型的选择,固定长度字段选择char,不固定长度的字段选择varchar,varchar比char节省空间但速度没有char快;对于内容介绍类的长文本字段使用text或longtext类型;如果存储图片等二进制数据使用blob或longblob类型;对金额字段建议使用decimal;对于数值类型的字段在确保取值范围足够的前提下尽量使用占用空间较小的类型。
-
主键字段建议使用自然主键,不要有业务意义,建议使用int unsigned类型,特殊场景使用bigint类型。
-
如果要存储text、blob字段建议单独建一张表,使用外键关联。
-
尽量不要定义外键,保证表的独立性,可以存在外键意义的字段,也就是说不要使用物理外键,尽量使用逻辑外键。
-
设置字段默认值,比如:状态、创建时间等。
-
每个字段写清楚注释。
-
表必备三字段:id, gmt_create, gmt_modified。其中 id必为主键,类型为 unsigned bigint、单表时自增、步长为 1. gmt_create,gmt_modified的类型均为 date_time类型。
-
注意字段的约束,比如:非空、唯一、主键等。
-
字段唯一约束的话,该表有逻辑删除,那需要注意逻辑删除的唯一字段。