开发文档 v2.x

表设计原则

更新时间:2024年11月2日 03:16 浏览:793

引擎:

如无特殊需求,优先使用 innoDb

 

编码字符集:

为了获行较好的兼容性,优先使用 utf8mb4 字符集,通常用 utf8mb4_general_ci(不区分大小写)

 

主键

BE双驱框架支持 自增IDUUID 两种方式的主键,Mysql 单机环境下使用 int 型 自增ID 性能是最高的,但是高可用系统避免不了分布式,此时UUID是更合适的选择。

 

默认值:

除 Text 字段外, 每个字段均应设置一个默认值,并设置为非空(NOT NULL)。

 

注释

所有字段均应填写明确的注释,这些注释会被 BE 框架识别,并可用于某些功能中的界面展示

 

软删除

通常情况下,程序应使用一个字段标记软删除,

`is_delete` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否已删除',

 

创建&更新时间

每张表中需要有以下两个字段记录创建时间和更新时间

`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'

 

示例:

CREATE TABLE `cms_article` (
`id` varchar(36) NOT NULL DEFAULT 'uuid()' COMMENT 'UUID',
`image` varchar(200) NOT NULL DEFAULT '' COMMENT '封面图片',
`title` varchar(120) NOT NULL DEFAULT '' COMMENT '标题',
`summary` varchar(500) NOT NULL DEFAULT '' COMMENT '摘要',
`description` mediumtext NOT NULL COMMENT '描述',
`url` varchar(200) NOT NULL DEFAULT '' COMMENT '网址',
`url_custom` tinyint(4) NOT NULL DEFAULT '0' COMMENT '网址是否启用自定义',
`author` varchar(50) NOT NULL DEFAULT '' COMMENT '作者',
`publish_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间',
`seo_title` varchar(200) NOT NULL DEFAULT '' COMMENT 'SEO标题',
`seo_title_custom` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'SEO标题是否启用自定义',
`seo_description` varchar(500) NOT NULL DEFAULT '' COMMENT 'SEO描述',
`seo_description_custom` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'SEO描述是否启用自定义',
`seo_keywords` varchar(60) NOT NULL DEFAULT '' COMMENT 'SEO关键词',
`ordering` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
`hits` int(11) NOT NULL DEFAULT '0' COMMENT '点击量 ',
`collect_article_id` varchar(36) NOT NULL DEFAULT '' COMMENT '采集的文章ID',
`is_push_home` tinyint(4) NOT NULL DEFAULT '1' COMMENT '是否推送到首页',
`is_on_top` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否置项',
`is_enable` tinyint(4) NOT NULL DEFAULT '1' COMMENT '是否启用',
`is_delete` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否已删除',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文章';

ALTER TABLE `cms_article`
ADD PRIMARY KEY (`id`),
ADD KEY `url` (`url`),
ADD KEY `update_time` (`update_time`);
导航