我实际上正在处理服务器列表,我想知道如何以最好的方式设计 mysql 表。 索引将呈现包含服务器基本信息的表格:地址、端口、在线玩家、 map 、排名…… 服务器描述、统计信息和其他内容将在其他子页面“有关服务器的更多信息”
那么哪种设计更好?
Servers(id, user_id, host, port, ...)
ServersInformations(id, server_id, players, map, ...)
或者只是
Servers(id, user_id, host, port, players, map, rank)
并在
ServersInformations()
其余信息将在“有关服务器的更多信息”子页面中呈现
最佳答案
通常,数据库中的表不一定反射(reflect)您的页面,但它们反射(reflect)您的数据的关系。
如果我们采用第一种情况,您有 2 个表:Servers
和 ServerInformation
。您有一个外键 ServerInformation.server_id
(我推测)引用了 Servers.id
。
在这种情况下,您暗示的是 Server
可能在 ServerInformation
表中拥有多个条目(即一对多关系),所有条目都具有相同的 server_id
值,除非您使该值唯一
,在这种情况下它会成为一对一的关系。
如果您采用第二种方法,使用一个 Servers
表,您仍然只能获取索引页所需的字段。您将执行一个简单的查询,仅获取所需的字段,例如:从服务器中选择 id、user_id、主机、端口
除非您对第一种分离两个表的方法有非常具体的原因(例如某些 Server
条目没有 ServerInformation
条目,或者您想要一些 ServerInformation
条目将其 server_id
设置为 null
(如果您将其设置为 nullable
),可能是一个表方法更合适。
关于php - MySQL数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26614162/