2012-08-28 16 views
6

1つの投稿に多数のコメントがあり、そのコメントが基本的に投稿と同じ場合(タイトル、写真、オーディオなど)、2つのテーブルを作成するか1つだけ作成しますか?投稿とコメントのデータベースデザイン

たとえば、1つのテーブルしか使用できない場合、parent_idカラムを持つことができます。何も返されない場合はnullになります。そうでない場合は、親投稿のIDを持ちます。一方、私はポストテーブルとコメントテーブルを作成することができます。コメントは、他のコメントに返信することもできますので、混乱を招く恐れがあります。

*Post* 
    id 
    title 
    content 
    image 
    audio 
    parent_id 

または、第二の選択肢は、インデックスを作成してできるようになる何

*Post*      *Comments* 
id        id 
title       title 
content      content 
image       author_id 
audio       post_id 
author_id      image 
           audio 

。 Infact私はさらにauthor_idまたはpost_idを追加する必要はありません私は最初からインデックスを使用する場合私は?

あなたはこのことについて何か考えていますか?どちらがより効率的でしょうか?私はこれにredbeanphpを使うことを考えています。

答えて

2

2番目のオプションが良いでしょう。掲示板を表示するとき、あなたはコメントを気にせず、インデックス付きの親投稿IDカラムでそれらを探すことは高速です。投稿とコメントは異なるフィールドを持つ可能性が高いため、それらを別々に保つことは正しいです。最初のオプションの親idインデックスは正常に動作しますが、概念的には面倒ですし、基本的には半分に使用するインデックスを作成しています。

0

原則として:テーブルはエンティティと呼ばれるため、アプリケーション内の各entityを分離し、表で示す必要があります。ここでは、投稿とコメントを見ても、それぞれ同じ種類のデータを持っていますが、最終的にはそれぞれ別個のエンティティなので、2つの表に分ける必要があります。この行動は個人的な意見ではありません。より円滑なアプリケーション開発につながるのが基本ルールです。