这是一个数据结构/映射问题。我正在使用MSSQL,.NET和EF(以及MVC,如果这很重要)。我有一张桌子代表一副牌。卡的状态是:
......并且可以有X个玩家。我有一张表代表玩家的桌子,有自己独特的钥匙。假设每个玩家都在一个游戏中,并且在一个游戏中有一副牌。
起初,我认为玩家和卡之间存在一对多的关系,由数据库中的外键强制执行。播放器1P具有卡1C,2C和4C,因此卡1C,2C,4C和“1P”在PlayerID下。然后有一个位字段来表示卡是面朝上还是面朝下。这适用于州3和州4.
我应该如何处理状态1和2?一些选择:
想法?提前致谢。
答案 0 :(得分:0)
您可以尝试这样的架构:
表格PLAYER
,CARD
和DECK
希望非常清楚。
LOCATION_TYPE
是可能适用的各种地点的列表。这包括诸如“在玩家的手中”,“在玩家面前”,“在牌组中面朝下”和“弃牌堆”之类的东西。您可以使用LOCATION_TYPE
的物理表,也可以使用枚举。表格的优势在于您可以包含一些业务规则,例如位置类型是否需要PLAYER
中CARD_LOCATION
FK以及该卡是可见还是不可见(面朝上/朝下)。
CARD_LOCATION
是告诉您每张卡在任何给定时间的位置的交叉点。您的Player.Cards导航属性将与您的Card.Location导航属性一样正常。值得注意的是,CARD_LOCATION
到PLAYER
的FK 可选。