3

次のようなloginlogテーブルがあります

Field       Type
login_id    int(10)     NOT NULL
platform    varchar(50) NOT NULL
browser     varchar(50) NOT NULL
ipaddress   varchar(50) NOT NULL
last_login  datetime    NULL
last_logout datetime    NULL

しかし、この構造では、ログイン時間を追加できるのに、ログアウト時間を更新するのが難しいと混乱しています。ログが頻繁に発生し、主キーがすぐに最大値に達するため、主キーを追加していません。最善の方法は何ですか?助けてください。

4

4 に答える 4

6

このようにログインとログアウトの両方が 1 つの行にあると、問題が発生するだけです。これは、すべてのログインに対応するログアウトがあることを前提としているためです。公共のコンピューターにログインしてログアウトしない場合もあれば、匿名のウィンドウを開いてログインする場合もあります。

代わりに、タイプだけに切り詰めます。

  • ログインID
  • プラットホーム
  • ブラウザ
  • IPアドレス
  • 日にち
  • タイプ (ログイン/ログアウト)
于 2012-03-14T07:00:05.597 に答える
2

2列のテーブルログアウトログを作成しないのはなぜですか。
対応する login_id への参照と、ログアウトの時刻。

last_login と last_logout は私には意味がありませんが、ロジックで必要になる場合があります。IMO のため、NULL を持つ可能性のある列は避ける必要があります。

編集:アドオンとして、なぜそんなに多くのデータを蓄積するのかと思います. ユーザーのブラウザ、プラットフォームを分析するためだけであれば、Google アナリティクスを使用できます。そして、ユーザーごとに last_login と last_logout を保持することができます。繰り返しますが、ビジネス ロジックで必要になる場合があります。

于 2012-03-14T06:50:26.203 に答える
0

主キーが最大値に達しないように、再ログインしたら各ユーザーのエントリを更新することをお勧めします。

于 2012-03-14T06:56:37.743 に答える
0

私の提案は、最後のログインと最後のログアウトの情報が必要な場合にのみ.... user_id を主キーとして作成し、代わりにその情報を変更して新しいレコードを追加することです... 1つのカウントフィールドを追加できます機能を強化します...その人がログインしているカウント数を取得するには...

そして、すべてのログインデータが必要な場合...シリアル化の概念を使用するだけです...それは役立ちます...配列セットをキーとしてカウントし、最後のログイン、ログアウト、ブラウザーを配列の値として...シリアル化しますそれをデータベースに保存します...

于 2012-03-14T06:47:17.280 に答える