我目前在MySQL中有一个正常存储值的表,但我想在该表中添加一个存储一组值的字段,例如cities。我应该将该数组存储为CSV吗?每一行都需要它自己的数组,所以我对制作一个新表并为前一个表中插入的每一行插入2-5行感到不安。
我觉得这种情况应该有一个名字,我只是想不到它:)
修改
元素数量 - 2-5(从动态城市列表中选择,数组引用列表,这是一个表格)
此字段无需搜索,只需与其他数据一起检索即可。
答案 0 :(得分:1)
“正确”的方式是拥有另一个包含每个值的表,但由于您不想使用该路由,因此分隔列表应该有效。只需确保选择一个不会显示在数据中的分隔符。您还可以将数据存储为XML,具体取决于您计划与数据交互的方式,这可能是更好的路径。
答案 1 :(得分:1)
我会想到一个包含逗号(或其他逻辑分隔符)分隔值的字段。只需确保您的字段足够大以容纳最大数组大小。然后当你拉出字段时,应该很容易使用分隔符对长字符串执行explode(),然后立即在代码中填充数组。
答案 2 :(得分:0)
也许你正在寻找的词是“正常化”。如同,将数组移动到一个单独的表,通过键链接到第一个表。这提供了几个优点:
数组大小几乎可以无限增长
高效存储
无需使用“like”
当然,是否对这些数据进行标准化的决定取决于您未提及的许多因素,例如元素的数量,数字是否固定,元素是否需要可搜索等等。 / p>
答案 3 :(得分:0)
您的应用程序是PHP吗?可能值得调查函数 serialize 和 unserialize 。
这两个函数允许您轻松地将数组存储在数据库中,然后在以后重新创建该数组。
答案 4 :(得分:0)
正如其他人所提到的,另一个表格是正确的方式。
但是如果你真的不想这样做(?),假设你在PHP中使用PHP,为什么不使用serialize()并存储一个序列化值?