使用Navicat设计:
长度
:设置对int型(包括和int型相关的类型如smallint等)数据的显示和大小没有任何影响,所以不用设置。
对char型数据,长度的设置影响输入字符串的大小,即长度,char(4)意味着只能在表中输入最多四个字符,不然报错------Data too long for column
timestamp
:如果勾选非空需要默认值会自动填写CURRENT_TIMESTAMP
;会勾选根据当前时间戳更新,这个可以手动去掉,如果有些字段不需要一定要记得去掉。
tinyint
:设置1个长度显示为(0,1,2),2个长度就显示(01,02);如果是有符号的,最大只能为255,无符号暂时不知道
唯一索引
:能建立唯一索引,尽量建立,因为在插入数据时有可能会重复插入,如果此时有唯一索引,那么使用insert ignore
就能忽略数据库中已经存在的数据(根据主键或者唯一索引判断),如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据
参考:MySQL避免插入重复记录的方法
默认值
:有关金额或者数量的字段如果设置为非空,要设默认值,一般初始化为0。
mysql 空值(null)和空字符(‘‘)的区别 引用此文章的结论。
在设置默认值的时候,尽量不要用null当默认值,如果字段是int类型,默认为0;
如果是varchar类型,默认值用空字符串(’’)会更好一些。带有null的默认值还是可以走索引的,只是会影响效率。当然,如果确认该字段不会用到索引的话,也是可以设置为null的。
在设置字段的时候,可以给字段设置为 not null ,因为 not null 这个概念和默认值是不冲突的。我们在设置默认值为(’’)的时候,虽然避免了null的情况,但是可能存在直接给字段赋值为null,这样数据库中还是会出现null的情况,所以强烈建议都给字段加上 not null。
尽管在存储空间上,在索引性能上可能并不比空值差,但是为了避免其身上特殊性,给项目带来不确定因素,因此建议默认值不要使用 NULL。
字段值
:不要用0作值,否则mybatis,判断的时候户默认为空,不然得手动添加判断等于0