先把核心实体和字段想清楚,后续搜索、筛选、排名、广告位才不会返工。

- 学习结果
- 画出实体关系和 metadata 字段,明确哪些字段必须结构化。
- 时长
- 2-3 小时
- 难度
- 经验分享
- 核验
- 尚未进入本轮核验
正文
实体代表可独立管理的对象。项目、文章、用户和订单具有不同生命周期,不应塞进一个任意metadata对象。先问对象如何创建、被谁修改、何时删除以及与其他对象的关系;还没有业务需求的订单或广告实体无需预先实现。
稳定标识与展示名称分开。id用于内部关联,slug用于路由,title用于显示。标题变化不应打断订单关系或详情地址;slug改变时需规划旧链接重定向。字段名、类型和唯一约束比样例内容更重要,同一实体不要混用name和title导致读取分支。
状态字段表达允许的流转。投稿可分pending、approved、rejected,公开列表只读approved。发布时间、更新时间和核验时间各有意义:updatedAt不能自动当verifiedAt;来源更改后需要重新核对而不是仅刷新日期。后台编辑也要遵守同一状态规则。
关系与重复数据要有取舍。订单关联用户与商品,但应保存成交时价格和币种快照,不能用现在的商品价格回算历史。分类与标签可结构化保存,广告合作标识与自然排名分离;必要快照不是无意重复,而是保留交易事实。
约束与权限在写入侧执行。URL格式、金额范围、必填字段和唯一标识需要服务端或数据库校验,浏览器校验只是友好反馈。联系方式和付款记录不出现在公开接口中;使用托管数据库时按用户与角色检查读取和写入权限。
样例数据暴露结构缺口。准备重复slug、无图、长标题、缺来源和旧核验日期,走一遍列表、详情、搜索与编辑。每次字段迁移写清旧记录如何处理,默认值不能掩盖真实未知。删除记录前考虑引用、保留义务与匿名化,不直接级联删除账务证据。



学习步骤
- 列出核心实体:用户、产品、文章、订单、广告、合作。
- 为每个实体写必填字段、可选字段和状态字段。
- 把分类、标签、排名、商业合作标识结构化。
- 保留 source、updatedAt、verifiedAt 等来源字段。
- 用假数据跑一遍列表、详情、搜索和后台编辑。
场景拆解
设计投稿与公开项目数据
模拟目录接收项目名称、官网链接和提交者邮箱。投稿先进入审核池,公开项目只展示核验后的资料,不泄露邮箱,内部标识与slug分别使用。
- 将Submission与Project分开,保留审核状态与内部关联。
- 在Project记录sourceLinks、updatedAt和verifiedAt,区分编辑与核验。
- 用缺图、重复slug与未经审核记录检查公开接口和编辑行为。
数据结构应允许审核拒绝但保留处理记录,公开页面只读批准项目。即使前台不显示邮箱,也必须确认公开接口没有返回该字段;不应只用CSS隐藏敏感数据。
补充材料
思维导图、练习、清单和参考资料可按需展开。
01 思维导图和离线文件
适合读完后下载到自己的知识库里继续整理。
从实体到页面的数据关系
- 实体:用户、项目、文章与订单
- 字段:必填、可选与状态
- 关系:谁拥有、谁引用、谁购买
- 索引:搜索、分类与排序
- 页面:列表、详情与后台编辑
结构化字段的职责
- 分类与标签:支持筛选
- 状态字段:表达流转
- 合作标识:区分商业关系
- source、updatedAt、verifiedAt:来源与核验
数据设计的长期影响
- 把分类写在正文里会妨碍筛选
- 缺少状态会混淆草稿与公开内容
- 来源字段不能用修改时间代替
- 列表、搜索与后台需要共同验证字段

02 实践练习
根据文章内容记录自己的判断与依据。
设计投稿与公开项目数据
拆分私有投稿与公开项目,规定稳定标识、审核流转和来源日期,再用缺图与重复slug检验结构边界。
练习场景
模拟目录接收项目名称、官网链接和提交者邮箱。投稿先进入审核池,公开项目只展示核验后的资料,不泄露邮箱,内部标识与slug分别使用。
准备材料
- 准备一条投稿和一条已公开项目样例。
- 列出前台、管理员、提交者三种访问角色。
检查点
- 标题、路由或售价改变后,哪些旧关系必须保持稳定?
练习步骤
01 / 定义实体
时间: 20-30 分钟
目标: 分离公开资料和私有提交
操作:
- 列出对象生命周期与使用角色。
- 拆出投稿邮箱和审核状态。
参考结果: Submission含邮箱,Project公开资料不含邮箱。
预期产出: 实体与关系图。
检查: 私有字段没有进入公开实体接口。
02 / 规定状态与约束
时间: 20-30 分钟
目标: 明确可编辑与可公开条件
操作:
- 定义审核状态转换和唯一slug。
- 区分更新时间与核验时间。
参考结果: pending不能出现在公开列表。
预期产出: 字段字典与转换表。
检查: 所有公开记录都有明确发布条件。
03 / 检验边界数据
时间: 20-30 分钟
目标: 确认结构支持真实缺失与迁移
操作:
- 加入重复slug、缺图和旧日期样例。
- 观察列表、详情和管理员编辑。
参考结果: 未知核验日期不自动填当天。
预期产出: 异常记录处理结果。
检查: 默认值没有伪造来源或核验事实。
完成检查
- 私有字段没有进入公开实体接口。
- 所有公开记录都有明确发布条件。
- 默认值没有伪造来源或核验事实。
03 清单、模板和关键词
用于项目记录和自查。
项目记录
实体清单:____字段定义:____状态流转:____索引字段:____来源字段:____后台编辑项:____
字段字典
实体:Project;字段:id、slug、title、websiteUrl、category、sourceLinks、updatedAt、verifiedAt;类型:;必填:;唯一:;来源:;编辑权限:;是否公开:。Submission另存邮箱与reviewStatus,避免混入公开返回数据。
状态与迁移表
实体:;初始状态:;允许转换:;执行角色:;公开条件:;关联记录:;迁移前字段:;迁移后字段:;旧数据处理:;回退方案:。updatedAt表示编辑时间,verifiedAt仅在实际核对后变更。
关键概念
- 实体清单
- 字段定义
- 状态流转
- 索引字段
- 来源字段
- 后台编辑项
容易误判
- 将邮箱返回公开接口
- 用updatedAt冒充verifiedAt
- 标题改变后破坏稳定关系