Любой подход действителен, в зависимости от шаблонов запросов и требований к соединению.
Одна строка за каждый месяц
Для пользователя строка, содержащая количество логинов за месяц, будет вставлена, когда данные будут доступны за месяц. Там будет 1 строка в месяц на пользователя. Этот дизайн облегчит создание соединений по столбцу month
. Однако для получения данных для пользователя за год потребуется несколько строк.
-- column list
name
email
month
login_count
-- example entries
'user1', 'user1@email.com','jan',100
'user2', 'user2@email.com','jan',65
'user1', 'user1@email.com','feb',90
'user2', 'user2@email.com','feb',75
Одна строка для всех месяцев
Вам не нужно динамически добавлять столбцы, так как количество месяцев известно заранее. Таблица может быть изначально создана для размещения всех месяцев. По умолчанию все столбцы month_login_count
будут инициализированы равными 0. Затем строка будет обновляться по мере заполнения счетчика за месяц. Там будет 1 строка на пользователя. Этот дизайн не лучший для выполнения объединений month
. Однако для получения данных о пользователе за год потребуется только одна строка.
-- column list
name
email
jan_login_count
feb_login_count
mar_login_count
apr_login_count
may_login_count
jun_login_count
jul_login_count
aug_login_count
sep_login_count
oct_login_count
nov_login_count
dec_login_count
-- example entries
'user1','user1@email.com',100,90,0,0,0,0,0,0,0,0,0,0
'user2','user2@email.com',65,75,0,0,0,0,0,0,0,0,0,0