1

これは私が数日前に投稿した質問のフォローアップです。

基本的に、私は6つのリンクを持つサイトを持っています。サイトにアクセスするには、ユーザーはLDAP認証を使用してログインする必要があります。彼らがこれを行うとき、私は彼らのアカウントクレデンシャル(ユーザー名、名、姓)のいくつかを取得し、それをPHP$_SESSION変数に格納します。

それはうまくいきます。ユーザーはログインでき、セッションデータは正常に保存されています。

ここで、どのユーザーがどのリンクをクリックしたかを追跡する方法を設定したいと思います。基本的には、リンクをクリックしたときのタイムスタンプをデータベースに保存するだけです。誰が各リンクをクリックしたか(またはクリックしなかったか)、いつクリックしたかを確認したい。

これを単一のテーブルで行うことはできますか/それは悪い考えですか?私は次のようにテーブルを設定することを考えていました:

表(列を示す各箇条書き)

  • 自動インクリメントID
  • ユーザーアカウント名:abc1234
  • ユーザーアカウントの名:John
  • リンク1:最終アクセス日:2012年5月2日午後4時15分
  • リンク2:NULL
  • リンク3:NULL
  • リンク4:最終アクセス日:2012年5月1日午後2時20分
  • リンク5:NULL
  • リンク6:NULL

基本的に、上記は「ジョン」が最初と4番目のリンクをクリックしただけだと言うでしょう。彼がそれらにアクセスしたことがないので、残りはnullです。彼がもう一度#1をクリックすると、より新しい日付/時刻で上書きされます。

これを1つのテーブルで実行できますか?またはそれは複雑さを作成しますか?私が最も苦労するのは、情報を追加する前にユーザーがデータベースに既に存在するかどうかを確認することだと思います(つまり、ジョンが2回目にログインしても、まったく新しい行が作成されないようにするためです)。 )。

助けてくれてありがとう!

4

2 に答える 2

2

それは悪い考えでしょう。7番目のリンクが必要な場合はどうなりますか?ユーザーフォーマットが変更された場合はどうなりますか?

このソリューションには3つのテーブルが必要です。

  • ユーザー-ユーザーデータ(およびユーザーID)が含まれます。
  • リンク-リンクデータ(およびリンクID)が含まれます。
  • クリック-ユーザーとリンクの間の多対多の関係。

その3番目のテーブルは次のようになります。

user_id | link_id | timestamp
-----------------------------
1       | 2       | ...
2       | 2       | ...
1       | 3       | ...
............
于 2012-05-03T20:31:32.587 に答える
1

なぜ持っていないのですか

increment_ID
Account_ID
Link_URL
Timestamp

次に、クリックごとに新しいレコードを挿入します。また、URLパス全体を保存するため、リンクを管理する必要はありません。

于 2012-05-03T20:34:40.877 に答える