![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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など教えていただけないでしょうか・・・
No.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サイト検索して勉強していくつもりですがよろしければ初心者でも分かりやすいようなお勧めのサイトなど教えてもらえると助かります。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- MySQL 【投稿情報用データベース posts】は必要ないと思います。 1 2022/06/02 21:25
- PHP 掲示板を資料を参考にして開発中ですが、画像がアップされません? 1 2022/11/21 06:44
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルの最後(最新)のレコー...
-
SQLローダーCSV取込で、囲み文...
-
固定長データのテキストファイ...
-
int型フィールドにnullを登録で...
-
BLOBやCLOBのパフォーマンスを...
-
2回実行のSQL文を1回にしたい
-
配列に指定した値が含まれてい...
-
ACCESSのクエリで空白以降を別...
-
SELECTした合計値をそのまま割...
-
テーブルのフィールドの一番長...
-
MySQLでの近似値順での値の取得...
-
データベースを用いて掲示板を...
-
CSVからNULL値をインポート
-
重複しないデータのみを抽出
-
【SQLサーバ】float型における...
-
SQL*Loader Append
-
【PL/SQL】FROM区に変数を使う方法
-
Excelで作成した円グラフのデー...
-
レコードの登録順がおかしい
-
並べ替えについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
int型フィールドにnullを登録で...
-
テーブルのフィールドの一番長...
-
2回実行のSQL文を1回にしたい
-
SELECTした合計値をそのまま割...
-
配列に指定した値が含まれてい...
-
固定長データのテキストファイ...
-
BLOBやCLOBのパフォーマンスを...
-
入力データの半角スペースと全...
-
ACCESSのクエリで空白以降を別...
-
Null値件数をカウントする式に...
-
ファイルメーカーのフィールド...
-
MySQLでの近似値順での値の取得...
-
【MySQL】 DECIMAL(2,1) に 13...
-
ファイルメーカー10で重複デー...
-
CSVからNULL値をインポート
-
NULLの挿入の仕方が…?
-
一つのフィールドに複数の情報...
-
重複しないデータのみを抽出
おすすめ情報