ブログサービスなどのDB設計について。


一般的にブログなどのWebアプリケーションは裏でDBが動いていると思いますが、DBはテーブルを作成する時に文字数の上限を決めると思います。ブログの記事などはかなり長い文字列になるので、大きめのサイズのフィールドを設計すると思うのですが、記事によっては短い記事もあるのでそうしたときには確保した容量が無駄になってしまうようにも思います。

このようにとても長い文字列が入る可能性もあるし、短い文字列が入る可能性もあるという時、DB(MySQLをイメージしています)ではテーブルを作る時、長い文字列分のサイズを確保する、というのが一般的でしょうか?あるいは、何か別の良い方法があるでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/09/25 15:40:02

回答1件)

id:mako24 No.1

回答回数5ベストアンサー獲得回数0

MySQLはあまりしらないですが、「確保した容量が無駄になる」ということはないです。。

DBだと文字列型はいくつかあるのですが、可変長のデータ型を使えばレコード毎に必要な分だけ使われます。

CHAR:固定長

VARCHAR:可変長

BLOB:可変長

固定長というのは、CHAR(5)というフィールドを用意したとして、データを登録するときに「aa」という文字列を登録したらそのフィールドには「aa△△△」(△はスペース)というデータが登録されるのです。

フィールド定義の5バイトのうち、「aa」の余り3バイトをスペースで埋めるような領域の使われ方するのが固定長。

可変のものはVARCHAR(n)の「n」で定義した最大値まで領域を確保でき、上の例でいくと「aa」が登録されて実レコードは2バイト使われるというものです。

いちおうMySQLのリファレンスのリンクをつけておきますが、これはMySQLとかOracleとかそういう話というよりはRDBMSの基本的なことなので、そういうところから勉強したほうがいいかも。

あまりうまい説明ではないけど、RDBMSの基本とかそういうのをGoogleで調べてみましょう。。

http://dev.mysql.com/doc/refman/4.1/ja/blob.html

http://dev.mysql.com/doc/refman/4.1/ja/storage-requirements.html

コメントはまだありません

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

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

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

回答リクエストを送信したユーザーはいません