一般的にブログなどのWebアプリケーションは裏でDBが動いていると思いますが、DBはテーブルを作成する時に文字数の上限を決めると思います。ブログの記事などはかなり長い文字列になるので、大きめのサイズのフィールドを設計すると思うのですが、記事によっては短い記事もあるのでそうしたときには確保した容量が無駄になってしまうようにも思います。
このようにとても長い文字列が入る可能性もあるし、短い文字列が入る可能性もあるという時、DB(MySQLをイメージしています)ではテーブルを作る時、長い文字列分のサイズを確保する、というのが一般的でしょうか?あるいは、何か別の良い方法があるでしょうか?
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
コメント(0件)