php - MySQL数据库设计

标签 php mysql

我实际上正在处理服务器列表,我想知道如何以最好的方式设计 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 个表:ServersServerInformation。您有一个外键 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/

相关文章:

java - MySQl 和 autoReconnect=true 仍然给我异常

php - 互斥 MySQL 全文搜索

php - Curl - 如何处理响应

php - 使用 jquery post 请求到同一页面

php - 数组的html输出逻辑

MySQL - 在 WHERE 子句中使用 COUNT(*)

mysql - SQL 选择早于 X 的非标准日期

php - 关于 preFlush 的循环引用

php - 使用ajax jquery运行php脚本

mysql - 工作台对于从脚本文件创建本地数据库是必需的