1320311049 テーブルの設計およびphpについて質問させていただきます。


現在画像つき掲示板を作成しています。

掲示板のスレッドは添付のようにしてみました。
※コメントはスレッドと別で管理します。

ここでimageのカラムにはアップした画像のパスを入れようと考えていたのですが、
アップした画像自体にthread_idをつけて保管することで、このimageのカラムは必要ない気がしてきました。(画像が保管されているフォルダからthread__idの名前があるデータがあるかどうかみるだけでよい気がしています)
※画像は必須ではありません。

ただ、どちらでもよい気がしていまして、
画像がなければ画像フォルダへのアクセスは減るかなというのもあれば、threadフィールドにimageのカラムはなくてもいいし、、、、という感じで自分の経験則から判断ができずにおります。

このような場合どうしたらよいでしょうか。

ご知見あるかたいらっしゃいましたらお知恵を拝借できればと思います。

どうぞよろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/11/03 18:04:09
  • 終了:2011/11/10 18:05:03

回答(2件)

id:tdoi No.1

tdoi回答回数174ベストアンサー獲得回数752011/11/04 07:06:12

ポイント50pt

動作するかどうかという点に関しては、どちらでもよいかと思います。

将来的なメンテナンスというか、拡張性の違いかなと思います。

例えばですが、次のような場合には、imageカラムがないと不便だと思います。

  • 様々な画像フォーマットを扱いたい場合。拡張子を確認するためにimageカラムを見ると言う感じでしょうか。
  • スレッドに複数の画像を付けられるようにしたい場合。<thread_id>-<番号>のような形で格納できるかもしれませんが、存在確認のパフォーマンスが問題になる可能性があります。
  • スレッドには認証を付けて画像も非公開にしたい場合に、スレッドidから画像のURLが類推されることを防ぎたい場合。
  • 画像ファイルが非常に多い場合。画像ファイルを全て1つのディレクトリに格納していくと、ext2とかext3などのファイルシステムでは、1ディレクトリ内のファイル数が多くなるとパフォーマンスが低下します。それを回避するためにサブディレクトリを切りたい場合は、thread_idからパスを決定することができないこともあるかもしれません。
  • 画像を別サーバで管理したい場合。thread_idからURLを決定できても、ファイルの存在確認のパフォーマンスが問題となるので、imageカラムがあった方がいいでしょう。

このような問題点がないのであれば、imageカラムを導入しない方が、1つの事柄を1つの場所で管理できるのでよいかもしれません。


全て予見してシステムを作ることはできませんし、必要なときに必要なメンテナンスをしてあげればいいだけではありますが。

何かの参考になれば。

id:kuso47

回答ありがとうございます。頂いた内容で再考してみたのですが、やはり迷ってしまっています。画像ファイルはtrehad_id1000毎に新規で追加してそっちに保存していくようにできないかなと考えております。

2011/11/08 15:23:45
id:tdoi

迷うのであれば、オッカムの剃刀に従うというのも・・・。

2011/11/08 17:35:08
id:munyaX No.2

munyaX回答回数120ベストアンサー獲得回数242011/11/04 07:09:05

ポイント50pt

結論からいうと、どちらでも良いと思います。


DBに持たせずネーミングルールだけで行く場合、DBの負担が減りますので、サーバの動作を軽くできる可能性が高まります。

 ※画像が必要なところで都度DBを見に行く可能性がある。


逆にDBに持たせた場合のメリットとしては、例えば現状のネーミングルールを変更して「乱数」的な物ををファイル名に付与するなどの仕様変更を行った際、変更箇所が最小限ですむ可能性が高まります。


ちなみに、サーバが単一の場合はどちらでも良いのですが、

負荷分散のため複数サーバで運用をしたい、となるともう少し混みいったお話になるのですが、そこまで考えていらっしゃるのであれば、情報を追記していただければと。



#余談ですが、テーブル設計でバイト数が決まっている物は text ではなくvarchar(32) といった

#ように固定長の物を使った方がよいかと。

id:kuso47

回答ありがとうございます。サーバはリリース時は単一ですが、利用者数や投稿数が多くなってきた場合には分散できるようにしたいなと考えております。varcharのほうは固定物にしようかtextでしようか迷っている箇所でして、こちらも悩み中です。。

今回はカラムに持たせ、かつ命名規則もある程度統一された感じにしてやってみます。

2011/11/08 15:26:11

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません