1

我正在尝试用 C++ 编写一个分析扑克手的程序。我希望你使用 SQL 来存储有关手牌、玩家和会话的数据。

我对我想在我的会话和玩家表中存储什么有一个很好的想法,但是手表有点棘手。

单手牌需要包含所有玩家的姓名、他们的手牌(如果显示)、他们的筹码、日期、赌注等。问题在于保存事件。单手 6 人手可以像 fold-fold-fold-fold-raise,4$-fold 一样简单,但它可能会更长。

我能想到的唯一方法是创建一个名为“Events”的列并将操作存储为字符串“FFFFR,4-F”。

我必须有更好,更优雅的方式来做到这一点吗?

4

1 回答 1

3

将一系列事件存储在一行中违反了第一范式,并且被认为是不好的做法。

因此,与其将整个事件序列存储在单行中,不如将一系列行存储在另一个表中(John Bustos 建议使用“bets”,但您建议的列名称“Events”可能是一个很好的表名称:好)与之相关联。每个事件都将包含它所属的手牌的标识符,用于对事件进行排序的序列号。这两列将构成该表的主键。然后,您可以有一个列来存储事件的类型(ENUM可能对此有用)以及对于某些事件的附加数据,例如金额。

要列出查询中的所有事件,您可以生成多行,每个事件一个。或者您有一个子查询,它将所有这些行转换为文本,然后您可以使用GROUP_CONCAT.

于 2013-01-23T22:18:48.760 回答