我无法描述我想要的内容,所以我会尽力用数组来说明它。
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 |
我不知道如何继续实施这些世界&时间数组。我也希望能够对这些进行排序。
答案 0 :(得分:0)
保持实体分离是良好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。
祝你好运!