表的设计是有一定标准的。通常当设计表时会有默认,但是有一套规定的规范。
可以看下面这个创建表的语句
注意点:
一定要有id,是主键。
所有的表都必须拥有公共字段。比如说id,乐观锁,创建人,创建时间,更信任,更新时间等
所有字段都要非空,要有默认值。
一般使用软删除,即update语句,只要把数据默认就好。不使用物理删除,即delete语句。
尽可能去遵循三大范式。不了解三大范式的可以看我的文章:数据库设计三大范式。(点击链接即可)。
然后对于数字类型的字段,不能只使用bigint,而要使用bigint unsigned。
自己理解的第六点:因为bigint unsigned是无符号的。而负数一般用不到。有0和正数,一般0用来表示默认值。因为非空,一定要有默认值
varchar类型的默认值设为32,而不是系统默认255.
自己理解的第七点:一般varchar类型的数据占不到255字节,甚至很小。所以默认值可不为255.而且整体空间是一样的,如果varchar定义得太大,留给后续新加字段使用的空间就越少。
当然实际情况还有看你们公司或机构的规范。根据实际情况而来。
最后,上面的表内容我放在下面。
CREATE TABLE `t_friend_chat` (
`id` bigint unsigned NOT NULL COMMENT '主键id',
`from_user_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '消息发送者',
`to_user_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '消息接收者',
`content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '消息内容',
`content_type` int unsigned NOT NULL DEFAULT '0' COMMENT '消息类型',
`server_from_recall` int unsigned NOT NULL DEFAULT '0' COMMENT '服务器有没有给发送者回调',
`server_to_send` int unsigned NOT NULL DEFAULT '0' COMMENT '服务器有没有给接受者发送消息',
`server_to_recall` int unsigned NOT NULL DEFAULT '0' COMMENT '服务器有没有收到接受者的回调',
`status` int unsigned NOT NULL DEFAULT '0' COMMENT '状态(0,未完成,1,已完成,2,撤回)',
`finish_time` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '消息发送成功时间',
`withdraw_time` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '消息撤回时间',
`revision` int unsigned NOT NULL DEFAULT '0' COMMENT '乐观锁',
`creator` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '创建人',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_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删除)',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='好友聊天';