• ベストアンサー

MySQL使用スレッド掲示板の仕組みが知りたい

お世話になります。 MySQLを利用したスレッド掲示板を作ろうと考えています。 スレッドなしの一行掲示板を作れるくらいの知識はあります。 まずスレッドの認識が甘いのですが、ご享受頂けないでしょうか? スレッドを作成する。というのは「テーブル」として作成すればイイのでしょうか?? それとも【スレッド】というテーブルの中のフィールドに作成するのでしょうか?? 構造が理解出来ていない為に完全にハマっておりますm(_ _)m バカなので詳しくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 設計次第ですが、 BBS_HEADERとBBS_BODYというテーブルを使用して、 1部屋ごとのタイトルや最終更新日等をHEADERに持ち、発言をBODYに持ちます。 BBS_HEADERとBBS_BODYはBBSIDのような感じで紐付けます。 現在のスレッドを一覧で出すのにHEADERを利用し、一覧へのリンクはIDを渡して、BODYテーブルより取得した一覧を表示する。 こんな感じでしょうか。

takayoshi-i
質問者

お礼

ありがとうございます! 僕のバカで抽象的な質問を理解していただいて感謝しますm(_ _)m 多分ソレです!! テーブル同志の紐付けとIDを渡すという作業をしたことがないので未知の世界ですが 何か、コレが答えな気がします。 ちょっと書いてきます!! ありがとうございます!!!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

どういう設計を想定しているかによります。 (1)親文書-子文書の1対1 であれば子文書に親文書のidを持たせるだけです (2)親文書-子文書の1対n よくある質問-回答の掲示板タイプで、単純な構造なので(1)と同等で管理できます (3)親文書-子文書-孫文書 のようになってくると途端に難しくなります いわゆる「木構造」といって管理がそこそこ大変です (3)-1 直接の親子だけみればいい ある文書に対する親もしくは子だけみればいいなら(1)に近い形です ただし自分が孫文書の場合親とはいわゆる子文書になります (3)-2 クリティカルなパスだけみればいい ある文書がつながる先頭の親までのクリティカルなパスと 自分の子文書だけ表示すればいいのであれば、 パスをすべて列記しておくだけでできます (3)-3 その文書がつながる全ての文書を表示したい 仕様によっては、どの子(孫)文書からも親文書からのスレッド全体をたどれるように する必要があります。 たとえば親文書pからa、bにわかれた場合、aのひ孫a-1-1からbの子文書 b-3へのアクセスも表示したい、などのニーズがある場合は特殊な木構造テーブルを 設定する必要があります (4)親文書-子文書がn対n ある子文書が二つ以上の親文書の子供になるようなものを想定していると かなりカオスになります、これはあまり考えない方がよいでしょう

takayoshi-i
質問者

お礼

詳しいご説明感謝いたします! しかし、脳みそ沸騰中です…。 どれに当たるのかは良く分からないのですが、2ちゃんねるっぽいのをイメージしています。 ああいうスレッド式掲示板の仕組みにしたかったのです(^^; 無知でごめんなさいm(_ _)m

takayoshi-i
質問者

補足

あ、多分(1)のタイプですね。 理解するのに時間がかかってしまいました(^^; IDを持たせる…。 これでイケそうな気がします! ちょっと書いてまいりますm(_ _)m

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • phpの掲示板でレスがあったスレッドを上にしたい

    phpとMySQLでスレッド掲示板を作っています。 掲示板の機能に「レスがあったスレッドを一番上にする」というのを実現したいのですが、どのような仕組み(考え方)をしたらいいのか分かりません。 MySQLには「スレッド用のテーブル」と「レス用のテーブル」がありますが、どのような連携をしたらいいのか・・・ 参考になるサイトなどありましたらよろしくお願いします。

    • ベストアンサー
    • PHP
  • 掲示板のDBテーブル設計について

    今phpとmysqlを使って掲示板を作ってみようと考えています。 そこでDBのテーブル設計なのですが、スレッド1つに対してレスポンス用のテーブルを1つ作るか、スレッドとレスポンスのテーブルを1つずつ作成して運用するかどちらがいいか迷ってます。 後者のレスポンステーブルを1つにまとめるのはやはりアクセスが集中しそうなのでよくないでしょうか? よろしくお願いします。

  • 掲示板の作り方

    Servlet+JSP+MySQLで掲示板を作成しようとしております。 ですが、まず掲示板を作るには何が必要なのかわかりません。 その部分を詳しく教えてください。 Servlet+JSP+MySQLでログインシステムを作成できるくらいの知識はあります。

  • PHPでスレッド式掲示板を作りたいです

    こんにちは。現在Androidアプリで掲示板を作ろうと思いPHPとDBを活用してスレッド式掲示板を作成しています。 テーブルはこのような感じで構成しています。 スレッド一覧テーブル sureid(int ai) surename(text) name(text) time(text) rescount(int) コメントテーブル sureid(int) surename(text) name(text) msg(text) id(text) time(text) 作っていく途中で躓いてしまったので御教授願います。 1つ目 スレッド一覧画面で選択したsureidをGETしスレッドの中の画面でGETしたsureidの投稿を表示させたい。 2つ目 スレッド一覧画面で各スレッド一覧の横にスレッドのレス数を表示させたい。 <?php $USER= ''; $PW= ''; $dnsinfo= ""; $user= array(); $pdo = new PDO($dnsinfo,$USER,$PW); $sql = "SELECT * FROM thread"; $stmt = $pdo->prepare($sql); $stmt->execute(null); while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ $user[] = array ('surename'=> $row["surename"] ,'name' => $row["name"] ,'rescount' => $row["rescount"]; } $res = array_reverse($user); echo json_encode($res); ?> スレッド一覧のプログラムはこのようになっています。

    • 締切済み
    • PHP
  • 「スレッド」「BBS」?

    お世話になります。 掲示板を見てて「スレッド」「板」「BBS」という単語が解りません。 ご存知の方、ご指導お願い出来ませんか? 文章だけの説明は、ご遠慮させて下さい。 出来れば、参考文を載せてもらい、 「この文中の ○○ がスレッドになります」という表記で説明して頂けると、理解できると思います。 勝手をお願いして、すいません。

  • データベースを用いて掲示板を作る際のテーブル、フィールド等の構造の組み立て方

    Apache/2.0.52 (Win32) PHP/5.0.3 MySQL/4.0.14と言った環境で画像掲示板を作成しています。 サイトの構造は -top --asia ---japan ----hokkaido(掲示板) ----tohoku(掲示板) ---korea(掲示板) --oceania ---australia ----queensland(掲示板)以下続く と言ったように相当な数のディレクトリが存在し、その各最下層に掲示板のページがあるといった状況です。 掲示板のログをデータベース形式で保持し、記事や画像、ページに対して高速に検索したり、新着記事の表示をできるようにしようと思っています。 現在データーベースのフィールドは以下のように構成してます。 no______int(pri)_記事ナンバー resno___int______レスナンバー regtim__datetime_登録日 name____varchar__ニックネーム  title___varchar__タイトル com_____text_____コメント host____varchar__ホスト ext_____varchar__画像の拡張子 pass____varchar__記事編集削除用パス fname___varchar__画像のファイル名 同じフィールド構造を持つテーブルを、テーブル名:hokkaido , tohoku , queesland 等として所持してます。が、同じフィールドの構造であればそれらすべてを一つのテーブルにまとめてしまったほうが管理が楽であったり検索が高速なような気がして no 記事ナンバーの前に dir varhcar ディレクトリ名(ディレクトリのURL) を購入してDBを構築したほうが良いパフォーマンスが得れるような気もしますが、同じ値が dir フィールドに列挙されるのもおかしい気がします(一つのページ、ディレクトリに対して保存される記事数は1000件です)。 データベースを扱うこと自体始めてでオーソドックスなテーブル、フィールドの構造(スキーマって言うんですか?)の立て方が分からず困ってます。どなたかアドバイスまたは参考URLなど教えていただけないでしょうか・・・

    • ベストアンサー
    • MySQL
  • JSPまたはサーブレットで作ってるHPや掲示板

    JSPやサーブレットで作られてるHP、ショッピングサイト、掲示板は ありませんか? できればjavascriptなどほかの要素がないものがいいです。 初心者本を終えたのでそれでかかれた見本のページを探してます できるだけ読みやすい形でカスタムタグ大量とかは困ります ページでなくてもサイトの書かれ方の(データベースのテーブル複数作成しながら 連携する方法とか雛形 基本型を知りたいです)仕組みとかそういうのでもいいです (掲示板だとスレッド一覧とスレッド内容は別テーブルで作成してるでしょうし)

  • MySQLの効率の良い使い方

    お世話になっております。 これまで、テキストファイルにログを保存する形で、SNSの簡易版などを作成していたのですが、 インデックス用のログが頻繁に破損してしまうため、速度向上の目的も合わせてMySQLに移行したいと考えております。 Apache2+PHP+MySQLでの構築を考えているのですが、データベースを利用するのは初めてでして、 基本的な使い方は理解したのですが、効率的なデータベースの利用法が良く分かりません。 これまでのファイルに保存していく方式では、以下のような構造でした。 user.log - 全ユーザーのIDやパスワード、名前などの簡単な情報をまとめて記録した検索用インデックスログファイル user/[ID].log - ユーザーの性別や自己紹介などの登録情報をID別に保管 item/[ID].log - SNS内で利用できるミニゲームの所持アイテムをID別に保管 mail/[ID].log - SNS内でのメールのようなものをID別に保管 ... これらをMySQLで実装する場合には、どのようにテーブルを作成すれば良いのでしょうか? ユーザー1人ひとりに対し、1つずつ所持アイテム用のテーブルであるとか、 メール用のテーブルを作成していけば良いのでしょうか? 例)「item_[ID]」という名前のテーブルをユーザーごとに作成。 そうすると、ユーザーは数千人を想定しているので、 テーブルを数万個作ることになりますが、高負荷などの問題はないでしょうか? それと、これまで同時アクセスによるファイルの破損のトラブルが多かったのですが、 MySQLを用いれば改善されるでしょうか?(これまでも排他処理は色々講じていました) カウンタなど頻繁に更新され、かつデータが非常に軽いものについては、 ファイルにログを保存した方が良いのでしょうか? ご教授頂ければ幸いです。 ローカル:WinXP、Apache2.2.3、PHP5.2.0、MySQLServer5.0 実装サーバー:Linux、Apache1.3.37、PHP4.4.4、MySQL3.23.58

    • ベストアンサー
    • MySQL
  • MySQLで乱数を一度に更新したいのですが

    MySQL クライアントのバージョン: 3.23.58 です。 テーブルに乱数フィールドを作成して ランダムに取り出しの指示が来たときに 乱数フィールドに乱数を格納したいと 思います。 一回の更新件数は数十件です。 これをカーソルによる順次処理ではなくて ひとつのSQL文で更新することは 可能でしょうか? どうぞよろしくお願いいたします。

  • MySQLが文字化けしてしまう

    MySQLが文字化けしてしまう 現在、PHPとMYSQLを使ってデーターベースに画像をアップするプログラムを作っています。 http://websegment.net/2010/09/05/php-mysql-blob/ のサイトのプログラムでまず作成してみたところデーターベースへの 登録はうまくいったのですが、ターミナルでテーブルを確認したところ文字化けしていました。 フィールドのfile、size辺りで文字化けしてしまっているようです。 どうすれば、文字化けが直るのでしょうか? 教えてください。

    • ベストアンサー
    • PHP