# 数据库规范(草案) ## 表规范 * 命名统一小写下划线 * 非CMF核心应用,统一带应用表前缀,如portal_ * 插件表,统一带插件表前缀,如:plugin_demo_ * 表默认编码utf8mb4,默认排序规则utf8mb4_general_ci * 引擎统一innodb * 写表注释 ## 字段规范 * 命名统一小写下划线 * 非自增主键一定要写字段注释 * 数据类型尽量用数字类型,数字类型的比字符类型的要快很多。 * 数据类型尽量小,这里的尽量小是指在满足可以预见的未来需求的前提下的,但是又不能太小 * 尽量不要允许NULL * 布尔类型的值均以 is、has、exist 或者 can开头 * create_time作为记录创建时间 * update_time作为记录更新时间 * delete_time作为记录软删除时间 * 需要软删除的表统一加delete_time字段 * status表示记录状态 * table_name作为表名,字段varchar长度64 * remark代表备注,给管理员区分记录类型用 * description代表描述给前台用户用 * list_order代表记录排序字段,类型float,默认值10000,默认排序按从小到大 * image 代表图片,thumbnail 代表缩略图,photos代表相册 * 固定长度的字符串用char不用varchar * more代表表扩展属性,text类型 * 除user表,其他表用user_id代表用户id * parent_id代表父级ID * 多语言排序要求字符串类型,统一utf8mb4_unicode_ci ## 内容保存规范 * thinkcmf所有字段内容都是`htmlspecialchars`方法处理过的 ## 富文本字段保存规范 * 富文本字段里在保存时要用`htmlspecialchars_decode`解密后用`cmf_replace_content_file_url`处理后,再`htmlspecialchars`方法处理后再保存到数据库 > 注意`cmf_replace_content_file_url`第二个参数要设置为`true` ## 富文本字段显示规范 * 富文本字段里在从数据库取出时要用`htmlspecialchars_decode`解密后用`cmf_replace_content_file_url`处理 ## 文件路径保存规范 * 所有上传的文件在数据库的保存格式都应该是相对路径,相对于 `upload` 目录,如`/upload/20170912/b249b3a5bd5ab59f726afb5c73eae699.jpg`在数据库中应该为`20170912/b249b3a5bd5ab59f726afb5c73eae699.jpg`, 在从数据库取出后可以用`cmf_get_image_url`函数和`cmf_get_file_download_url`函数转化为可以访问的 url 和可以下载的 url;