如何避免数据模型互相引用形成环?
数据模型互相引用形成环是指用户在应用设计态进行数据模型设计中,对象之间的关联关系形成了一个闭环。例如,在应用设计态中有“部门”、“员工”和“项目”三个数据实体。如果“部门”包含多个“员工”,“员工”又参与多个“项目”,“项目”又归属于多个 “部门”,并且这些关联关系形成了一个循环引用,就会出现引用成环的情况。
数据模型引用成环的常见场景
- 两个实体间相互引用
- 多个实体间相互引用
- 实体和接口模型间相互引用
例如,接口模型A组合参考了数据实体/关系实体B,数据实体/关系实体B参考了数据实体/关系实体C,数据实体/关系实体C通过接口模型A实现功能。
图3 实体和接口模型间相互引用
- 实体和关系实体的源端/目标端间相互引用
例如,数据实体/关系实体A参考了多对多关系的关系实体B,关系实体B的源端实体C参考了数据实体/关系实体A,关系实体B的目标端实体D也参考了数据实体/关系实体A。
图4 实体和关系实体的源端/目标端间相互引用
- M-V模型实体和其他实体间相互引用
例如,M-V模型数据实体A的主对象AMaster参考了数据实体/关系实体B,数据实体/关系实体B参考了M-V模型数据实体A的版本对象。
图5 M-V模型实体和其他实体间相互引用
数据模型引用成环的影响
用户对应用进行发布操作时,引用成环会导致应用中的模型数据无限解析,出现栈溢出错误,最终导致应用发布失败。
解决方案
在应用设计态构建数据模型时,建议合理的设计数据模型架构,并使用合适的数据模型关联方式。对于已构建的数据模型,建议定期审查和优化。
如果已存在引用成环的数据模型,您可以先通过解耦(删除)关联关系的方式打破循环。后续可以根据业务逻辑重新划分数据模型及其关联关系,对数据模型进行重构,以确保数据模型的合理性和高效性。