数据库规范(草案)
表规范
- 命名统一小写下划线
- 非CMF核心应用,统一带应用表前缀,如portal_
- 插件表,统一带插件表前缀,如: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;