--- 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 > 多个单词情况倒序命名 ## 设计步骤规划 > 业务部门人员全程参与,提出修改意见,参与评审? 0. 建立英汉对照字典,用于统一业务名词的中英文命名? 1. 导入刘数据库,精简 [x] 2. 用 pdmaner 参考 UI 图逆向设计,设计到概念模型、逻辑模型为止,不扩展 3. 参考做了一半的程序详细设计文档,进行查漏补缺(验证),不扩展 4. 参考购买的代码数据库,进行对比,找出不合理之处,进行优化,做加法 5. 分析业务中所有需要记录日志或审计的地方,统一建表 6. 用 itbuilder 进行快速将概念模型转换为物理模型,进行优化和扩展、字段翻译、字段精度(类型、长度)等,生成物理模型 DDL 并建库 7. 生成数据库文档和数据字典文档 8. 评审,交付下一开发环节 ## 设计注意事项 - 表名、字段名必须使用小写字母,禁止使用大写字母 - 表名、字段名必须使用下划线分割单词,禁止使用驼峰命名 - 表名、字段名禁止使用中文 - 表名、字段名禁止使用特殊字符 - 表名、字段名禁止使用保留字 - 表名、字段名禁止使用 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 ```