我目前正在设置一个存储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 |
---------------------------------------------------------------------
在我进一步开发之前,请帮我正确设置!
答案 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)