1.表明不要用复数
2.主键 用bigint unsigned 单表自增 步长为1
3.字符串长度几乎相等 用char类型
4.小数用decimal
5.能用小的类型就用小类型,确定不会是负数的用unsigned
6. tinyint表示状态时,可以用unsigned tinyint(2)
7.某一个字段数据过长,长度不超过5000用varchar varchar(1500),如果超过5000用text 单独放到辅表里面 例如 text
8.逻辑删除is_delete unsigned tinyint
9.表必备字段 id unsigned bigint,gmt_created,gmt_modified datatime
10.主键索引名pk_ 唯一索引名uk_ 普通索引名 inx_
二:宽度
概念:例如 `status` tinyint(2) DEFAULT '1' 这句建表语句中的2就是宽度。也就是属性后括号内的数字叫做数据的宽度,在navicit等一些工具的设计页面里的名字是 '长度',不同的数据类型对宽度处理不同。
数字类型:这里的宽度和数据的取值范围没有任何关系,数据的取值范围只与数据类型有关,只是指明mysql最大可能显示的数字个数。如果你不设置宽度,系统将添加默认的宽度 tinyint(4),smallint(6),mediumint(9),int(11),bigint(20)。这些默认的宽度是跟该类型的取值范围长度相关。另外,像float,double和decimal这三种实数类型,括号内还有第二个数字表示精确到多少位。
字符串类型:这个长度就与取值范围有关了,不管是char还是varchar都定义了字符串的最大长度,宽度设为几就只有几个汉字(5.0版本后)。
text,浮点和日期:对宽度没有要求,不设置,默认0