2011-07-21 6 views
2

複数の投稿タイプを持つブログエンジンを構築しています(例:テキスト、画像、リンク、見積もり)。ブログエンジンのデータベースをTumblrのような複数の投稿タイプのために構造化するにはどうすればいいですか?

私はそれを見る方法、私は2つのオプションがあります。

オプション1:すべての列を持つ単一の記事テーブル、必然的にオプション2

Post table ========== * post_id * created_at * updated_at * user_id * post_type * text * image_url * link_url * quote_source 

NULLになりますそのうちのいくつかを:各ポストの種類ごとに1つのテーブル

Post table 
========== 
* post_id 
* created_at 
* updated_at 
* user_id 
* post_type 

Text table 
========== 
* post_id 
* text 

Image table 
=========== 
* post_id 
* image_url 

私はあなたがヒントを得ると思います。各アプローチの賛否両論は何ですか?

Tumblrは何をしていますか? (APIドキュメントからは分かりません)

答えて

3

同様のエンティティ(この場合は「投稿」)に複数のテーブルを使用しないようにしてください。私はTumblr自身がどのようにそれをしているのか分かりませんが、最初の投稿と似ている可能性が最も高く、各行にいくつかのフィールドがNULLであり、実行可能コードがpost_type値を評価してそれを処理する方法を決定します。

「1つの」リクエストを処理するために、複数のテーブルからデータを取り出すと、複数のテーブルが急速に悪夢になります。たとえば、先週、すべてのタイプのすべての投稿をSELECTしたい場合は、各テーブルからSELECTを実行して結果をマージする必要があります(SQL tempテーブルのある種の並べ替え、またはスクリプト/実行可能コード)。それは単純なことです。

また、私はTumblrがそれをやっているかどうかわからないし、 "正しい"方法でもありませんが、効率的なやり方は1つのテーブルです。