我实际上在服务器列表上工作,我想知道如何以最佳方式设计mysql表。 索引将呈现表格,其中包含有关服务器的基本信息:地址,端口,在线玩家,地图,等级,... 服务器描述,统计数据和其他内容将在其他子页面中#34;有关服务器的更多信息"
在那种情况下哪种设计更好?
Servers(id, user_id, host, port, ...)
ServersInformations(id, server_id, players, map, ...)
或者只是
Servers(id, user_id, host, port, players, map, rank)
并在
ServersInformations()
将在子页面中呈现的其他信息"有关服务器"
的更多信息答案 0 :(得分:0)
每页上的信息真的无关紧要。唯一重要的是您要存储的数据类型。除了包含多个值的任何列之外,您应该将有关服务器的所有信息存储在单个表中。
例如,如果您的players
列只是玩家数量的计数,那么这可以是Servers
表格的一部分。
如果players
列实际上包含播放器列表,则应为其创建一个新表格,例如
ServerPlayers(id, playerName, ServerId)
答案 1 :(得分:0)
通常,数据库中的表不一定反映您的页面,但它们反映了数据的关系。
如果我们采取您的第一个案例,您有2个表格,Servers
和ServerInformation
。你有一个外键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
,则可能只有一个表格方法更合适。