質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.87%

  • MySQL

    5330questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • CentOS

    2477questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • XAMPP

    452questions

    XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

  • MariaDB

    270questions

    MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

ブログサイトを作る時、mysqlは、varchar型、text型、あるいは、どのようにしますか?

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 184

kyabetsu

score 5

mysqlの知識については、レコードを削除、更新程度、PHPとの連動・・。
は出来る程度で、チューニング等については全く知識が無く、
専門的な用語については理解すら出来ないかもしれないド素人と言ってよいです、

windows7のローカル環境xamppを使って実験していますが、
そちらでの実験がある程度終われば、centOSや、レンタルサーバー等に以降しようと考えているので、
それらを踏まえて、タグ付けを行いました。

といった環境の中、ブログの簡易システムを作成しているのですが、行き詰ってしまいました。

まず、人気のブログサイト等を調べてみると、文字数が2000文字程度だったり、
5000文字、そして、10000文字程度なんていうのも、ザラにあるようでした、

と、いうことはDB(mysql(mariaDB))の方は、varchar(10000)とでも、しておくべきでしょうか?。

あるいは、text型を使うべきでしょうか?。

あるいは、一つのテーブルの中に、varchar(3000),varchar(6000)varchar(10000)、
と、それぞれの長さに対応したカラムを作成して、記事の長さによって」、格納場所を分けるべきでしょうか?。

あるいは、テーブル毎分けてしまったほうがよいのでしょうか?。
それとも、他になにか方法があったりするのでしょうか?。

varchar(10000)や、varchar(5000)という単位を指定することも、
text型を使うことも、否定的な意見が沢山あるようで、
かといって、2000~10000文字の記事をランダムに投稿する場合はどうする・。
といった、具体的な答えを探すこともできませんでした。

2000~10000文字の記事を、毎日ランダムに格納することを想定した場合。
varchar型、text型、カラムを分けて作るか、テーブルは分けるかどうか、

アクセス(表示)速度や、今後の管理のし易さ等も踏まえて、

適切な方法をご存知の型がいらっしゃいましたら、
是非ともご回答宜しくお願い致します。

//以下は補足です
文章を入力、送信したら、タグの挿入、テンプレートとの結合etc・・、
HTMLページを自動で生成する、といった入力フォームを作成したので、

DBはどのように運用するか、迷っている状態です。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2018/07/16 08:04

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 4

+5

まず、「カラムやテーブルを分けて作る」という選択肢は、よほど特殊な事情がない限り、いちばんありえない範疇のものです。同じ意味合いのものを別な列に分けて入れてしまえば、あとあと処理が煩雑になるだけで、きわめてハンドリングしづらいデータベースとなります。

そして、MySQLでInnoDBを使う場合(最近はデフォルトでInnoDBになっています)は、VARCHARでもTEXTでも、保存した分以上の容量は取りません。

  • 65536文字以上になる場合はVARCHARにできないので、MEDIUMTEXTしか選択肢がありません。
  • それ以下でも、MySQLのバージョンや設定によっては、TEXTの中身を除いて1行あたり65536バイトまでという制限があるので、VARCHARでは入らないことがあります。

varchar(10000)や、varchar(5000)という単位を指定することも、
text型を使うことも、否定的な意見が沢山あるようで、

こちらですが、どのような理由での意見なのかをよく確認しましょう。たとえば「MYISAMの特性」であればInnoDBを使う分には無関係ですし、「TEXTにはインデックスを付けるのに手間がかかる」というのも、記事本文に対して先頭一致のインデックスは通常付与しないので、気にしなくて構いません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/15 19:47

    質問本文にて
    >専門的な用語については理解すら出来ないかもしれないド素人と言ってよいです
    と言っていることを前提にして聞いて頂きたいのですが、


    >InnoDBを使う場合(最近はデフォルトでInnoDBになっています)
    に関しては、「聞いたことがある」程度には知っているのですが、

    InnoDBというのが、どういう特性を持っているのか、
    素人には聞いても調べても、よくわかりませんでいた。

    なので、
    >どのような理由での意見なのかをよく確認しましょう。
    ということに目を通しても、「文章の意味が理解出来ない」というのが正直な所です。
    MYISAMというのも、調べてみましたが、理解出来ませんでした。

    本当は、先に勉強をして、知識を固めるべきなのかもしれません

    ですが、形だけは、「DBに文章を格納する」というシステムを作りたいので・・、
    (貯めているライティングをHTMLに格納して、プログラムやデザインといった基盤を固めておきたい為です)


    その為に、mysql(MariaDB)の設定はInnoDB含め、デフォルトという前提で、
    2000~10000の記事をランダムに格納する、
    ブログ記事に該当するカラムには、どんな型を設定しておけばよいのか、

    それが知りたくて質問させて頂きましたので、
    その一点だけでも、具体的に、「○○の型に設定しておけばよい」と、お答え頂けると嬉しいです、

    宜しくお願い致します。

    キャンセル

  • 2018/07/15 20:05

    はっきり言いますが、そういう「すぐに答えを求める姿勢」がよくないです。

    似たような意味のある機能が複数ある場合、「名前の違いだけで全く同じ」あるいは「片方には問題があって、互換性のために残っているだけ」という例を除けば、機能としての違いが存在するものなので、その違いを踏まえて、自ら判断すべきものです。

    それを、「単位を指定することに否定的」とか「TEXTは良くない」とか断片的な情報に踊らされることで、「列やテーブルを分ける」という、もっと良くない設計に向かおうとしてしまったわけです。

    キャンセル

  • 2018/07/15 21:23

    >すぐに答えを求める姿勢

    Q&Aサイトという概念は、「答えを求めて質問する」
    で問題ないと思いますよ?。

    「調べたらすぐ出てくる」という程度のならば、
    「くだらない質問で、検索履歴を圧迫するな」という声も理解できますが。

    「すぐに答えを求める」ことによって、
    その答えを見た、その他の方々の解決策になるのですから、

    それこそが「ネットを解さずに、マンツーマンで教える」こととの圧倒的な違いでしょう。
    Q&Aサイトのメリットの真髄であるからして。
    >すぐに答えを求める姿勢

    で、全然OKだと理解しております。

    >それを、「単位を指定することに否定的」とか「TEXTは良くない」とか断片的な情報に踊らされることで、「列やテーブルを分ける」という、もっと良くない設計に向かおうとしてしまったわけです。



    えっと、向かおうとしていませんよ?、
    言いたいことは、「様々な可能性が考慮されますが、他になにか方法があったとしても、教えて頂きたい」ということです。
    それを言う為に、例として、「そんな訳ない」と判りながら、「列やテーブルを分ける」という方法を提示したに過ぎません。

    それを、「間違った方向に向かおうとしているんだ!!!」と、決定付ける思考は、どうかしているのではないかと思います。


    それ以外の返信については、「デフォルトを前提として具体的に」という回答要望から外れるので、控えさせて頂きます。


    これ以上「考え方が違う物同士」の言い合いは不毛なので、
    お互いの考え方を綴ったこの時点を、やりとりの終着にして頂けると、とてもありがたいです。

    最後に、伝えようとして頂いた姿勢に対しては、感謝申し上げます。
    ご回答ありがとうございました。

    キャンセル

  • 2018/07/15 21:36

    回答ちゃんと読んだほうがイイよ^^;

    maisumakun さんの回答は、
    > (DBの設計において)「すぐに答えを求める姿勢」がよくないです。
    です。

    DB の設計は、要件によって決定されるべきで、要件が整理できていない場合、判断できる要素がなく決定できません。

    QA サイトの使い方と受け取るとか、ずいぶんずれたコメントしてますよ。。。

    キャンセル

  • 2018/07/15 21:42

    言葉足らずな言葉を選んで文章を紡いでいることに変わりはありません。

    申し訳ないですが、本件に関して、これ以上思考を凝らす意義は感じませんので。
    te2jiさんのコメントに関しては、吟味していません、

    とりあえず解決したので、もう終わりにしてくれませんか?。
    他にも言いたいことがあれば、次の文章に全部込めて下さい、

    なければ、早く終わって欲しいので、返信もいりません。

    キャンセル

  • 2018/07/15 22:21

    間違った認識のまま、回答をムダにするのはもったいないのでコメントしました。今後、同様の疑問でこの質問にたどり着く方へのミスリードにもなるので、正しておきたかったってところです。

    この質問って、あなたの質問であると同時に同じ疑問を持った方が読む質問にもなります。そのため、ベストアンサー後にもコメントが追加で付けられますし、質問者不在での議論もできます。
    まちがいを正すって意味で、知識共有サイトの重要な機能ですね。
    ので、ベストアンサー決定後ですが、間違いに対してコメントしました。

    ずれたコメントをしている事が今後読む人に伝われば良いので、もう用件はすみました。

    kyabetsu さんの返信はいらないです。

    キャンセル

  • 2018/07/16 07:23

    スマン、「返信きてるな・・」って判ったから読んでない、
    読んでない理由は、「第三者と口論するのだるい」ってだけだよ、

    矛盾見つけたら、説明したくなっちゃうしね、
    という訳でさいなら、ゴクロウサマ~~

    キャンセル

  • 2018/07/16 08:21

    マルチポストもしてるんですね^^;
    > https://oshiete.goo.ne.jp/qa/10610055.html

    このあたりを参考に、向こうもフォローしましょう。
    https://teratail.com/questions/26133
    > ・片方で得た回答や自分の追記その他情報は遅滞なく他方にも追記などで伝える
    > ・解決した場合も同じように他方にも解決した内容を伝える

    掲示板使うには、もうちょっとマナーを学び読解力を高めたほうが良いです。

    むこうのフォローを追記したかったので、用件済みです。
    こちらへのコメントもいりません。

    キャンセル

  • 2018/07/16 09:06

    ごめん、また読んでないや、まぁ全体像見る限り粘着質な性格だよね?。
    何が君の活力なのか、知りたくなってきたよ、

    まぁ終わっても終わらなくてもどっちでもいいや・・。
    返信くるのかな~、来ないのかな~

    ま、読まんけどね。。

    キャンセル

  • 2018/07/16 09:22

    自分でクローズしてほしかったのですが残念です。
    こちらでフォローしておきます。

    キャンセル

  • 2018/07/16 09:23

    うおお。。また来た。。

    怖。。

    キャンセル

  • 2018/07/16 09:32

    マルチ投稿先、ご自身でクローズしたみたいですね。
    残念ながら私の方でフォローできませんでした。
    せっかくこちらに良い回答がついているのに誘導ができず非常に残念です。。。

    キャンセル

  • 2018/07/16 09:36

    読んでないけど、根性凄いね~。
    読んでないから、まともな返事は書んけどスマンな。。

    朝からご苦労さん。。

    キャンセル

  • 2018/07/16 09:37

    君の性格は粘着質?。

    YES?、NO?。

    この回答は興味あるから読むかも(笑)

    キャンセル

  • 2018/07/16 11:24

    この回答には興味ありますが、あなたに興味は無いです^^;
    この回答を追いかけてみましたが、あなたが得ることができなかった情報は以下のようです。

    ・DBMS の version と ストレージエンジンによる制限
    ・型選択の際、考慮すべき要件
    ・逆に、要件から制限される型

    調べてる途中で、マルチ投稿見つけたり、全文検索に興味が移って思ってた以上に時間を使ってしまいました。
    いつもなら、調査結果を回答としてまとめるのですが、ちょっと時間が足りないため、今回は放置します。
    興味があれば、調べてみると面白いです。

    キャンセル

checkベストアンサー

+2

まず、人気のブログサイト等を調べてみると、文字数が2000文字程度だったり、
5000文字、そして、10000文字程度なんていうのも、ザラにあるようでした、

無限と言う設定は実際は存在しないので(HDDやメモリなどハード的な理由で制限が必ずかかる。)作成するシステム仕様にあったDB設計をする必要があると思いますよ。

シェアが多いwordpressを参考にするとbestではなくてもbetterになるかと。

ちなみに、記事はtextを使用しているようです。

MariaDB [hogehoge]> desc wp_posts;
+-----------------------+---------------------+------+-----+---------------------+----------------+
| Field                 | Type                | Null | Key | Default             | Extra          |
+-----------------------+---------------------+------+-----+---------------------+----------------+
| ID                    | bigint(20) unsigned | NO   | PRI | NULL                | auto_increment |
| post_author           | bigint(20) unsigned | NO   | MUL | 0                   |                |
| post_date             | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_date_gmt         | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_content          | longtext            | NO   |     | NULL                |                |
| post_title            | text                | NO   |     | NULL                |                |
| post_excerpt          | text                | NO   |     | NULL                |                |
| post_status           | varchar(20)         | NO   |     | publish             |                |
| comment_status        | varchar(20)         | NO   |     | open                |                |
| ping_status           | varchar(20)         | NO   |     | open                |                |

https://wpdocs.osdn.jp/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E6%A7%8B%E9%80%A0#Table:_wp_postmeta

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/15 21:24

    なるほど、wordpressという、既に存在する、
    フリー配布さrている媒体を、参考にするという手段があったのですね。

    考え方としても、とても参考になりました、
    これからも精進するよう心がけます、

    ご回答ありがとうございました。

    キャンセル

0

MySQLについて参考にさせてもらっているサイトはこちらですね。

http://nippondanji.blogspot.com/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/15 21:25

    しっかりと勉強して、精進したいと思います。

    親切にURLを教えて下さって、ありがとうございました。

    キャンセル

  • 2018/07/15 22:04

    ついた回答に噛み付くくらいなら、QAサイト使わないほうがいいよ。

    キャンセル

  • 2018/07/16 07:21

    あなたとの会話に関係ない話を、あなたとするつもりはありません。
    さいなら。

    キャンセル

0

今だから言える、

「どうすれば適切ですか?」じゃなく、「おまえがどうしたいか?」だけどねー!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/15 23:06

    いいこと言うね〜

    キャンセル

  • 2018/07/16 07:16

    一対一ならね、これはこう、これはこう、
    で、終れるんだけど、

    こうやって触発される人たちが出てくると、
    色んな意見に回答しなきゃならんハメになる。

    どうせ一人目への答えが気に障ったから絡んできてるんだよね?。
    次から次へと相手にしなきゃならん俺の立場もわからんかね?。

    質問内容に答えてるならともかく、そうじゃないからめんどーー。

    お前に判るように説明するのもめんどい、
    お前にとっては一人目でも、俺にとっては三人目なんだよ(四人目かな?)、うぜーー

    まぁ、俺もお前と同じ「言いたがり」だから、こうやってわざわざ返信してるんだけど、
    もうこの質問に回答者が現れなければ、これ以上嬉しいことはない。

    キャンセル

  • 2018/07/16 10:57

    >次から次へと相手にしなきゃならん俺の立場もわからんかね?。

    ま っ た く わ か ら ん。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.87%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • MySQL

    5330questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • CentOS

    2477questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • XAMPP

    452questions

    XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

  • MariaDB

    270questions

    MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。