【问题标题】:Best way to store multiple timestamps & numbers?存储多个时间戳和数字的最佳方式?
【发布时间】:2017-01-18 11:41:41
【问题描述】:

我在描述我想要的东西时遇到了麻烦,所以我会尽量用数组来说明它。

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  |

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

【问题讨论】:

  • 看来您需要去阅读有关数据库规范化的信息。
  • 是的。这使得这个问题过于宽泛。

标签: mysql sql pdo


【解决方案1】:

保持实体分离是良好data modeling 的目标之一。使用一个表存储一种类型的信息,使用另一个表存储另一种类型,并使用foreign keysjoin 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

祝你好运!

【讨论】:

    猜你喜欢
    • 2015-05-11
    • 1970-01-01
    • 2012-07-15
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    相关资源
    最近更新 更多