我正在使用CodeIgniter的日历类构建可用性日历。 我正在为每个月的每一天生成复选框:
[ ] Morning
[ ] Afternoon
[ ] Evening
用户可以在某一天检查或取消选中其可用性。 POST数组如下所示:
Array (
[2011-12-01] => Array (
[morning] => 1
[afternoon] => 1
)
[2011-12-02] => Array (
[evening] => 1
)
)
MySQL表中的数据如下所示:
ID | date | data
- - - - - - - - - - - - - - -
1 | 2011-12-01 | 1-1-0
2 | 2011-12-02 | 0-0-1
数据值是早上 - 下午 - 晚上0或1。
如果某一天(0-0-0)没有可用性,则该行不需要存在。 我的解决方案是删除当月的所有行,然后为每一天插入所有值(例如1-0-0)。这可能取决于插入31个查询。
问题: 在没有运行大量查询的情况下,更新表的最佳解决方案是什么?
提前致谢!
PS。 我也不完全确定数据的存储方式。如果我想在将来使用jquery / ajax进行更改时更新它,那么每天的每个部分可能会更容易。我也会对此提出一些看法。
答案 0 :(得分:1)
我要做的第一件事就是将数据字段分开,使其更具人性化。像这样的东西会起作用:
ID | date | is_morning | is_afternoon | is_evening
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 | 2011-12-01 | 1 | 1 | 0
2 | 2011-12-02 | 0 | 0 | 1
其次,我不担心对数据库运行31次INSERT或UPDATE。我不确定您的环境,但我运行的脚本可以更新数百,数千甚至数万个针对数据库的插入/更新。我从未注意到任何小于31个查询的性能问题。