数据库设计/结构 - 随时间收集数据

时间:2011-10-24 20:08:36

标签: php mysql database data-collection

目前我正在为我正在创建的网站构建数据库。但是,我遇到了一个问题。我想记录用户每天登录的次数,然后能够在很长一段时间内跟踪这些信息,例如8个月,一年,2年等。

我现在能想到的唯一方法就是每年的每一天都有一个专栏/每天自动创建一个专栏。然而,这个想法对我来说似乎很愚蠢。我确信必须有更好的方法来做到这一点,我想不出一个。

有什么建议吗?

谢谢, 罗布

2 个答案:

答案 0 :(得分:1)

创建一个单独的表,用于存储user_id和用户登录的日期时间。

用户登录后,您在此表中插入新记录。

示例:

CREATE TABLE user_activity (
         userid varchar(50),
         log_in_datetime datetime
       );

答案 1 :(得分:0)

这是我用于其中一个网站的登录表。日期时间可以记录为日期时间或时间戳。如果使用datetime,请确保考虑mysql服务器的时区。

有很多东西需要跟踪。然后你可以稍后查询。这些列名中的每一个都应该通过谷歌搜索自我解释。

CREATE TABLE `t_login` (
    `id_login` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `id_user` INT(10) UNSIGNED NOT NULL DEFAULT '0',
    `id_visit` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'fk to t_visit',
    `id_org` INT(10) UNSIGNED NOT NULL DEFAULT '0',
    `when_attempt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `uname_attempt` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'attempted username' COLLATE 'latin1_swedish_ci',
    `valid_uname` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'valid username',
    `valid_uname_pword` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'valid username and valid password together',
    `pw_hash_attempt` BINARY(32) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0',
    `remote_ip` CHAR(20) NOT NULL DEFAULT '' COLLATE 'latin1_swedish_ci',
    `user_agent` VARCHAR(2000) NOT NULL DEFAULT '' COLLATE 'latin1_swedish_ci',
    PRIMARY KEY (`id_login`),
    INDEX `when_attempt` (`when_attempt`),
    INDEX `rempte_ip` (`remote_ip`),
    INDEX `valid_user` (`valid_uname`),
    INDEX `valid_password` (`valid_uname_pword`),
    INDEX `username` (`uname_attempt`),
    INDEX `id_ten` (`id_org`),
    INDEX `id_user` (`id_user`),
    INDEX `id_visit` (`id_visit`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=429;