Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 设计我们的数据库、表结构、关系数据库_Database - Fatal编程技术网

Database 设计我们的数据库、表结构、关系数据库

Database 设计我们的数据库、表结构、关系数据库,database,Database,因此,我们正在构建某种“辩论”游戏。有不同的游戏类型,决斗和小组讨论,它们都有一些明确的规则,比如辩论的长度,参与者的限制等等 debates id title body created modified debate_posts id debate_id body user_id created modified debate_participant

因此,我们正在构建某种“辩论”游戏。有不同的游戏类型,决斗和小组讨论,它们都有一些明确的规则,比如辩论的长度,参与者的限制等等

debates
    id
    title
    body
    created
    modified

   debate_posts
        id
        debate_id
        body
        user_id
        created
        modified

debate_participants
    user_id
    debate_id
我需要知道的是,我如何检查辩论何时开始(必须至少有两名参与者),我是否应该在第二个参与者加入辩论时存储一些时间戳或类似的东西

我想知道的第二件事是我如何定义赢家,我是否应该有第三个表格,定义辩论的“赢家”、用户id和辩论id

我不太确定我应该在这个问题上补充什么样的细节,但是如果你能提供什么,我很乐意听到

更新


辩论者可以发表帖子,直到时间结束,然后如果哪个用户/组获胜,就会有其他用户投票。

我想你需要第二个参与者加入的时间戳才能知道辩论何时开始。任何时候,用户加入辩论查询辩论参与者,查看该特定辩论中有多少不同的用户,如果有,则新参与者将是第二个,并在辩论中设置开始时间戳

另一种确定辩论何时开始的方法是,在“辩论”posts表中查找第二个用户在辩论中发表帖子的最早时间


要定义赢家,如果最多有一个赢家,您可以在辩论中添加一个赢家id字段,该字段是存储用户的关键。

到底是什么定义了谁赢了?此外,您是否需要跟踪每次修改,还是只跟踪最后一次修改?您当前的结构只允许对记录进行最后一次修改。注意:您使用“user_id”,但在其他表中只使用“id”。我猜那是一个连接表?在我正在玩的一个应用程序中,我有一个类似的结构,所以除了那些挑剔的东西之外,对我来说还不错。我更新了一些细节。我的结构只允许最后一次修改是什么意思?顺便说一句,表名应该是单数的(或者更准确地说,应该代表一行,所以是
discussion
,而不是
discussions
)。我所说的“只允许最后一次修改”是指“修改时间”因此,如果给定的辩论帖子发生了三次更改,那么您将只拥有最后一次更改的时间戳。也许可以。你是如何记录用户投票的?我看不到这个结构中有任何能容纳选票的东西。这将对如何记录获胜者产生影响。取决于辩论类型,一个或多个获胜者之间可能会有所不同。我个人不会在辩论表中添加winner_id字段,因为这样您就开始使用“null”表示尚未决定获胜者。我一般不喜欢使用空值,当它确定状态时就不那么喜欢了。但这可能是个人的选择。要处理多个用户并更新当前获胜的用户,您可以保留一个投票表,该表的字段为:voter_id和vote_for_id(不确定该字段的最佳名称)。然后,你可以通过计算投票给id的票数并将其限制在前N名来检索辩论中的前N名辩论者。当然,但有没有办法适当区分投票方式,比如说有两种不同的获胜方式,一种是“用户”投票,比如说当前辩论的帖子,第二种是,比如说2-5个用户?我想我需要一种方法来说明这是一场什么样的辩论,还有一种方法来说明这些新用户投票支持哪一个,对吗?