web-dev-qa-db-ja.com

MySQLで非常に単純なブログのテーブルを構造化する方法は?

既存のLAMPサイトの1つに非常にシンプルなブログ機能を追加したいと思います。これはユーザーの既存のプロファイルに関連付けられ、ブログの各投稿のタイトルと本文を入力するだけで、送信時に日付が自動的に設定されます。彼らはいつでもブログの投稿とタイトルを編集および削除することができます。ブログは、最新から最も古いものまで、おそらく1ページに20件の投稿が表示され、その上に適切なページ付けが行われます。他のユーザーは各投稿にコメントを残すことができ、ブログの所有者はコメントを削除できますが、事前モデレートはできません。基本的にはそれだけです。私が言ったように、非常に簡単です。

このためにMySQLテーブルをどのように構成する必要がありますか?

ブログの投稿やコメントがあるので、それぞれに別々のテーブルが必要になると思いますが、それは正しいですか?しかし、次に、各テーブルにどの列が必要で、どのデータ構造を使用する必要があり、2つのテーブルをどのようにリンクする必要がありますか(外部キーなど)?

このようなチュートリアルは見つかりませんでした。私が探しているのは、ユーザーに可能な限り最もシンプルなバージョンのブログを提供することです。タグ、モデレート、画像、派手なフォーマットなどはありません。他のユーザーによるコメント付きのシンプルな日記タイプの純粋なテキストブログです。

12
ProgrammerGirl

次の表が必要だと思います

Posts
  PostID (identity)
  PostTitle (varchar)
  PostDate (datetime)
  Deleted (int)
  OwnerID (int FK to Users)

PostDetails
  PostDetailID (identity)
  PostID (FK to Posts)
  Sequence (int) -> for long posts you order by this
  PostText (text)

Comments
  CommentID (identity)
  Comment (text)
  CommenterID (int FK to Users)
  CommentDate (datetime)
  Deleted (int)

Users
  UserID (identity)
  UserNAme (varchar)
  UserEmail (varchar)
  CreatedDate (datetime)
  Active (int)

すべての日時フィールドはデフォルトで現在の時刻に設定され、すべてのIDフィールドはPKです。投稿の詳細のシーケンスフィールドは、テキストタイプを使用せず、varcharを使用する場合に備えており、投稿を複数のレコードに分割できます。

これ以外に、私はオープンソースのブログシステムを見て、それらが何をしたかを見て、私が必要としないものを差し引きます。

それが役立つことを願っています

28
Carlos Grappa