扫码阅读
手机扫码阅读
多对多关系解耦的数学原理
194 2024-08-27
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
查看原文:多对多关系解耦的数学原理
文章来源:
TechLead 少个分号
扫码关注公众号
文章摘要:少个分号
本文讨论了在面向对象设计中多对多关系的解决方案和数学证明过程。作者建议在实际业务中避免使用多对多关系,并提出通过发现中间模型来拆分成两个一对多关系。以订单和商品的关系为例,通过将商品转化为订单项,实现了多对多到一对多的转化。
01. 集合论和数据库
文章利用集合论的概念来形式化关系数据库中的多对多关系。集合论用于研究集合的结构和性质,而关系数据库正是建立在集合论基础之上。关系通过有序对的集合来表示,而数据库中的表可以看作是元组模式和记录的集合,即 n 元关系的集合。
02. 证明
作者通过数学方式描述了多对多关系,并提出使用中间表来消除这种关系。中间集合由主键构成的元组,可以通过关系的合成原理得到一对多关系。进一步分析了当存在双向的多对多关系时,是否能够通过中间表进行等价转换。通过对集合 C1 和 C2 的分析,作者指出它们在数据库中并不总是等价的,取决于业务场景是否允许。
03. 应用
文章探讨了多对多关系模型在实际应用中解耦耦合的本质和理论基础。作者定义了计算机中依赖的概念,以及在关系数据库中表连接的依赖关系。针对多对多问题,作者提出需要中间表来解决主键重复和信息冗余问题,并强调中间表并非仅仅是关系表,而是具有同等地位的表。文章还指出双向关联关系可能造成环形耦合,建议通过剪断一段关系来实现解耦。
想要了解更多内容?
查看原文:多对多关系解耦的数学原理
文章来源:
TechLead 少个分号
扫码关注公众号
TechLead 少个分号的其他文章
低质量的需求耽误高质量的工程师
错误的需求往往不会责备需求的提出方,因为互联网时代需要快速 \x26quot;试错\x26quot;,而纠正需求所产生的工作却落到了工程师头上。
研发自测之路:从"救火"到自测
哪有什么测试,自己点两下没报错就行了,反正上线后用户就是公司的测试。“互联网公司不需要测试人员,用户就是测试”这是老板的原话。
使用 ArchUnit 守护分层架构
ArchUnit 是一个小型、简单、可扩展的开源 Java 测试库,用于验证预定义的应用程序体系结构和约束。
DDD clinic:“千层饼” 架构之痛
使用 DDD 后,代码变多了。一个简单的功能需要修改很多类,需要经过很多层的转换才能实现。\x0a\x0a这种架构,我们可以形象的称之为 “千层饼”架构。
系统设计 | 如何生成 PDF?
一种导出 PDF 的方案,有用可以收藏。
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线