我想知道是否有可能使用Neo4J数据库模式来存储汽车零件数据。我对任何事情都持开放态度,所以如果有更好的方法适合,请建议如何使用。
例如:一辆车有一个VIN、车架号和许多与之匹配的特定部件,同一辆车有不同的类型:例如,2007年本田雅阁CM2和2007年本田雅阁CM2 Type-S,两者共享许多相同的部件,但被认为是同一辆汽车(04636SED310ZZ),是适合两者的外部面板。
本田的零件命名系统与丰田的零件命名系统有很大的不同,但是,丰田有一个零件编号类别,与其他一些数字配对,定义一个零件。如52119-XXXXX将用于前保险杠。
我想其他汽车制造商也有不同的零部件系统。
如何创建一个数据库来存储许多不同类型汽车的零件数据(复杂性并不重要),哪种类型的数据库范例最适合这种场景?
我想象它的工作方式与Java接口的工作方式类似--有一个基本的"Car"接口,但"getCarPart()"函数的实际实现对于每个make都是不同的。
我真的不知道如何去设计,甚至思考这个问题,所以我会感谢你的帮助。
谢谢
1条答案
按热度按时间wrrgggsh1#
一个很好的开始是画一个你领域的图表模型,如果你手边有一个白板,效果最好,但是Arrows tool是一个很好的基于网络的图表工具。
我认为图形数据建模是一个迭代过程:
1.确定“事物”--域中的对象--〉这些成为节点
1.这些事物是如何相互联系的?--〉这些成为关系
1.什么是属性?--〉这些成为节点的属性,或者它们描述了两个节点之间的联系,可能是关系的属性。
1.考虑一下您的业务需求。您希望对数据提出哪些问题。您是否可以看到遍历图表以回答您的问题?如果不能,请调整您的模型。
通过使用Arrows进行此练习,我得出了以下属性图模型:
不同的汽车“子模型”在这里使用节点标签“Trim”来表示每个汽车模型的不同装饰。汽车零件可能适用于每个装饰,在这种情况下,它们连接到
CarModel
节点,或者零件可能只与汽车模型的装饰子集兼容。在这种情况下,我们可以建模(:Part)<-[:HAS_PART]-(:Trim)
的关系。接下来的步骤是提出你想对数据提出的问题,并尝试通过遍历图来回答这个问题,如果这个问题无法回答,那么就在图模型上迭代--添加属性、节点、关系,或者将属性提取到节点上,等等。