数据库设计规范中之表的设计规范

文章介绍了创建数据库表时应遵循的一套规范,包括设置主键id,确保所有字段非空并带有默认值,采用软删除策略,遵循数据库设计的三大范式,以及在数字字段中使用bigintunsigned和对varchar类型的默认长度设定。此外,还强调了根据公司或机构规范灵活调整的重要性。
摘要由CSDN通过智能技术生成

表的设计是有一定标准的。通常当设计表时会有默认,但是有一套规定的规范。

可以看下面这个创建表的语句

注意点:

  1. 一定要有id,是主键。

  1. 所有的表都必须拥有公共字段。比如说id,乐观锁,创建人,创建时间,更信任,更新时间等

  1. 所有字段都要非空,要有默认值。

  1. 一般使用软删除,即update语句,只要把数据默认就好。不使用物理删除,即delete语句。

  1. 尽可能去遵循三大范式。不了解三大范式的可以看我的文章:数据库设计三大范式。(点击链接即可)。

  1. 然后对于数字类型的字段,不能只使用bigint,而要使用bigint unsigned。

自己理解的第六点:因为bigint unsigned是无符号的。而负数一般用不到。有0和正数,一般0用来表示默认值。因为非空,一定要有默认值

  1. 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='好友聊天';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值