重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

わかりにくいタイトルで申し訳ございません。

コミュニティサイトをつくっています。
(ブログサービスの規模を小さくしたようなサイト)

ユーザーが登録される度に、mySQLにユーザー名、パスワード、メールアドレス、日記のデータという感じでデータをいれていってます。
ユーザー名、パスワード、メールアドレスは各ユーザーひとつのデータしかないのですが、日記データのようなものは、日々データが増え続けます。
こういった場合、下記のような形で保存して、出力時に<>でsplitみたいな感じにしてますが、どうもナンセンスなやりかたのような気がしてなりません。

2005-06-26<>タイトル<>本文<>
2005-06-30<>タイトル2<>本文2<>
2005-07-01<>タイトル3<>本文3<>
2005-08-06<>タイトル4<>本文4<>

一般的なやりかたはどういう形なのでしょうか?
もしくは、もっとベターなやりかたを教えていただければ幸いです。

ご教授の程、よろしくお願いいたします。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/11 22:03

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す