惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
P
Palo Alto Networks Blog
C
Cisco Blogs
The Hacker News
The Hacker News
T
Threatpost
S
Schneier on Security
K
Kaspersky official blog
Spread Privacy
Spread Privacy
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
量子位
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
Security Latest
Security Latest
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
博客园 - 叶小钗
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
News and Events Feed by Topic
爱范儿
爱范儿
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cisco Talos Blog
Cisco Talos Blog
GbyAI
GbyAI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
T
Tenable Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
Vulnerabilities – Threatpost
Forbes - Security
Forbes - Security
博客园 - 三生石上(FineUI控件)
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News and Events Feed by Topic
V
V2EX
Webroot Blog
Webroot Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale
M
MIT News - Artificial intelligence
Scott Helme
Scott Helme
Simon Willison's Weblog
Simon Willison's Weblog
L
LangChain Blog
W
WeLiveSecurity
Cloudbric
Cloudbric

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理, 企事业单位数字化的业务供需本质 – 人人都是产品经理, 医疗智能体·第1讲——医疗信息化重构:从“辅助软件”到“自主智能体”的范式转移 – 人人都是产品经理, 粉丝量就是空气!!! – 人人都是产品经理, 用户说“薯片碎了”,机器回“要买吗?”:意图识别的翻车与破局 – 人人都是产品经理, RAG召回准确率从75到90 我做对了这三件事 – 人人都是产品经理, AI大事件:Anthropic改收费、OpenAI发安全版、手术机器人纳入医保、阿里发布”秒悟” – 人人都是产品经理, Chrome 推出 Skills 新功能,Agent 重塑上网方式 – 人人都是产品经理, GitHub前创始人拿了a16z的1700万美元,做Agent时代的Git – 人人都是产品经理 拷贝或克隆其他 Flutter OH 项目到本地后无法运行 – 人人都是产品经理, 优惠券设计:优惠券创建 – 人人都是产品经理, 不用死磕文档!AI 助手 1 小时搞定飞书 CLI 安装 + 配置 + 知识库 – 人人都是产品经理, 用小龙虾做竞品分析报告:从2天到20分钟,我是怎么做到的 – 人人都是产品经理 用小龙虾做市场分析报告:搞懂这3个公式,市场规模不再靠猜 – 人人都是产品经理, 你早就在做 Harness 工程,只是不知道它叫这个名字 – 人人都是产品经理, Think Long就够?你可能想多了! – 人人都是产品经理, 货代SRM实战:供应商准入怎么做,才能让资源池不是通讯录而是可交付网络? – 人人都是产品经理, 如何做好用户调研?详解基本技巧 – 人人都是产品经理, 木鸟、途家、美团对打,平台春天行动开“卷” – 人人都是产品经理, 入职才发现公司不靠谱?小红书从业者求职避坑指南 – 人人都是产品经理, 美国 AI 三巨头联手封堵,中国 AI 突围之路在何方 – 人人都是产品经理, 小红书,放在需求对面的镜子 – 人人都是产品经理, AI 会带来大规模失业吗? – 人人都是产品经理, 从出单到补货前,我第一次犹豫:该不该放大? – 人人都是产品经理, Flutter 三方库鸿蒙化适配:5 种高效检查方式,快速判断是否需要适配 – 人人都是产品经理, 从做产品进阶拿结果:医美机构产品经理转岗科室运营经理 – 人人都是产品经理, 阿里HappyHorse,一场关于“Token经济”的阳谋 – 人人都是产品经理, To B AI:客户留存落地的观察与思考 – 人人都是产品经理, AI产品的“生命线”——数据采集、标注、清洗的产品化设计 – 人人都是产品经理, 谈谈AI Agent(二):当“孩子”能自己“体验世界”时,你该学什么? – 人人都是产品经理, UI/UX设计师的3层能力进阶,前两层让你活下来,第三层…才是真正的分水岭 – 人人都是产品经理, 2分钟 → 30秒,效率提升75%:B端产品经理如何用「规则枷锁」驯服AI幻觉? – 人人都是产品经理, 还没来得及学OpenClaw,来了个更猛的:Hermes Agent – 人人都是产品经理, AI日报:宇树机器人跑出10m/s刷新世界纪录 – 人人都是产品经理, 一文说透基金互金如何用情绪价值引导用户决策做转化 – 人人都是产品经理, 当浏览器开始替你”看”网页:AI 浏览器正在亲手拆掉它脚下的那张网 – 人人都是产品经理, 0代码,一天时间我Vibe Coding了个网站 – 人人都是产品经理, Hermes 和 OpenClaw 之争,Agent 的能力应该“装上去”还是“长出来”? – 人人都是产品经理 视频生成的“桌子”,字节Seedance 2掀完,阿里快乐马掀 – 人人都是产品经理, 从听不懂到完全信任:我的 Codex 深度产品体验 – 人人都是产品经理, 当虚拟偶像有了北京户口,与真人偶像还有什么区别? – 人人都是产品经理, 会说,远远比会做更重要 —— 对 SBTI 爆火现象的五层观察 – 人人都是产品经理, AI产品经理必看:当“搭环境”比“选模型”更重要,你的认知还在2024年吗? – 人人都是产品经理, 2026年AI产品商业化核心逻辑:从功能demo到规模化营收的3个必破卡点 – 人人都是产品经理, 京东围绕供应链,卷起裤腿下场的那些事儿 – 人人都是产品经理, SBTI一夜刷屏:它赢在了“太会说人话” – 人人都是产品经理, 折扣零售的真相:不是便宜,而是价值感! – 人人都是产品经理, 和甲方吵了一架,最后加钱做了——我学到的ToB产品经理生存法则 – 人人都是产品经理, 和几位小红书操盘手聊了8小时,干货全在这 – 人人都是产品经理, 智谱GLM-5.1登场,开源模型首超Opus4.6!!! – 人人都是产品经理 Anthropic收入凭什么反超OpenAI,终于有人把这事说清楚了 – 人人都是产品经理, 史上最有故事感的技术报告——Claude最强模型Mythos 7个极其精彩的细节 – 人人都是产品经理, 模型不是壁垒,Harness 也不是 – 人人都是产品经理, 抖音本地生活业务思考21 – 人人都是产品经理, Superpowers:145k Star的AI编码框架,到底是什么来头? Superpowers:145k Star的AI编码框架,到底是什么来头? – 人人都是产品经理, OpenAI 的路走错了,Anthropic Harness 解法启示:模型需要实践专科生 – 人人都是产品经理, 画原型图的前一步:设计站点地图 – 人人都是产品经理, 给 DeepSeek 的最后一封催更信 – 人人都是产品经理, 手把手教你用 Claude Code 搭建 AI 营销团队:5 个 Agent、12 项技能,独立完成研究、写作、设计全流程 – 人人都是产品经理, 你以为大模型在学语言?不,它在重新发明语言学 – 人人都是产品经理 所谓Skill,不过是AI时代的工业垃圾 – 人人都是产品经理, 聊一聊内容传播的几个方法 – 人人都是产品经理, 当平台开始吃掉生态:从 OpenClaw 被封杀,读懂 Anthropic 的这盘棋 – 人人都是产品经理, 你装了 10 个 AI 插件,Obsidian 还是一个文件夹 – 人人都是产品经理 关于AI智能体架构演进的系统性思考:从单体试水到多体协同的重构 – 人人都是产品经理, 当“人”变成Skill,我们又该何去何从? – 人人都是产品经理 Mythos 事件:前沿 AI 治理的意外实验 – 人人都是产品经理, 货代CRM:信用与风险管理怎么做,才能把坏账风险拦在放货之前? – 人人都是产品经理, 从HR收集自拍照到员工自助录入——我见证了园区人脸识别从”不可用”到”真好用”的全过程 – 人人都是产品经理 千问闯关AI混沌期:阿里画靶,吴嘉张弓,马云射箭? – 人人都是产品经理,
数据基础(一)双向关联
产品子鱼 · 2025-11-07 · via 人人都是产品经理

在B端系统中,数据不是孤岛,而是网络。本文从“双向关联”这一基础概念切入,系统梳理其在业务建模、权限设计、流程驱动等场景中的应用逻辑。这是一次对数据底层结构的回归,也是构建高质量系统认知的起点。

B端系统的本质作用是,用户操作可视化的系统功能,对底层数据进行更改,并呈现操作结果,即显示数据。

数据表与数据表之间通常会有某种关系,除单向关联外,双向关联也很常见,同时存在一些问题。

一、数据表的双向关联

数据表A的字段关联数据表B的字段,同时数据表B的字段也关联数据表A的字段。

注意:被关联字段需具备唯一性和非空性,常见为“主键”(Primary Key)。

例如:

①数据表_用户

②数据表_部门

说明:

“数据表_用户”通过字段“department_id”外部链接“数据表_部门”。

“数据表_部门”通过字段“user_id”外部链接“数据表_用户”。

二、数据查询利弊分析

2.1 优点

1、查询效率提升

双向关联允许从任一端直接查询另一端的数据,无需通过中间表或多层嵌套查询。

2、业务逻辑更直观

在某些业务场景中,双向关联更符合现实逻辑。例如,“用户” 表和 “部门” 表,用户表存部门ID,部门表存用户ID,双向关联能清晰体现两者的关系。

3、简化特定业务逻辑

对于需要双向操作的场景,双向关联可直接通过字段判断关系,无需额外逻辑计算,降低代码复杂度。如:社交软件中的“好友关系”,A是B的好友,B也是A的好友。

4、数据完整性约束

在数据库层强制保证了数据的逻辑一致性,避免了“幽灵数据”。例如:用户表中某用户记录被删除后,订单表中关联该用户的订单未被同步删除,这些订单就成了“幽灵订单”。

2.2 弊端

1、数据冗余与一致性

双向关联本质上是同一关系的重复存储(如A→B和B→A指向同一关系),可能导致冗余。若更新其中一端时未同步更新另一端,会出现数据不一致(例如,A的关联字段已修改,B的关联字段仍为旧值),破坏数据完整性。

示例:如果要将用户“张三”从“客服A”转移到“客服B”

①更新users表:将“张三”的customer_id改为“客服B”的ID。

②检查“客服A”的user_id是否还是“张三”,如果是,需要将其置为NULL或指派给其他人。

③检查“客服B”是否需要将 user_id更新为“张三”。

风险:

任何一步失败,都会导致数据矛盾。例如,“张三”在user表里属于“客服B”,但“客服A”的主要联系人是“张三”。

2、循环依赖问题

在复杂业务中,双向关联可能导致表之间的循环依赖(如A关联B,B关联C,C关联A),增加数据库设计的耦合度,不利于后期扩展和重构。“先有鸡还是先有蛋”。

例如:创建“客服A”时,想指定“张三”为主要联系人,但此时“张三”可能还没有被创建,或者他的customer_id还没有设置。

3、维护成本高

无论是新增、删除还是更新数据,都需要同时操作两端的关联字段,否则会产生“幽灵数据” 或无效关联。

三、常见解决方案

3.1 中间关系表

1、撤销“表A”和“表B”中直接指向对方的字段。

2、新建一个“关系表AB”,它至少包含两个外键字段:A_id和B_id,分别指向“表A”和“表B”的主键(唯一且非空字段)。

3、中间表本身也可以有自己的主键(如一个自增id)和额外的属性字段。

数据关系表

3.1.1 优点

1、支持多对多关系,避免数据冗余

举例:

①若直接在 “学生表” 中添加course_ids字段存储所选课程 ID,会出现 “一个学生对应多个课程 ID,字段值重复且难以维护”;反之在 “课程表” 中添加student_ids也同理。

②中间表(如student_course)仅存储student_id和course_id,每条记录代表 “一个学生选了一门课程”,无冗余且关系清晰。

2、降低表结构耦合度,增强扩展性

中间表将关联关系与主表数据分离,主表无需存储与自身业务无关的关联字段,符合 “单一职责原则”。

3、解决了数据一致性与循环依赖

①一致性:关联信息只在一个地方(中间表)存储和维护,从根本上杜绝了双向直接关联中两个字段可能不同步的风险。

②循环依赖:创建顺序变得简单。可以先创建用户,再创建客户,最后在中间表里建立两者的联系。

4、查询灵活,支持复杂关联统计

中间表便于通过JOIN操作实现双向查询,且支持按关联关系筛选、统计数据。

5、历史记录与审计追踪

每一条关系都是一条独立的记录,你可以轻松地:

①记录关系的创建和删除时间,追踪变化。

②实现“软删除”,只将关系标记为失效,而不真正删除记录,以备审计。

3.1.2 弊端

1、增加查询复杂度

①关联查询时必须通过中间表进行JOIN,相比两表直接关联(如一对多的单向外键),SQL语句会更长,涉及的表更多。

②查询性能下降。多一次JOIN操作,理论上会比直接查询一个字段更耗时。

2、数据冗余与维护成本

中间表会增加数据库的表数量和存储开销(尤其在关联关系频繁的场景下,中间表可能产生大量记录)。

3、业务逻辑的间接性

不直观。关联关系被转移到了另一个表中,业务代码不能直接从表A或表B的字段中直观地看到关系,必须通过查询中间表来获取。

不适用于一对一或一对多的关系。

四、数据表与原型设计

4.1 原型设计需关注的核心问题

1、反问自己:这个交互操作,背后是在改变哪个数据表的哪个字段?

①明确数据关系与功能的匹配性

厘清页面涉及的表关系(一对多 / 多对多),确保功能设计符合底层数据结构的特性。

②避免操作流程导致幽灵数据

设计增删改查流程时,需考虑关联数据的联动处理(如删除主数据时,子数据是否保留 / 删除 / 置空)。

2、反问自己:这个页面展示的信息,需要连接哪几张表?

③平衡“用户直观性”与“数据规范性”

用户视角可能希望 “直接编辑关联数据”,但技术上需通过中间表或外键约束实现,需在原型中设计合理的交互逻辑(如弹窗选择、批量关联),而非强行 “直观化” 导致数据混乱。

④提前规划关联数据的查询与展示

多表关联的查询结果(如 “用户 + 订单 + 商品”)需明确展示维度。

3、避免在原型中模糊了“关系”与“实体”的界限,当关系带有重要属性时,它在概念上已经升格为一个需要被独立管理的实体。

4.2 示例说明

4.2.1  一对多关系的功能设计(以“用户-订单”为例)

1、错误设计

在“用户详情页”中设计“直接编辑订单信息”的功能(如在用户表单中嵌入订单列表的编辑框)。

  • 问题:用户表与订单表是一对多关系(订单表通过user_id关联用户),订单属于独立子表数据。若在用户页直接编辑订单,会混淆“用户主数据”与“订单子数据”的边界,且技术上需跨表更新,易引发数据不一致。

2、合理设计

  • 在“用户详情页”通过“查看订单”按钮跳转至独立的“订单列表页”(筛选条件为当前用户 ID);
  • 订单的新增/编辑在独立页面完成,仅通过“用户选择器”关联用户(本质是设置user_id)。

优势:符合一对多的“子表依赖主表”逻辑,操作流程与外键关联规则一致,避免数据混乱。

3、进一步分析说明

4.2.2 一对多关系的删除联动设计(以“商品-评论”为例)

1、错误设计

设计“删除商品”按钮时,仅删除商品表记录,未处理关联的评论表数据(评论表仍保留product_id指向已删除商品)。

  • 问题:评论成为幽灵数据,后续 “按商品查评论” 时会出现 “无对应商品的评论”,统计或展示时产生混乱

2、合理设计

  • 方案1(彻底删除):删除商品时,弹窗提示“此操作将同时删除该商品的所有评论,是否确认?”,确认后通过事务同步删除商品和关联评论;
  • 方案2(逻辑删除):商品表添加is_deleted字段,删除时标记为“已删除”,评论表查询时过滤掉关联“已删除商品”的记录(前端不展示,但数据保留)。

优势:通过流程设计避免幽灵数据,符合“主表删除需处理子表关联”的原则。

4.2.3 多对多关系的功能设计(以“学生-课程”为例)

1、错误设计

在“学生详情页”设计“课程ID输入框”,允许用户手动输入多个课程ID(如“1,2,3”),并在“课程详情页”同步设计“学生ID输入框”。

  • 问题:对应数据库中“学生表存course_ids、课程表存student_ids”的错误设计,违反原子性原则,且页面中手动输入多ID易出错,后续查询/统计需解析字符串,体验极差。

2、合理设计

  • 引入“选课管理”中间页面(对应中间表student_course),作为学生与课程的关联入口;
  • 在“学生详情页”点击“选择课程”,弹出“课程选择弹窗”(多选框形式),选中后提交即向中间表插入多条(student_id, course_id)记录;
  • 在“课程详情页”点击“查看学生”,通过中间表关联查询并展示选课学生列表。

优势:交互逻辑与中间表设计匹配,用户无需感知底层关联,通过“选择”而非“输入ID” 完成操作,既符合多对多关系,又提升体验。

3、进一步分析说明

4.2.4 有属性的多对多关系的功能设计(以“学生-课程”为例)

1、错误设计

在“学生详情页”直接罗列课程名称,未设计“开课日期、成绩”等关联属性的展示区域。

问题:学生与课程的多对多关系中,中间表通常存储关联属性,若页面只展示课程名称,会丢失核心业务数据(用户无法查看“课程开课时间或课程总成绩”)。

2、合理设计

在学生详情页以“表格”形式展示关联课程,列信息包括“课程名称、开课时间、课程总成绩”,其中“开课时间、课程总成绩”来自中间表。

优势:完整呈现多对多关系中的关联属性,符合业务逻辑(学生与课程的关联不仅是“包含”,还需记录交易细节)。

3、进一步分析说明

本文由 @产品-子鱼 原创发布于人人都是产品经理。未经作者许可,禁止转载

题图来自Unsplash,基于CC0协议