0

現在、作成中のサイトのデータベースを構築中です。しかし、私は問題に遭遇しました。ユーザーが毎日ログインした回数をログに記録し、8か月、1年、2年などの長期間にわたってその情報を追跡できるようにしたいと考えています。

私が今考えることができる唯一の方法は、1年の各日に列を作成するか、毎日自動的に列を作成することです。しかし、このアイデアは私にはまったくばかげているように思えます。これを行うにはもっと良い方法が必要だと確信しています。私には考えられません。

助言がありますか?

ありがとう、ロブ

4

2 に答える 2

1

user_idと、ユーザーがログインした日時を格納する別のテーブルを作成します。

ユーザーがログインするたびに、このテーブルに新しいレコードを挿入します。

例:

CREATE TABLE user_activity (
         userid varchar(50),
         log_in_datetime datetime
       );
于 2011-10-24T20:09:50.160 に答える
0

これが私のサイトの1つで使用しているログインテーブルです。日時は、日時またはタイムスタンプとしてログに記録できます。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;
于 2011-10-24T20:20:05.837 に答える