2009-04-17 78 views
0

我目前在MySQL中有一个表格,通常存储值,但我想向存储数组值的表格(如城市)添加一个字段。我应该简单地将该数组存储为CSV吗?每一行都需要它自己的数组,因此我对创建一个新表以及插入前一个表中插入的每行插入2-5行感到不安。在表格中存储/检索数组的最佳方式

我觉得像这种情况应该有一个名字,我只是不能把它:)

编辑

数量的元素 - 2-5(从城市的动态列表中进行选择,该数组引用列表,这是一张表)

该字段不需要被搜索,只需与其他数据一起检索。

回答

1

“正确”的方法是让另一个表格保存每个值,但因为您不想走分界列表应该工作的路线。只要确保你选择了一个不会显示在数据中的分隔符。您还可以将数据存储为XML,具体取决于您计划如何与数据进行交互,这可能是更好的途径。

+0

如果您致力于将数据存储在文本字段中并且正在考虑使用XML,那么您将通过给YAML至少一眼就可以完成一项服务。我完全没有时间成为转换者。 – Sniggerfardimungus 2009-04-17 16:51:56

+0

这不一定是对/错,我试图找出最佳的方式来存储/检索这些信息。 – Blaine 2009-04-17 17:10:39

0

也许你正在寻找的词是“正常化”。如在,将数组移动到一个单独的表,通过一个键链接到第一个表。这有几个优点:

  • 数组大小可以增长几乎无限期

  • 高效的存储

  • 能力来搜索数组中的值,而不必使用“喜欢”

当然,是否对这些数据进行归一化的决定取决于您未提及的许多因素,例如ele无论数量是否固定,元素是否需要搜索等。

1

我会想到包含您的逗号(或其他逻辑分隔符)分隔值的字段。只要确保你的领域将足够大,以保持最大的数组大小。然后,当您将该字段拉出时,应该很容易使用分隔符对长字符串执行explode(),然后该分隔符会立即将您的数组填充到代码中。

0

是您的应用程序PHP吗?这可能是值得研究的功能serializeunserialize

这两个函数允许您轻松地将数组存储在数据库中,然后在稍后重新创建该数组。

0

正如其他人提到的,另一个表是适当的的方式去。

但是,如果你真的不想这样做(?),假设你使用PHP和MySQL,为什么不使用serialize()并存储序列化的值?

相关问题