数据库规范

优质
小牛编辑
139浏览
2023-12-01

表规范

  • 命名统一小写下划线
  • 非CMF核心应用,统一带应用表前缀,如portal_
  • 插件表,统一带插件表前缀,如:plugindemo
  • 表默认编码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;