MySQL设计数据库

时间:2014-10-28 17:00:05

标签: php mysql

我实际上在服务器列表上工作,我想知道如何以最佳方式设计mysql表。 索引将呈现表格,其中包含有关服务器的基本信息:地址,端口,在线玩家,地图,等级,... 服务器描述,统计数据和其他内容将在其他子页面中#34;有关服务器的更多信息"

在那种情况下哪种设计更好?

Servers(id, user_id, host, port, ...)
ServersInformations(id, server_id, players, map, ...)

或者只是

Servers(id, user_id, host, port, players, map, rank)

并在

ServersInformations()

将在子页面中呈现的其他信息"有关服务器"

的更多信息

2 个答案:

答案 0 :(得分:0)

每页上的信息真的无关紧要。唯一重要的是您要存储的数据类型。除了包含多个值的任何列之外,您应该将有关服务器的所有信息存储在单个表中。

例如,如果您的players列只是玩家数量的计数,那么这可以是Servers表格的一部分。

如果players列实际上包含播放器列表,则应为其创建一个新表格,例如

ServerPlayers(id, playerName, ServerId)

答案 1 :(得分:0)

通常,数据库中的表不一定反映您的页面,但它们反映了数据的关系。

如果我们采取您的第一个案例,您有2个表格,ServersServerInformation。你有一个外键ServerInformation.server_id(我推测)引用Servers.id

在这种情况下,您所暗示的是Server可能在ServerInformation表中有多个条目(即一对多关系),所有条目都具有相同的{{1} } value,除非你创建server_id,在这种情况下它变为一对一的关系。

如果您使用一个unique表进行第二种方法,您仍然只能获得索引页所需的字段。您将执行一个只获取所需字段的简单查询,例如:Servers

除非您有一个非常具体的理由让第一种方法将两个表分开(例如,某些select id, user_id, host, port from servers条目没有Server条目,或者您想要一些{{1如果将ServerInformation设置为ServerInformation,如果将其设置为server_id,则可能只有一个表格方法更合适。