在MYSQL中保存CSV的最佳方法是什么?

时间:2016-01-20 02:05:48

标签: mysql csv

我目前正在设置一个存储CSV的数据库。我正在读更多关于CSV在MYSQL中是不好的做法。

我目前的设置是:

    ----------------------------------------------
    |  id  |  Exercise  |  Set     |  Reps    |  date    |
    ----------------------------------------------
    |  1   | Value 1,   | Value 1, | Value 1, | 01/01/16 |
    |      | Value 2,   | Value 2, | Value 2, |          |
    |      | Value 3,   | Value 3, | Value 3, |          |
    ----------------------------------------------

当用户提交数据时,他们可以根据需要添加“AS MANY”新的“练习”输入(以及反过来的值)(可能最多50个)但只有10个“Set”和“Reps”。例如:

    <input name="exercise1[]">
            <input name="set[]><input name="reps[]">
            <input name="set[]><input name="reps[]">
            <input name="set[]><input name="reps[]">
    <input name="exercise2[]">
            <input name="set1[]><input name="reps1[]">
            <input name="set1[]><input name="reps1[]">
            <input name="set1[]><input name="reps1[]">

这是它目前的工作方式,并且工作正常,但我想知道:

我应该改变他存储这些数据的方式吗?

如果是这样,我不确定应该如何保存它。 为一个表单提交存储多行也是一个坏主意吗?

我可以看到允许没有CSV的'UNLIMITED'练习值的唯一方法是下面的方法(每个表单提交使用多行)并在我的数据库中为每个'set'和'reps'设置10列(如我前面提到过,只有10'Set'和'Reps'值的可能性):

    ---------------------------------------------------------------------
    |  Exercise  |  Set     |  Reps    |  Set2    |  Reps2  |  date     |
    ---------------------------------------------------------------------
    | Value 1    | Value 1  | Value 2  | Value 1  | Value 2  | 01/01/16 |
    ---------------------------------------------------------------------
    | Value 2    | Value 2  | Value 2  | Value 1  | Value 2  | 01/01/16 |
    ---------------------------------------------------------------------
    | Value 3    | Value 3  | Value 3  | Value 1  | Value 2  | 01/01/16 |
    ---------------------------------------------------------------------

在我进一步开发之前,请帮我正确设置!

1 个答案:

答案 0 :(得分:0)

总有不同的设计。选择一个最适合你的情况。

1 - 当你非常确定结构没有改变时,根据你的例子在一个表中进行设计,例如正好x套和y代表等

id, excercise, set1, set2, set3, rep1, rep2, ...

2 - 如果数据在增长时不确定,您可以设计元表:

id exercise_id meta value
-- ----------- ---- ---------
1  1           set1 value1
2  1           set2 value2
3  1           rep1 value3
4  2           set1 value5
....

3 - 一对多关系表 - 传统方法:

exercises (id, date, ...)
exercise_sets(id, exercise_id, value)
exercise_reps(id, exercise_id, value)