Database 什么数据库适合实体之间的组合关系?
TLDR:正在寻找一个本地运行的免费数据库选项,它有助于合成。对象A由B、C、D组成。其中B、C与A的类型相同。我应该使用什么 我想尝试一些开源数据库。我正在玩一个有手工制作的游戏,深入到对象中找出我需要的资源有点麻烦。这似乎是一个通过数据库解决的好问题。我希望探索一个无sql选项,因为我没有太多的经验 用一个简单的人为的例子来阐明这个领域Database 什么数据库适合实体之间的组合关系?,database,database-design,nosql,Database,Database Design,Nosql,TLDR:正在寻找一个本地运行的免费数据库选项,它有助于合成。对象A由B、C、D组成。其中B、C与A的类型相同。我应该使用什么 我想尝试一些开源数据库。我正在玩一个有手工制作的游戏,深入到对象中找出我需要的资源有点麻烦。这似乎是一个通过数据库解决的好问题。我希望探索一个无sql选项,因为我没有太多的经验 用一个简单的人为的例子来阐明这个领域 A职员:需要5块木头 矛头:需要2个铁 矛:需要1根棍子,1个矛头 三叉戟:需要1根棍子,3个矛头,2个铁 如果我想建造2个三叉戟和1个矛,我的数据库查
- A职员:需要5块木头
- 矛头:需要2个铁
- 矛:需要1根棍子,1个矛头
- 三叉戟:需要1根棍子,3个矛头,2个铁
Resource
--------
Resource ID
Resource Name
以下是基于您的示例的一些行。我故意一枪接一枪地加上矛头。资源的顺序并不重要
Resource ID | Resource Name
---------------------------
1 Wood
2 Iron
3 Staff
4 Spear
5 Spearhead
6 Trident
接下来,您有一个ResourceHierarch表
ResourceHiearchy
----------------
ResourceHiearchy ID
Resource ID
Parent Resource ID (FK)
Resource Quantity
下面是一些行,同样基于您的示例
ResourceHiearchy ID | Resource ID | P Resource ID | Resource Quantity
1 6 null null
2 5 6 3
3 3 6 1
4 2 6 2
5 4 3 1
6 4 5 1
7 5 2 2
8 3 1 5
诚然,这是很难用手创造的。我可能在我的示例中犯了一些错误。应用程序的一部分允许您使用实际的资源名称创建资源和ResourceHierarch行
为了检索顶级资源的所有组件,您必须进行多次查询,首先从空的父ResourceHiearchy ID开始,然后查询资源。这是物料清单的缺点
BOM表的优点是对嵌套没有限制,您可以自由组合项目和资源来制作更多项目
如果您愿意,可以在资源表中标识带有标记的资源和项目。
您可能需要考虑一个图形数据模型,如JaNasGrand,其中节点(节点)可以是一个集合的成员(定义为另一个节点),通过关系(EDGE)。 这将允许您拥有您正在谈论的多子或多父关系 母亲与父亲结婚 孩子1,孩子2,孩子3。。。奇尔登 然后,所有人都将与母亲和父亲有一种“childOf”关系,并将成为集合中其他成员的“兄弟姐妹”,如边缘所示 有道理吗 以下是您可以拥有的更多类型的边标签和多重性: 披露:我为锡拉布工作,我们的数据库经常被用作JanusGraph实现下的存储引擎。还有许多其他类型的NoSQL图形数据库可以检出。找到适合您的用例和数据模型的 编辑:JanusGraph是开源的,Scylla也是: