2009-07-28 21 views
0

コメント、評価、タグなどのモジュールを自分のエンティティに実装したいと考えています。私は何を思った:タグ、コメント、評価などデータベース設計

comments_table - > comment_id、COMMENT_TEXT

entity1 - > entitity1_id、entity1_text

entity2 - > entitity2_id、entity2_text

entity1_comments - > entity1_idは、

entity2_commentsをcomment_id - > entity2_id、comment_id

....

このアプローチは正しいですか?

答えて

1

これはそれより簡単です。

エンティティ:実体識別子EntityText

コメント:CommentID AssocEntityID CommentText

AssocEntityIDエンティティテーブル実体識別子列への外部キー関係を持っている

あなたはこのような何かをしたいしようとしています。この解決のために

、ID 1とエンティティのすべてのコメントを取得するには、あなたがこれを行うだろうが:

SELECT CommentID, CommentText FROM Comments WHERE AssocEntityID = 1 
1

いいえ、私はコメントとエンティティ間の交差テーブルでちょうど1 entity_commentsテーブルを持つことをお勧め。 1つのコメントテーブルにentity1とentity2のIDを別々の属性として持つ必要があります。

ので、それは次のようになります。

​​

簡単な選択は次のようになります。

select text 
    from entity1 
    , entity_comments 
    , comments_table 
    where entity1.id = entity_comments.entity1_id 
    and entity_comments.comment_id = comments_table.id 
+0

あなたはentity1 ANS entity2がentitycommentsテーブルに属性として二つの属性を挿入しますと言います。もし私が10の実体を持っていたら? 10個の属性とヌル値がたくさんありますか? –

+0

その時点で、テーブル構造全体を再設計する必要があるかもしれません。新しい各エンティティテーブルで交差テーブルに属性を追加し続けるのは面倒です。エンティティ内の行ごとにコメントが1つだけの場合は、comments.idをentity1テーブルに置き、intersectテーブルを削除します。交差テーブルは、エンティティ1の行ごとに複数のコメントを許可します。 – northpole

関連する問題