我想建模,分析和创建一个由纸牌游戏信息组成的数据库。每轮游戏都有一个ID,时间戳和4个或更多玩家(通常是4个)。我已经使用其属性集定义了我的播放器表。但是,由于每轮都有4名球员, 如何有效地实现轮次与球员之间的关系?
基本上每轮都有4个不同的玩家,具有相同的属性(具有不同的值)。为每个玩家设置一个属性(列)似乎很奇怪,因为我希望有一些链接到一个玩家表来保持我的'对象'独立和封装。 这是一轮与4名球员之间的一对多关系吗?
当我在纸上绘制模型时,它似乎更像是一个层次结构。例如,我有一个拥有 4个玩家的回合,而每个玩家拥有一手牌。 这是关系模型,层次模型,对象模型还是其他什么?
此外, 可以在SQL中完成吗?如果不是我应该使用什么? 任何帮助/建议都非常受欢迎,因为我所有的经验都是使用SQL中的关系数据库。
谢谢!
答案 0 :(得分:1)
基本上
Round Player
------------ -----------------
round_id player_id others_attri player_id info_attributes
然后,对于每一轮,你需要在Round中存储4行,具有相同的id和每个玩家ID,例如,Round为id,其中玩家1,2,3,4在其中。
Round Player
----------- -----------
1 1 date 1
1 2 date 2
1 3 date 3
1 4 date 4
player_id是player_id的一个关键点。
或者,如果您不想多次存储日期,请执行以下操作:
Round player_play Player
--------- ------------ -----------------
round_id info_attributes round_id player_id player_id info_attributes
Round player_play Player
------- ----------- -----------
1 date 1 1 1
1 2 2
1 3 3
1 4 4