数据库设计规范
1、所有的表都必须有几个公共字段
主键id、乐观锁、创建时间、更新人、更新时间、删除标志(这里的删除都是逻辑删除、使用update)
`id` bigint unsigned NOT NULL COMMENT '主键id',
`revision` int unsigned NOT NULL DEFAULT '0' COMMENT '乐观锁',
`creator` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '创建人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '更新人',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`del_flag` int unsigned NOT NULL DEFAULT '0' COMMENT '删除标志(0,未删除,1删除)',
2,id等数字类型的字段,不建议是bigint,应该是bigint unsigned
1)、bigint
默认是有符号,即取值范围是正负范围
比如:bigint(20),就是-1234567890123456789~+1234567890123456789
2)、bigint unsigned
无符号,即取值范围就是正值范围
比如:bigint(20),就是+12345678901234567890
3)、varchar默认长度为32,不要用255,
基本上32就可以了,如果确定长度可能非常大才会使用255
通常情况下使用varchar(32)和varchar(255)占用的空间都是一样的,但是使用索引长度有所不同。所以在设计时尽量保持一个合理的长度范围。
4)、所有字段都必须是非空,必须有默认值
避免程序出现空指针,可以默认值为空字符串
5)、create_time
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
update_time
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’,
创建时间和更新时间设为默认时间为当前时间CURRENT_TIMESTAMP
更新时间设为默认时间是当前时间CURRENT_TIMESTAMP