2014-10-28 117 views
0

我正在实际上在服务器列表上工作,我想知道如何以最佳方式设计mysql表。 指数将呈现表有关服务器的基本信息:地址,端口,在线玩家,地图,等级,... 服务器的说明,统计数据和其他的东西会在其他子页面“有关服务器的详细信息”MySQL设计数据库

在这种哪种设计更好?

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

或者只是

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

,并在将在子页面 “有关服务器的详细信息”

回答

0

通常在数据库中的表不一定反映您的网页,却反映你的数据之间的关系。

如果我们在这里你有2个表,ServersServerInformation你的第一个案例。你有一个外键ServerInformation.server_id,(我认为)引用Servers.id

在这种情况下你所暗示的是一个Server可能必须在ServerInformation表(即一个一对多的关系)的多个条目,都具有相同的server_id值,除非你做出unique,其中它会成为一对一的关系。

如果您使用第二种方法使用一个Servers表,您仍然只能获取索引页所需的字段。你会做一个简单的查询,只是让你需要的字段,例如:select id, user_id, host, port from servers

除非你在第一种方法非常特殊原因需要两个表分开(例如一些Server项没有ServerInformation条目,或者如果将其设置为nullable,您希望某些ServerInformation条目的server_id设置为null),则可能该一个表格方法更适合。

+0

太棒了,谢谢:) – san 2014-10-28 17:57:49

+0

如果答案是足够的,请选择它作为你的问题的答案 – jbx 2014-10-28 18:29:38

0

每一页上的信息放进什么样的信息呈现

ServersInformations() 

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

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

如果players列acually包含的球员名单,你应该做一个新表吧,例如

ServerPlayers(id, playerName, ServerId)

+0

谢谢!!! :) – san 2014-10-28 17:58:21