【发布时间】:2012-09-08 19:14:29
【问题描述】:
我一直在开发一个应用程序,并且遇到了一种情况,我想对当前数据进行快照。
例如,在此应用程序中,用户将拥有不同的统计数据并能够输入匹配项。他们在比赛中的排名取决于他们的数据。确定比赛后,应用程序将提取用户的所有当前统计数据并确定他们的分数以查看谁获胜。
现在,在比赛结束后,我希望用户能够查看过去的比赛,但当我想显示比赛时参与者的分数时,问题就出现了。我认为存储这样结构的数组是可以接受的:
array(
array(username, points),
array(username, points),
etc.
)
现在标准化数据通常可能是最佳实践,但在这种情况下:
- 一场比赛中可以有 2 到 25 个参与者。
- 数据永远不会更新,只会读取。
- 我认为将它放在数据库中的数组结构中可以节省我在后端代码中构造数组的时间。
- 编辑:数据不是永久的。比赛记录将在比赛结束后 7 天被删除。
谁能告诉我这个解决方案是否会带来任何问题?
编辑
我会在序列化数组后保存数据,所以在我的数据库中我会有一个名为“matches”的表,它会有一个名为“results”的列。
此列的行将包含序列化数组。所以如果数组看起来像这样:
$array["a"] = "Foo";
$array["b"] = "Bar";
$array["c"] = "Baz";
$array["d"] = "Wom";
那么数据库中的行将如下所示:
a:4:{s:1:"a";s:3:"Foo";s:1:"b";s:3:"Bar";s:1:"c";s:3:"Baz";s:1:"d";s:3:"Wom";}
【问题讨论】:
-
嗯,你总是可以序列化它,但从我的角度来看,我认为最好只是想出一个更好的模式并保持你的数据标准化。只是我的两分钱。
-
我不清楚您是在谈论非规范化数据,还是在字段中实际存储一块数据。你能提供一个你正在考虑的表结构的例子吗?不管怎样,我认为如果你走这条路,你可能会在路上的某个地方被咬。编写规范化结构的额外工作将使其在未来更容易修改。
-
@Ickster 我已经添加了您要求的示例。
-
你应该阅读时间数据库(snodgras)
标签: mysql arrays database-design multidimensional-array