DB設計をお願い致します。
内容
・会員が複数のURLを登録でき、そのURLごとに複数のキーワード登録が可能
・会員がログインし更新ボタンを押すと、その日の順位を記録
・URL+キーワードの組み合わせ毎に、月間、週間、等でグラフ化予定
・一ヶ月ログインしていない会員データは自動削除
考慮頂きたいこと
・カラム数が多くなると検索に時間がかかる
・PhpMyAdminにて管理する際にユーザIDやURL等目視でもわかりやすいように
その他、テーブルを結合する場合はそれも教えてください。
短縮系は好みがありますし、
説明しやすくもあるのでとりあえず日本語で命名しました。
(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+キーワードの組み合わせになっているので集計が楽。
カラム名(例) | 内容 | キー |
---|---|---|
uid | 会員ID | key |
user | ログイン名 | |
psw | パスワード | |
date0 | 登録日 | |
カラム名(例) | 内容 | キー |
---|---|---|
URL | URL | key |
uid | 会員ID | key |
date0 | 登録日 | |
カラム名(例) | 内容 | キー |
---|---|---|
URL | URL | key |
uid | 会員ID | key |
keyword | キーワード | |
counter | カウンター | |
date0 | 登録日 | |
tbl_urlsとtbl_keywordsはuidとURLで連結します。
短縮系は好みがありますし、
説明しやすくもあるのでとりあえず日本語で命名しました。
(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+キーワードの組み合わせになっているので集計が楽。
なお、広告関係の部分を別のログテーブルに取るかログイン情報テーブルに入れ込むかは判断できず、割愛しています。
なお、広告関係の部分を別のログテーブルに取るかログイン情報テーブルに入れ込むかは判断できず、割愛しています。
2012/10/28 11:21:05