人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP5+Mysql5.5にて検索順位をチェックする会員制サイトを作成しようと思います。
DB設計をお願い致します。

内容
・会員が複数のURLを登録でき、そのURLごとに複数のキーワード登録が可能
・会員がログインし更新ボタンを押すと、その日の順位を記録
・URL+キーワードの組み合わせ毎に、月間、週間、等でグラフ化予定
・一ヶ月ログインしていない会員データは自動削除

考慮頂きたいこと
・カラム数が多くなると検索に時間がかかる
・PhpMyAdminにて管理する際にユーザIDやURL等目視でもわかりやすいように

その他、テーブルを結合する場合はそれも教えてください。




●質問者: maintour15
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● oil999
●250ポイント

会員情報 tbl_users

カラム名(例)内容キー
uid会員IDkey
userログイン名
pswパスワード
date0登録日

登録URL tbl_urls

カラム名(例)内容キー
URLURLkey
uid会員IDkey
date0登録日

キーワード tbl_keywords

カラム名(例)内容キー
URLURLkey
uid会員IDkey
keywordキーワード
counterカウンター
date0登録日

tbl_urlsとtbl_keywordsはuidとURLで連結します。


2 ● うぃんど
●250ポイント ベストアンサー

短縮系は好みがありますし、
説明しやすくもあるのでとりあえず日本語で命名しました。

(1)マスター

■会員マスター
・ユーザーID(主キー)
・パスワード(暗号化して登録しておくことが望ましい)
・ユーザーネーム
・メールアドレス
・削除フラグ
その他に登録しておきたいユーザーの情報があれば、このテーブルに入れておく。

削除フラグは一ヶ月以上ログインしていない会員を示し、
いきなり削除してしまうのではなく、退避させるなどの手段を講じやすくするために用意。

(2)データ

■URLリスト
・URLリスト通し番号(主キー)
・ユーザーID(外部キー:会員マスターとのJOIN時に利用)
・URL
入力フォームなどで既存のURLのリストを作成したりすることを考慮して、
ユーザーIDで別途インデックスを作成しておく。

■キーワードリスト
・キーワードリスト通し番号(主キー)
・キーワード
・URLリスト通し番号(URLリストからの転載:URLリストとのJOIN時に利用)
・URL(URLリストから転載:冗長だけど読み出し時の速度アップに寄与)

入力フォームなどで既存のリストを作成したりすることを考慮して、
キーワードインデックス、URLリスト通し番号インデックスをそれぞれ作成しておく。

キーワードリストにURLを含むことは冗長ですが、
新規でキーワードを登録する時以外は、
URLリストへのアクセスを必要としなくなり負荷軽減となります。
キーワードリストにユーザーIDを含まないのは、会員マスターを都度再検索せずとも、
ログイン中はphp側でユーザーネームを保持し続けるようにすれば済む話なので…。

(3)ログ

■ログイン情報
・ユーザーID(主キー)
・最終ログイン日時
cronなどで毎日監視して一ヶ月以上ログインしていなければ…削除フラグを立てる…。

■検索順位
・日付(主キー)
・キーワードリスト通し番号(外部キー)
・順位

キーワードリスト通し番号がURL+キーワードの組み合わせになっているので集計が楽。


うぃんどさんのコメント
なお、広告関係の部分を別のログテーブルに取るかログイン情報テーブルに入れ込むかは判断できず、割愛しています。

3 ● Bright
●0ポイント

URLにタイトルを付けたり出来る。
ユーザーネームが登録出来るなどどうでしょう。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ