我正在尝试为一组非常多样化的互连对象开发数据模型。随着应用程序的成熟,支持的对象类型将显着增加。我想避免在添加新对象类型时修改模型/模式。
举个简单的例子,假设我从人和建筑物的模型开始。一个建筑物可以有多个所有者;一个人可以拥有多个建筑物;一个人可以住在房子里,在办公室工作……未来的版本可能会增加汽车和公司。汽车可以有所有者,公司可以制造汽车,人们可以为公司工作等。大多数关系是多对多的,有些是一对多的,很少是一对一的。
虽然“所有者”、“雇主”或“制造商”等概念可以被视为“建筑物”、“公司”或“汽车”对象的属性,但我不想重新定义数据模型以支持新属性类型。
我目前的想法是将其建模为类似于图的模型,其中每条数据都是它自己的节点。节点对象将非常简单:
- 唯一标识符
- 姓名(人类代表)
- 节点类型
- 关系
扩展前面的示例,可能的节点类型将是:
- 人
- 车
- 公司
- 建造
关系将是:
- 节点 A
- 节点 B
- 关系类型 - 使用、拥有、拥有、是等
我有几个问题:
- 这种方法有什么缺点吗?
- 是否有描述这一点的现有模式或模型?
- 有更好的方法吗?