我无法描述我想要的东西,所以我会尽力用数组来说明它。
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/