Database 一个实体中的多个一对一关系

Database 一个实体中的多个一对一关系,database,Database,我正在为我的游戏设计一个数据库,我偶然发现了一个小的不确定性 我的角色应该有两个物品容器——一个用于库存,另一个用于装备物品 我想知道我的解决方案是否被认为是一种不好的做法,我应该创建另一个名为“character\u container”的表吗 谢谢,您的用户可以有多个游戏角色。因此,在DB中,您需要一个带有列“user\u ref char(36)referenting user(id)”的table game_字符。库存也是如此:在数据库中,您需要一个表“item”(或“containe

我正在为我的游戏设计一个数据库,我偶然发现了一个小的不确定性

我的角色应该有两个物品容器——一个用于库存,另一个用于装备物品

我想知道我的解决方案是否被认为是一种不好的做法,我应该创建另一个名为“character\u container”的表吗


谢谢,

您的用户可以有多个游戏角色。因此,在DB中,您需要一个带有列“user\u ref char(36)referenting user(id)”的table game_字符。库存也是如此:在数据库中,您需要一个表“item”(或“container”),其中引用了游戏角色:“game\u char\u ref char(36)reference game\u character(id)”。 在Java中,情况正好相反。您有一个具有游戏角色集合的用户和一个具有项目集合的游戏角色。
在适当的设计中,我建议使用一个包含游戏中所有可用物品及其属性的表“Item”,以及一个链接表“item4character”,将物品分配给具有计数和属性的游戏角色(如果物品在库存、箱子或磨损中)。

为什么不只使用一个库存(地图),并且每个物品都有一个boolena属性“waering”?如果两个容器具有相同的属性,并且您从未计划以不同的方式缩放它们,那么您的设计是好的。但是,如果您希望它们在属性上有所不同,则需要一个单独的表。查看您的表,这是错误的。表“容器”必须引用“游戏角色”,所以您可以在容器中放置许多属于角色的物品。@物品上的Hajo Boolean属性可能会导致新问题,因为装备的每个可穿戴物品都不完全在库存中。关于容器有一个对“game_character”的引用,这是行不通的,但正如您所看到的,“user”有一个对容器的引用(就像一个全局容器或一个存储)。