- ベストアンサー
データベースを用いた掲示板のテーブル・フィールドの組み立て方
- データベースを使用して掲示板を作成する際のテーブル・フィールドの構造を説明します。
- 掲示板のログをデータベース形式で保持し、記事や画像の高速な検索や新着記事の表示ができるようにする方法を解説します。
- データベースのテーブルに同じフィールド構造のテーブルを複数作成するか、一つのテーブルにまとめるかについての考察も行います。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
このような構造ではいかがですか? T:table P:primary F:Field I:index (1)掲示板集合に関する地域マスター情報 T.areamaster |--F.areaid(P) |--F.arename(I) (2)掲示板そのもの T.bbs |--F.areaid(PI) |--以下設定された情報で no______int(pri)_記事ナンバー resno___int______レスナンバー regtim__datetime_登録日 name____varchar__ニックネーム title___varchar__タイトル com_____text_____コメント host____varchar__ホスト ext_____varchar__画像の拡張子 pass____varchar__記事編集削除用パス fname___varchar__画像のファイル名 現在の、 >相当な数のディレクトリが存在し という部分の数がわかりませんが、1掲示板の上限が1000レコードとするなら、 最大50個の掲示板と仮定し、すべて埋まっても50000レコードですから、 これならmySQLの範疇だと思います。ポイントはareaidをkey&indexにしないと、 地域ごとに WHERE areaid = $_POST['areacode']で抽出した時に、 期待したパフォーマンスが得られないと思います。 正規化は実際のアクセスも考えながら行ったほうが良いので、これがベストとは 断言はしませんが、現在のようにテーブルを分けるとプログラムも分散するので、 よろしいくないかと思います。 また、プログラムは地域のidを基準にGET要求で開く形式だと、 地域のマスターを追加するだけで柔軟に対応できるかと。
お礼
レスありがとうございます。 とりあえず"地域ごとにテーブルを分けるのはよろしくない"と言うことですね。 自分まだ初心者でshige1127さんの言ってることの半分も理解できてないのですがshigeさんの親切丁寧なレスに俄然やるきでてきました! 追加の質問で申し訳ないのですが areaidには実際どのような値をどのデータ型で入れれば良いのでしょうか? areanameは"hokkaido"とか"northisland"とかでよろしいんですよね? Tabel-bbsのFieldは areaid(PI) no______int(pri)_記事ナンバー resno___int______レスナンバー regtim__datetime_登録日 name____varchar__ニックネーム title___varchar__タイトル com_____text_____コメント host____varchar__ホスト ext_____varchar__画像の拡張子 pass____varchar__記事編集削除用パス fname___varchar__画像のファイル名 のようにprimaryをareaidとnoにつけてよろしいのですか? 自分でも色々webサイト検索して勉強していくつもりですがよろしければ初心者でも分かりやすいようなお勧めのサイトなど教えてもらえると助かります。 よろしくお願いします。
補足
ポイントの発行の仕方と良回答ってつけるやり方がわからないのですが・・・