mysql - 存储多个时间戳和数字的最佳方式?

标签 mysql sql pdo

我无法描述我想要的东西,所以我会尽力用数组来说明它。

Array
(
    [user1] => Array(
        [title] => customtitle1
        [prefix] => false
        [worlds] => Array(
            [119] => 367
            [2] => 5
        )
        [time] => Array (
            100
            101
            102
            204
        )
        [last] => 119
    )
    [user2] => Array(
        [title] => customtitle2
        [prefix] => true
        [worlds] => Array(
            [119] => 367
            [2] => 5
        )
        [time] => Array (
            100
            101
            102
            204
        )
        [last] => 119
    )
)

我将其存储在 txt 文件中,但我转向了 SQL 数据库。我将如何存储它?

我在这里只显示 2 个用户,但更多,“worlds”数组会随着时间的推移获得新值(包括新键,因此长度会改变)。 “时间”数组也是如此,但只有值。

username | title | prefix | 
user1    | bla   | true   |
user2    | bl2   | false  |

我不知道我将如何继续实现世界和时间数组。我也希望能够对这些进行排序。

最佳答案

保持实体分离是 good 的目标之一 data modeling .使用一个表存储一种类型的信息,另一个表存储另一种类型的信息,并使用 foreign keys 将它们关联起来。或 join tables .根据您的示例,您可能需要这样的结构。

users:
| id | username | title | prefix | last_world |
| 1  | user1    | bla   | true   | 119        |
| 2  | user2    | bl2   | false  | 119        |

worlds:
| user_id | worlds_id | other_id |
| 1       | 119       | 367      |
| 1       | 2         | 5        |
| 2       | 119       | 367      |
| 2       | 2         | 5        |

time:
| user_id | time |
| 1       | 100  |
| 1       | 101  |
| 1       | 102  |
| 1       | 204  |
| 2       | 100  |
| 2       | 101  |
| 2       | 102  |
| 2       | 204  |

这些表可以用这样的查询连接:

SELECT 
  u.*, 
  w.worlds_id,
  w.other_id,
  t.time
FROM users u 
INNER JOIN worlds w
ON u.id = w.user_id
INNER JOIN time t
ON u.id = t.user_id

构建您的数据库模式,使数据永远不会冗余(例如,您只在一个地方更新用户名)并且数据永远不会在一个地方不正确但在另一个地方正确被称为 database normalization .

祝你好运!

关于mysql - 存储多个时间戳和数字的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39426528/

相关文章:

SQL - 在生产环境中运行 RECONFIGURE 是危险的

尝试参数化 SQL LIMIT :offset, :display? 时出现 PHP PDO 错误

mysql - 当主查询没有返回记录时如何从子查询中获取计数

php - 如何检查 bool 搜索是否有效

php - 在数据库中添加或更新(大)数组值

mysql - 如何通过连接mysql中的两个表来更新

mysql - SQL 计数和分组

java - 相同的查询在 MySQL 中工作,而不在 Java 客户端中工作

php - 使用 PDO 从一条语句在多个表中插入多条记录?

php - 通过 PDO PHP 统计前 10 篇文章访问者