数据库设计过程规划.md 10 KB


html: embed_local_images: false embed_svg: true offline: false toc: true

print_background: false export_on_save:

html: true

数据库设计过程规划

工具:

  • itbuilder
  • pdmaner

MySQL 8 到 PHP 8 数据类型对照表

MySQL 数据类型 PHP 数据类型 说明
TINYINT int 小整数值,范围:-128 到 127
SMALLINT int 小整数值,范围:-32768 到 32767
MEDIUMINT int 中等大小整数值,范围:-8388608 到 8388607
INT int 标准整数值,范围:-2147483648 到 2147483647
BIGINT int/string 大整数值,范围:-9223372036854775808 到 9223372036854775807
FLOAT float 单精度浮点数
DOUBLE float 双精度浮点数
DECIMAL string 定点数
DATE string 日期值,格式:YYYY-MM-DD
DATETIME string 日期和时间值,格式:YYYY-MM-DD HH:MM:SS
TIMESTAMP string 时间戳,格式:YYYY-MM-DD HH:MM:SS
TIME string 时间值,格式:HH:MM:SS
YEAR int 年份值,范围:1901 到 2155
CHAR string 定长字符串
VARCHAR string 变长字符串
BINARY string 定长二进制数据
VARBINARY string 变长二进制数据
TINYBLOB string 不超过 255 个字符的二进制数据
BLOB string 不超过 65535 个字符的二进制数据
MEDIUMBLOB string 不超过 16777215 个字符的二进制数据
LONGBLOB string 不超过 4294967295 个字符的二进制数据
TINYTEXT string 短文本字符串,不超过 255 个字符
TEXT string 文本字符串,不超过 65535 个字符
MEDIUMTEXT string 中等长度文本字符串,不超过 16777215 个字符
LONGTEXT string 长文本字符串,不超过 4294967295 个字符
ENUM string 枚举类型
SET string 集合类型
JSON array/object JSON 格式数据,映射为 PHP 数组或对象
BOOL bool 布尔值,通常用 0 和 1 表示
GEOMETRY string 几何数据类型
POINT string 点类型
LINESTRING string 线串类型
POLYGON string 多边形类型
MULTIPOINT string 多点类型
MULTILINESTRING string 多线串类型
MULTIPOLYGON string 多多边形类型
GEOMETRYCOLLECTION string 几何集合类型

参考:

  • UI 图
  • 程序需求和概要设计文档(含流程图)
  • 老数据库
  • 购买的代码数据库

字段命名前缀

  • 图片:img_
  • 状态:status_
  • 价格:PRICE_
  • 日期: 所有都后缀_time
  • 数据库关键词、php 关键词、js 关键词,后缀: _KW
  • 外键命名规则: simple 表名_ID

多个单词情况倒序命名

设计步骤规划

业务部门人员全程参与,提出修改意见,参与评审?

  1. 建立英汉对照字典,用于统一业务名词的中英文命名?
  2. 导入刘数据库,精简 [x]
  3. 用 pdmaner 参考 UI 图逆向设计,设计到概念模型、逻辑模型为止,不扩展
  4. 参考做了一半的程序详细设计文档,进行查漏补缺(验证),不扩展
  5. 参考购买的代码数据库,进行对比,找出不合理之处,进行优化,做加法
  6. 分析业务中所有需要记录日志或审计的地方,统一建表
  7. 用 itbuilder 进行快速将概念模型转换为物理模型,进行优化和扩展、字段翻译、字段精度(类型、长度)等,生成物理模型 DDL 并建库
  8. 生成数据库文档和数据字典文档
  9. 评审,交付下一开发环节

设计注意事项

  • 表名、字段名必须使用小写字母,禁止使用大写字母
  • 表名、字段名必须使用下划线分割单词,禁止使用驼峰命名
  • 表名、字段名禁止使用中文
  • 表名、字段名禁止使用特殊字符
  • 表名、字段名禁止使用保留字
  • 表名、字段名禁止使用 mysql 保留字
  • 表名、字段名禁止使用 php 保留字
  • 遵守数据库设计范式:
    • 1NF:字段不可分割
    • 2NF:每个非主键字段都依赖于主键
    • 3NF:每个非主键字段都不依赖于其他非主键字段
    • BCNF:每个决定因素都包含主键
    • 4NF:消除多值依赖
    • 5NF:消除传递依赖

后续过程

  1. 程序设计文档,参考数据库进行修改
  2. 通过 dcat admin 生成基础管理后台 controller、model、service 代码,通过 ai 调优后台界面
  3. 输入程序设计文档、数据库设计文档,通过 ai 生成接口的逻辑代码,测试代码
  4. 联调测试,优化代码
  5. 上线测试

php 后台相关表 todolist

  1. overtrue/laravel-socialite
    • social_providers
  2. 平台设置存储到.env 配置文件中
    • 当新建租户时,将配置文件中的平台设置导入到租户的配置表中

php 后台程序详细设计文档 todolist

  1. 分帐需要、a、b 表,

UI 修改 todolist

技师端

  • 技师端首页
    • header
    • 去掉“位置”显示
    • 接单设置
    • 增加“位置”显示
    • 个人信息板块
    • 增加:待认证状态,以及对应的提示
    • 点击“待认证状态”或通过其他形式进入认证页面,补充认证需要的信息提交申请
    • 如果是审核过了,但未认证,则显示“去认证”。
    • 以审核通过的信息为主,点击个人修改,如果有申请修改的记录正在审核,则提示她,你有一条记录正在审核,下面的信息还是审核过的信息,假如他继续修改通过的信息,则会提示,你有一条审核信息正在审核。
    • “个人主页“干掉
    • 项目设置
    • 设置表单下面,增加“重置默认设置”按钮
    • 我的订单板块,去掉。tabbar,抢单和订单列表显示数量角标
  • 订单列表
    • 改名为“任务列表”
  • 抢单内容要与任务列表内容、风格一致

订单

  • 字段:订单编号,会员编号,技师编号,项目编号,订单状态,订单类型,订单金额(车费+服务费+打赏金额+余额抵扣金额-优惠金额),支付金额,余额抵扣金额,车费,服务费,打赏金额,优惠金额,订单时间,订单地址,订单经纬度,订单地址编码,订单备注,创建时间,更新时间

订单项目快照

  • 字段:订单编号,项目

订单服务

  • 字段:订单编号,技师编号,订单状态(创建、接单、出发、到达、开始服务、服务结束、撤离),经纬度,地址,图片,创建时间,更新时间

订单分帐

  • 字段:订单编号,分润类型(用户一级邀请人、用户二级邀请人、技师、平台、代理、技师邀请人),分润账户类型(用户、技师、平台、代理),分润账户编号,参与分润金额,分润金额,分润比例,分润时间,创建时间,更新时间

钱包

  • 字段:账户类型(用户、技师、平台、代理),账户编号,类型(消费、退款、充值、提现、扣除、赠送),类型订单编号(订单编号、退款编号、充值编号、提现编号),钱包余额,冻结金额(充值金额),出入金额,手续费,状态(成功,失败),备注,通过时间,创建时间,更新时间

提现记录

  • 字段:提现编号,账户类型(用户、技师、平台、代理),账户编号,提现金额,提现手续费,提现状态,提现时间,创建时间,更新时间

车费需要提点 10% 小费需要提点 50% 服务费平台提点 50% - 40%(根据技师等级)

后台设计 生成 sql cursor 规则配置

Always respond in 中文
生成统计sql时,请按照以下要求生成:
1. 数据库采用的是:mysql8
2. 所有注释请使用块注释
3. 查询的每一个列都不要用AS改名,后面都要有中文块注释
4. 查询关联的每一个表改别名时不要使用数据库关键字,后面都要有中文块注释
5. 用查询因子化语法生成统计sql
6. 生成统计sql时,发现不明确的表、字段,请一个一个的告知我,我一个一个的跟您确认,确认后您重新生成统计sql