Я использую SQL Server 2008 и ColdFusion 9.
Мне нужно авторизоваться на моем сайте. Это будет для пользователей, которые вошли в систему. Мне нужно иметь возможность узнать, сколько раз они вошли в систему на этой неделе, в этом году, а также сколько дней подряд, очень похоже на то, как это делает StackExchange. Я хочу иметь возможность показывать календарь на любой месяц и отображать дни, которые посетитель посетил.
Я не уверен, что лучше всего хранить эти данные или извлекать их. Моя первоначальная мысль - создать ежедневную или еженедельную таблицу, в которую будут записываться каждое попадание каждого пользователя. Я бы сохранил идентификатор пользователя и метку времени следующим образом.
TABLE_VISITS_LAST_SEVEN_DAYS
UserID VistitDateTime
101 2012-10-06 01:23:00
101 2012-10-06 01:24:00
101 2012-10-07 01:25:00
102 2012-10-07 01:23:00
102 2012-10-07 01:24:00
102 2012-10-07 01:25:00
В конце каждого дня я определяю, кто посещал сайт, и агрегировал посещения, чтобы по существу удалить дублирующую информацию. Итак, я удалю эти данные и вставлю их в таблицу, в которой будут храниться только эти данные:
TABLE_VISITS_ALL_TIME
UserID VistitDate
101 2012-10-06
101 2012-10-07
102 2012-10-07
Эти данные будут легко запрашивать и не будут хранить ненужные данные. У меня были бы все данные, необходимые для определения того, как часто пользователь посещает мой сайт без особых усилий.
Это хороший план? Есть ли более простой или лучший способ? В моем плане зияющая дыра? Идеи будут оценены.