Php Can';t为排行榜数据库设计提供体面的解决方案
我很难为我的数据库想出一个好的设计,我尝试了两个不同的例子,但没有一个像我希望的那样成功 这就是我的情况: 情景: 排行榜由多个服务器组成,一个服务器有一个名称,一个 登录地址和说明。玩家有名字和唯一ID。 玩家的不同动作与日期一起被记录下来 执行此操作时,这些是玩家可以执行的操作 执行:Php Can';t为排行榜数据库设计提供体面的解决方案,php,mysql,sql,Php,Mysql,Sql,我很难为我的数据库想出一个好的设计,我尝试了两个不同的例子,但没有一个像我希望的那样成功 这就是我的情况: 情景: 排行榜由多个服务器组成,一个服务器有一个名称,一个 登录地址和说明。玩家有名字和唯一ID。 玩家的不同动作与日期一起被记录下来 执行此操作时,这些是玩家可以执行的操作 执行: 他能杀人 他可能会被杀(死亡) 他的比赛时间在比赛结束时被记录下来 他能赢一场比赛 每个动作的日期都应该被记录下来,这样我就可以得到他的列表 过去一周、过去一个月、过去一年和总体的统计数据 我尝试的另一
- 他能杀人
- 他可能会被杀(死亡)
- 他的比赛时间在比赛结束时被记录下来
- 他能赢一场比赛
SELECT p.Name, COUNT(k.id) as DEATHS
FROM Players p
JOIN Kills k on k.killed_player_id = p.id
WHERE p.id = 3
GROUP ON k.id
根据您的描述,我建议使用以下表格:
Servers (id,servername)
Players (id,playername,description,etc)
Actions (id, actionid, actionname, details)
PlayerActions (serverid,playerid,actionid,timestamp)
PlayerGameTime (id, serverid, playerid, timeplayed, timestamp)
你是在要求别人为你设计数据库吗?我担心这可能会被认为是堆栈溢出的主题之外。统计与类型的关系是错误的。图中有1个统计信息,可以有许多类型,而这显然是它所不能的。正确的设计是合理的。你的设计在我看来还行(西蒙的观点除外)。你使用它的问题是什么?你也可以考虑当你完成它时,你需要从你的数据库中得到什么信息,然后从中恢复过来。你需要知道一个玩家被杀了多少次吗?还是你需要知道谁杀了谁?是记录每场比赛的比赛时间,还是一名球员所有比赛的总时间?你需要知道一个玩家没有赢多少场比赛吗?试着按照你的图表创建表格,然后添加演示数据。我想你会发现它完美地记录了你想要的。谢谢你的建议,我确实喜欢它,但是我认为Digital chris的那一款最适合我。但是,我也是Digital chris!:)@克里斯拉瓦,嘿,嘿。只能有一个,克里斯,显然不是!尽管我认为我们可以在这个网站上学会和平共处,只要我们小心不要再踩到对方的脚。:)我做了一些调整,我在桌面游戏动作中添加了一个field playergame_id,并删除了PlayerActions中的服务器id,这样它还可以让我获得一个玩家在特定游戏中执行的动作列表:)@MaximGeerink,看起来可以正常工作,只要你不关心某个游戏发生在哪个服务器上(即,只有一个服务器池,而您没有每个服务器的排名)
Servers (id,servername)
Players (id,playername,description,etc)
Actions (id, actionid, actionname, details)
PlayerActions (serverid,playerid,actionid,timestamp)
PlayerGameTime (id, serverid, playerid, timeplayed, timestamp)