跳转到内容

数据模型:项目、用户、订单和内容怎么设计

搭建交付 · 经验分享 · 2-3 小时

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

尚未进入本轮核验

数据模型:项目、用户、订单和内容怎么设计 配图
学习结果
画出实体关系和 metadata 字段,明确哪些字段必须结构化。
时长
2-3 小时
难度
经验分享
核验
尚未进入本轮核验

正文

实体代表可独立管理的对象。项目、文章、用户和订单具有不同生命周期,不应塞进一个任意metadata对象。先问对象如何创建、被谁修改、何时删除以及与其他对象的关系;还没有业务需求的订单或广告实体无需预先实现。

稳定标识与展示名称分开。id用于内部关联,slug用于路由,title用于显示。标题变化不应打断订单关系或详情地址;slug改变时需规划旧链接重定向。字段名、类型和唯一约束比样例内容更重要,同一实体不要混用name和title导致读取分支。

状态字段表达允许的流转。投稿可分pending、approved、rejected,公开列表只读approved。发布时间、更新时间和核验时间各有意义:updatedAt不能自动当verifiedAt;来源更改后需要重新核对而不是仅刷新日期。后台编辑也要遵守同一状态规则。

关系与重复数据要有取舍。订单关联用户与商品,但应保存成交时价格和币种快照,不能用现在的商品价格回算历史。分类与标签可结构化保存,广告合作标识与自然排名分离;必要快照不是无意重复,而是保留交易事实。

约束与权限在写入侧执行。URL格式、金额范围、必填字段和唯一标识需要服务端或数据库校验,浏览器校验只是友好反馈。联系方式和付款记录不出现在公开接口中;使用托管数据库时按用户与角色检查读取和写入权限。

样例数据暴露结构缺口。准备重复slug、无图、长标题、缺来源和旧核验日期,走一遍列表、详情、搜索与编辑。每次字段迁移写清旧记录如何处理,默认值不能掩盖真实未知。删除记录前考虑引用、保留义务与匿名化,不直接级联删除账务证据。

数据模型:项目、用户、订单和内容怎么设计 · 图解 1

数据模型:项目、用户、订单和内容怎么设计 · 图解 2

数据模型:项目、用户、订单和内容怎么设计 · 图解 3

学习步骤

  • 列出核心实体:用户、产品、文章、订单、广告、合作。
  • 为每个实体写必填字段、可选字段和状态字段。
  • 把分类、标签、排名、商业合作标识结构化。
  • 保留 source、updatedAt、verifiedAt 等来源字段。
  • 用假数据跑一遍列表、详情、搜索和后台编辑。

场景拆解

设计投稿与公开项目数据

模拟目录接收项目名称、官网链接和提交者邮箱。投稿先进入审核池,公开项目只展示核验后的资料,不泄露邮箱,内部标识与slug分别使用。

  1. 将Submission与Project分开,保留审核状态与内部关联。
  2. 在Project记录sourceLinks、updatedAt和verifiedAt,区分编辑与核验。
  3. 用缺图、重复slug与未经审核记录检查公开接口和编辑行为。

数据结构应允许审核拒绝但保留处理记录,公开页面只读批准项目。即使前台不显示邮箱,也必须确认公开接口没有返回该字段;不应只用CSS隐藏敏感数据。

补充材料

思维导图、练习、清单和参考资料可按需展开。

01

思维导图和离线文件

适合读完后下载到自己的知识库里继续整理。

从实体到页面的数据关系

  • 实体:用户、项目、文章与订单
  • 字段:必填、可选与状态
  • 关系:谁拥有、谁引用、谁购买
  • 索引:搜索、分类与排序
  • 页面:列表、详情与后台编辑

结构化字段的职责

  • 分类与标签:支持筛选
  • 状态字段:表达流转
  • 合作标识:区分商业关系
  • source、updatedAt、verifiedAt:来源与核验

数据设计的长期影响

  • 把分类写在正文里会妨碍筛选
  • 缺少状态会混淆草稿与公开内容
  • 来源字段不能用修改时间代替
  • 列表、搜索与后台需要共同验证字段

数据模型:项目、用户、订单和内容怎么设计 思维导图

02

实践练习

根据文章内容记录自己的判断与依据。

设计投稿与公开项目数据

拆分私有投稿与公开项目,规定稳定标识、审核流转和来源日期,再用缺图与重复slug检验结构边界。

练习场景

模拟目录接收项目名称、官网链接和提交者邮箱。投稿先进入审核池,公开项目只展示核验后的资料,不泄露邮箱,内部标识与slug分别使用。

准备材料

  • 准备一条投稿和一条已公开项目样例。
  • 列出前台、管理员、提交者三种访问角色。

检查点

  • 标题、路由或售价改变后,哪些旧关系必须保持稳定?

练习步骤

01 / 定义实体

时间: 20-30 分钟

目标: 分离公开资料和私有提交

操作:

  1. 列出对象生命周期与使用角色。
  2. 拆出投稿邮箱和审核状态。

参考结果: Submission含邮箱,Project公开资料不含邮箱。

预期产出: 实体与关系图。

检查: 私有字段没有进入公开实体接口。

02 / 规定状态与约束

时间: 20-30 分钟

目标: 明确可编辑与可公开条件

操作:

  1. 定义审核状态转换和唯一slug。
  2. 区分更新时间与核验时间。

参考结果: pending不能出现在公开列表。

预期产出: 字段字典与转换表。

检查: 所有公开记录都有明确发布条件。

03 / 检验边界数据

时间: 20-30 分钟

目标: 确认结构支持真实缺失与迁移

操作:

  1. 加入重复slug、缺图和旧日期样例。
  2. 观察列表、详情和管理员编辑。

参考结果: 未知核验日期不自动填当天。

预期产出: 异常记录处理结果。

检查: 默认值没有伪造来源或核验事实。

完成检查

  • 私有字段没有进入公开实体接口。
  • 所有公开记录都有明确发布条件。
  • 默认值没有伪造来源或核验事实。
03

清单、模板和关键词

用于项目记录和自查。

项目记录

  • 实体清单:____
  • 字段定义:____
  • 状态流转:____
  • 索引字段:____
  • 来源字段:____
  • 后台编辑项:____

字段字典

实体:Project;字段:id、slug、title、websiteUrl、category、sourceLinks、updatedAt、verifiedAt;类型:;必填:;唯一:;来源:;编辑权限:;是否公开:。Submission另存邮箱与reviewStatus,避免混入公开返回数据。

状态与迁移表

实体:;初始状态:;允许转换:;执行角色:;公开条件:;关联记录:;迁移前字段:;迁移后字段:;旧数据处理:;回退方案:。updatedAt表示编辑时间,verifiedAt仅在实际核对后变更。

关键概念

  • 实体清单
  • 字段定义
  • 状态流转
  • 索引字段
  • 来源字段
  • 后台编辑项

容易误判

  • 将邮箱返回公开接口
  • 用updatedAt冒充verifiedAt
  • 标题改变后破坏稳定关系
04

工具和参考资料

本篇涉及的工具和参考链接。

可参考工具

  • Notion
  • Tally
  • Airtable
  • ChatGPT
  • Codex

参考资料