扫码阅读
手机扫码阅读
DDD 中的多对多关系建模
251 2024-08-28
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
查看原文:DDD 中的多对多关系建模
文章来源:
TechLead 少个分号
扫码关注公众号
多对多关系的挑战与解决方法
文章讨论了多对多关系在软件建模中的难点及其对软件架构可能造成的问题。在一个具体项目例子中,作者经历了用户与空间间多对多关系管理的困难,发现这种关系导致权限管理复杂且业务需求难以满足。
传统数据库模型的限制
传统的数据库设计使用中间表来处理多对多关系,如项目中的"workspace_user_relation"表。然而,这种设计在技术实现和业务支持上均存在不足。例如,它难以管理用户权限,管理员的权限限制,以及中间表的语义不明确。
面向对象与关系数据库的鸿沟
关系数据库理论自1969年提出以来,它的集合论基础在数据处理上有独特优势,但是与面向对象的编程模型存在天然鸿沟。对象关系映射(ORM)软件试图解决这一问题,但多对多关系在面向对象中是一个难以处理的“隐藏模型”。
重新思考多对多关系
作者提出使用主体-客体思维来重新思考多对多关系。通过识别出“隐藏的模型”,如“工作空间-用户”,并为其命名(例如“空间成员”),可以将复杂的多对多关系简化为两个一对多关系,从而清晰化模型。
隐藏模型的归属问题
在解决了命名问题后,还需决定隐藏模型的归属。以“标签”系统为例,可以设计通用的标签系统,或者将标签与具体业务关联。这取决于业务重点和对聚合搜索能力的需求。
结论
模型建立需服务于业务需求。业务人员需要明确业务重心,并在模型设计中做出权衡和取舍。
想要了解更多内容?
查看原文:DDD 中的多对多关系建模
文章来源:
TechLead 少个分号
扫码关注公众号
TechLead 少个分号的其他文章
用分布式系统思考团队管理
一个团队本质上是一个由人构成的分布式系统,所以可以用分布式系统的一些模型来分析他们,通过这些模型让管理者能更为深入的理解团队管理的逻辑。
为什么工程师都需要一块白板
一家靠谱的软件公司的墙面上都有许多写字的白板,越是专业的软件公司,越会使用白板来进行讨论。白板甚至是一种文化,越来越多的公司在办公室提供可以写字的墙面和容易擦写的马克笔。
构建离线应用的注意事项
如果有一天,产品经理告诉你,你正在开发的软件需要支持离线使用呢?先别着急挠头,我们来看下软件需要在离线情况下遇到的挑战和问题,以及如何解决它们。
系统设计 | "胖瘦" BFF:常见的两种微服务形态
了解\x26quot;胖瘦\x26quot; BFF微服务架构的两种形态,它们的优缺点以及如何选择最适合的方案。
系统设计 | 数字化营销技术(MarTech)
数字化营销技术是一种新的营销理论,通过把数字化和营销结合的方式,整体全面地提高营销效果。
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线