フィールド内のデータの増加について

このQ&Aのポイント
  • ユーザーが登録される度に、mySQLにユーザー名、パスワード、メールアドレス、日記のデータという感じでデータをいれていってます。こういった場合、<>&lt;>でsplitみたいな感じにしてますが、どうもナンセンスなやりかたのような気がしてなりません。
  • 一般的なやりかたはどういう形なのでしょうか?もしくは、もっとベターなやりかたを教えていただければ幸いです。
  • フィールド内のデータの増加について、一般的なデータ保存の方法を教えてください。もっと効率的なやり方があれば教えていただけると助かります。
回答を見る
  • ベストアンサー

フィールド内のデータの増加について

わかりにくいタイトルで申し訳ございません。 コミュニティサイトをつくっています。 (ブログサービスの規模を小さくしたようなサイト) ユーザーが登録される度に、mySQLにユーザー名、パスワード、メールアドレス、日記のデータという感じでデータをいれていってます。 ユーザー名、パスワード、メールアドレスは各ユーザーひとつのデータしかないのですが、日記データのようなものは、日々データが増え続けます。 こういった場合、下記のような形で保存して、出力時に<>でsplitみたいな感じにしてますが、どうもナンセンスなやりかたのような気がしてなりません。 2005-06-26<>タイトル<>本文<> 2005-06-30<>タイトル2<>本文2<> 2005-07-01<>タイトル3<>本文3<> 2005-08-06<>タイトル4<>本文4<> 一般的なやりかたはどういう形なのでしょうか? もしくは、もっとベターなやりかたを教えていただければ幸いです。 ご教授の程、よろしくお願いいたします。

  • MySQL
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

第一正規化というキーワードで検索してもらえればわかると思います。 以下、とりあえずご参照ください 冗長化してしまう情報(日記情報)を別テーブルにしてしまいましょう。 よって、ユーザ情報用テーブルと、日記情報テーブルに分割します。 で、それらの2個のテーブルを関連付ける項目を1個作ります。 ここではユーザIDとします。(別にユーザ名としても動きますが) ○ユーザ情報用テーブルとして、以下の4項目。 ユーザID、ユーザ名、パスワード、メールアドレス ○日記情報テーブルとして、以下の2項目。 ユーザID、日記データ たとえば、 ○ユーザ情報用テーブルの内容 ユーザID、ユーザ名、パスワード、メールアドレス 1,A-san,password,A-san@mail.com 2,B-san,password,B-san@mail.com 3,C-san,password,C-san@mail.com .... .... .... ○日記情報テーブルの内容 ユーザID、日記データ 1,A-sanの本文1 1,A-sanの本文2 1,A-sanの本文3 2,B-sanの本文1 3,B-sanの本文1 3,B-sanの本文1 .... こんなテーブルにして、あとはプログラミングしてあげればいかがでしょうか。

参考URL:
http://www.wakhok.ac.jp/DB/section2.7.6.html
eltech
質問者

お礼

ご丁寧に回答頂きありがとうございました。 このスタイルがやはり一番みたいですね。 さっそくとりかかりたいと思います。 ありがとうございました。

その他の回答 (1)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

userと日記部分のテーブルを別けてリレーションすれば良し

関連するQ&A

  • データベースのフィールドのデータ型について

    くだらない質問で申し訳ありませんが宜しくお願いします。 下記のようなデータを格納するテーブルを構築しています。 ・ユーザーID ・名前 ・カタカナ ・パスワード ・年齢 ・郵便番号 ・住所1 ・住所2 ・住所3 ・電話番号 ・メールアドレス ・備考 ・削除フラグ ・登録者 ・登録日 ・更新者 ・更新日 上記の内容を下記のようなテーブルのフィールドのデータ型を考えました。 ・ユーザーIDのデータ型をVARCHAR(4) ・名前のデータ型をVARCHAR(32) ・カタカナのデータ型をVARCHAR(32) ・パスワードのデータ型をVARCHAR(255) ・年齢のデータ型をINTEGER ・郵便番号のデータ型をVARCHAR(8) ・住所1のデータ型をVARCHAR(255) ・住所2のデータ型をVARCHAR(255) ・住所3のデータ型をVARCHAR(255) ・電話番号のデータ型をVARCHAR(18) ・メールアドレスのデータ型をVARCHAR(255) ・備考のデータ型をTEXT ・削除フラグのデータ型をVARCHAR(1) ・登録者のデータ型をVARCHAR(4) ・登録日のデータ型をTIMESTAMP ・更新者のデータ型をVARCHAR(4) ・更新日のデータ型をTIMESTAMP そうしたら下記のような風にテーブルのフィールドのデータ型にしたら格納する文字列の桁エラーが起こらないからどうといわれました。 ・ユーザーIDのデータ型をVARCHAR(4) ・名前のデータ型をTEXT ・カタカナのデータ型をTEXT ・パスワードのデータ型をTEXT ・年齢のデータ型をTEXT ・郵便番号のデータ型をTEXT ・住所1のデータ型をTEXT ・住所2のデータ型をTEXT ・住所3のデータ型をTEXT ・電話番号のデータ型をTEXT ・メールアドレスのデータ型をTEXT ・備考のデータ型をTEXT ・削除フラグのデータ型をVARCHAR(1) ・登録者のデータ型をVARCHAR(4) ・登録日のデータ型をTIMESTAMP ・更新者のデータ型をVARCHAR(4) ・更新日のデータ型をTIMESTAMP ※現在、使用しているデータベースはPostgreSQLですが、Microsoft SQL ServerやOracleやMySQL等の他のデータベースでもいいものなのかもご教授いただけると助かります。 私の知識不足でどちらがいいのかがわからず投稿させてもらいました。 申し訳ありませんが皆さんのお知恵をお貸し下さい。 宜しくお願いします。

  • 緊急の問題があり、質問させてください。

    緊急の問題があり、質問させてください。 以前、私は海外のあるコミュニティサイトに登録していました。 いま、メインで使用している、メールアドレスを使い、 登録をしていたのですが、 ログインするためのパスワードを 忘れてしまいました。 パスワードを忘れた場合は、ユーザー名を認証して、 登録アドレスに新たなパスワードが送られてくる仕組みのようですが、 管理者がすでにいないのか、 メールが送られてきません。 なにが問題かといういと、 そのコミュニティサイトの存在を、 すっかり忘れていたのですが、 先日、googleで自分のメールアドレスを検索したら、 自分の登録情報のページが表示されてしまいました。 登録されているメールアドレスは、 私にとって重要なので、 このコミュニティサイトから登録情報を削除したいと思っています。 私のアドレスを知っている人に、 このコミュニティに登録していることを知られたくないのです。 また、登録時に送られてきたメールに サポートメンバーのメールアドレスらしきものがありましたので、 メールを送ってみようと試してみましたが、 既に宛先が存在しないようなのです。 どうにかして登録情報を削除するか、 検索表示されないようにしたいのですが、 私では、どうしようもなく、 みなさまの知恵を借して頂きたく思い、 質問させていただきました。 よろしくお願い致します。

  • aliasesの1フィールド目をメールアドレスへ変換して2フィールド目も表示する

    aliasesファイルの ドメイン.com~user:  user01,user05,外部メールアドレス,user04, となっている行から1フィールド目をメールアドレスに変換して 2フィールド目のユーザを1フィールド目に移動し、さらに 特定のユーザ名前だけを残すことはできますでしょうか こうなってほしいのです↓ user05 user@ドメイン.com 先ほど以下のコマンドでメールアドレスに変換することは できたのですが、関連するユーザを同じ行に表示させたいのですが、 このままではどのユーザのメールアドレスかわからないのです。 awk -F: '/~.*:/{split($1,a,"~"); printf "%s@%s\n", a[2], a[1]}' < /etc/mail/aliases どのようにしたら希望通りになりますでしょうか

  • テキスト保存と比較してみて

    今運営してるコミュニティーサイトでユーザーのデータをmySQLで保存するかテキスト保存にするかで迷っています。 ユーザー数1000人、日々のユニークアクセス数が約1000といった感じです。 現在はよく使うデータはテキスト保存で、あまり使わないのはmySQLという感じに分けています。 できればすべてmySQLで保存したいのですが、ナンセンスな考えでしょうか? 両保存方法について長所・短所をお聞かせください。 お願い致します。

    • ベストアンサー
    • MySQL
  • PHPで更新するデータにNULLが入っている場合

    PHP初心者です。 PHPでSQLのUPDATEをしようと思っているのですが、更新するデータがNULLの場合、もとのデータを更新しない、という処理をしたいと思っています。 例えば、 ユーザID、ユーザ名、メールアドレス、と言ったテーブルがあった場合、 ユーザID=null、ユーザ名=null、メールアドレス=xxxxx@gmail.com と更新するとき、 ユーザIDとユーザ名は更新せずに、メールアドレスだけ更新するには、どういった処理をすればいいのでしょうか?

    • 締切済み
    • PHP
  • ログイン画面のソース

    会員制のサイトを作ろうとおもい ユーザー名とパスワードを打ち込むと 設定されたメールアドレスに送るように したいのですがどうしたらいいですか?

  • DynDNSアカウント取得について

    タイトルのサイトでユーザー名、メールアドレス、パスワード 等、所定の入力しアカウントの取得を試みましたが Successful Password Changeというメールが届き メールに張られてるショートカットを利用し所定の場所で パスワードの変更を行ってますが また上記メールが届きます。 どなたか取得方法をご教示願えませんか?

  • Outlook Expressのユーザー名と‥。

    軽量メールソフト「npopq」をダウンロードしたのですが、順次、メールサーバーやメールアカウント、メールアドレス、ユーザー名とアドレスを入れて、いざ、新着メールを試したところ、「ユーザー名かパスワードが違っているとのエラーが出ました」。ユーザ名は「認証ID」をパスワードは認証パスワードを入れたのですが、他のユーザー名、パスワードは覚えてないです。Outlook Expressを使用していますが、ユーザー名やパスワードはどうしたら確認出来るのか教えて下さい。機種はXP.

  • データーの抜き出し

    使っている日記ソフト(justsystem)のデーターがおかしくなってしまい、2ヶ月分ほどデーターが見えなくなってしまいました。当然justsystemに連絡しましたが、ソフトが古くてサポート外と言われ困っています。 色々と調べて判った事は、 ・データー自体(拡張子.JND)は残っていて、何かのデーターが壊れていて表示されていないだけの様だという事。 ・そのデーターを、テキストエディターやバイナリエディターで見ても文字化けして肝心の本文の内容が・見えないこと(一部の英語と日本語は見える)。 ・ファイルは1日毎に、例えば1月1日のデーターならNK0101.JNDとNK0101.jniと言った形で保存されていると言うこと。(jniの内容はその日の天気のinfoデーターの様で見えるが意味はなし) です。 バイナリエディタはstirlingを使ってその中にあるキャラクターセットも全て試してみましたが無理でした。 どんな形でも、日記の本文だけで良いので見える(引き抜く)事ができないものでしょうか?

  • メールアドレスとパスワード

    ホテルの予約をしようと思ってます。   しかし、どうやっても分かりませんでした、どうすれば良いんでしょうか? メールアドレスとパスワードが普通に入れてもダメでした。 特にパスワードが、隠して・・・・・というような感じではなく、 ABC・・・というようにそのまま分かるのはおかしいし。 良く分からないので教えて下さい。 (原文)  ”ご予約にはメールアドレスとパスワードを含むユーザー情報が必要です。 ご登録して頂いたメールアドレスがユーザー名(ID)となり、ユーザー名とパスワードはご予約終了後に用意されるユーザー様専用ページ(予約内容の確認や変更が行なえます)に ログインするための認証キーとなります。 (1)メールアドレス入力 (2)パスワードの発行 携帯電話・スマートフォンなどのメールをご利用の場合は、あらかじめ【 ××××・・】のドメイン指定解除を行なって下さい。 しばらくしてもメールが届かない場合は、30分以上経ってから再度送信して下さい。 (3)パスワードの入力 ご注意!:上記メールアドレスに発行されたパスワード以外では予約が完了できません!”