Database 如何为模块化小部件设计数据库

Database 如何为模块化小部件设计数据库,database,database-design,Database,Database Design,我真的被难住了,希望你们所有聪明的人都能帮助我 我在数据库设计方面的知识充其量只是中间路线。好得足以让我惹上麻烦。首先,我是一名程序员 我正试图建立一个网站,而后端数据库的设计让我感到困惑 为了便于解释,我将在这里给出一个有点做作的示例,但这个示例正好符合我需要实现的目标 想象一下,你正在为《汽车大战》或类似游戏的老派粉丝建立一个数据库。在这个游戏中,玩家可以从几辆基础车中选择一辆,然后定制它以在游戏中使用 每辆基础车都有一些属性供玩家定制,比如引擎、变速器和装甲。每辆车都有这些插槽,玩家可以将

我真的被难住了,希望你们所有聪明的人都能帮助我

我在数据库设计方面的知识充其量只是中间路线。好得足以让我惹上麻烦。首先,我是一名程序员

我正试图建立一个网站,而后端数据库的设计让我感到困惑

为了便于解释,我将在这里给出一个有点做作的示例,但这个示例正好符合我需要实现的目标

想象一下,你正在为《汽车大战》或类似游戏的老派粉丝建立一个数据库。在这个游戏中,玩家可以从几辆基础车中选择一辆,然后定制它以在游戏中使用

每辆基础车都有一些属性供玩家定制,比如引擎、变速器和装甲。每辆车都有这些插槽,玩家可以将适当的物品放入这些插槽中。除了这些通用插槽外,每辆车还有N个底座。虽然每辆车至少有一辆,但每辆车的数量不同,一辆大型车可能有十几辆或更多。玩家可以在这些坐骑上放置武器或实用物品。一旦玩家配置了他们的汽车,它将被保存为一个构建。这一构造基本上定义了他们选择的基础车、发动机、变速器和装甲的选择,以及他们在每个坐骑中放置的武器和物品。这是他们的个性化构建

在第一级,表布局非常简单。这就是我目前拥有的:

有一个CAR表,其中包含用于汽车基本统计信息的字段,以及指示其可以支持发动机、变速箱和装甲的字段。(例如,小型车可能只支持v4发动机和轻型装甲,而大型车可能支持v8发动机和重型装甲)

引擎、变速器和装甲表,定义玩家对这些物品的所有可用选择

有一个MOUNTS表,它定义了mount的大小、它所属的汽车以及它在汽车上的物理位置

当然还有武器表和物品表,定义了可以进入坐骑的武器和物品,以及控制什么可以进入坐骑的数据,比如大小

这是第一层,一切都很好。问题是第二层,它定义了在保存构建的情况下所有这些连接的方式。我只是不知道如何在保存的版本中连接汽车、坐骑和坐骑中武器/物品之间的所有点

在构建表中,我可以让它指向基础车,发动机、变速器和装甲的选择非常简单。储存他们选择的武器/物品变得有点棘手。即使我暂时忽略了我需要知道每个挂载物放在哪个挂载物上,事实仍然是我可以挂载N个武器/物品。每个构建都有一个可变的数量。所以我有一个一(构建)到多(武器)的关系,但是我如何定义这种关系,而不为每个构建创建一个唯一的武器或物品实例?当然,还有一个更为复杂的事实,那就是我不仅需要储存玩家选择的武器和物品,还需要储存玩家将它们放入的特定坐骑

现在,如果我为每件武器或物品创建重复的实例,额外的实例指向它所属的构建,坐骑存储在其中,那么我可能会解决这个问题,但要做到这一点,我需要为每件武器或物品创建副本,这看起来完全是愚蠢和浪费

我相信这个问题有一个简单的解决办法。我要么是瞎了眼,错过了它,要么是我缺乏数据库设计经验,无法看到我需要看到的东西。所以假装你们都是欧比-万·克诺比,你们是我唯一的希望

如果有任何要求,我一定会编辑此文件以提供更多详细信息。谢谢


编辑:不知道为什么它会重要,但为了完整的信息,我在我的网站上使用django,所以数据库被抽象掉了。我在本地使用SQLite进行开发,但live server使用MySQL。

创建一个附加表,其目的是定义项、装载和构建之间的链接


BUILDLINK表中的每个条目都是项目id、装载id以及它所属的构建的id。这将是与构建表的多对一关系。

因此,显然,键入所有这些内容、收集我的想法并总结问题的所有内容的过程,使我能够看到我遗漏了什么。我现在觉得自己真的很愚蠢,但我所缺少的只是我需要一个额外的表格来定义武器装载和建造之间的关系。听起来不错。你应该发表你的评论作为回答。过几天你就可以把它标记为正确的。你得不到任何分数,但它结束了问题,这将使你的个人资料看起来更好(如果你关闭了以前的问题,人们更有可能回答未来的问题)。