2012-03-25 8 views
0

FacebookやGoogle+の共有ボタンやTwitterのリツイートと同様に、他のユーザーが投稿を共有できるようにする機能を実装したい。他のユーザーが投稿を共有できるようにするための最適なデータベース設計

2つの選択肢があります:

1)私はポストの複製コピーを作成し、オリジナルのポストIDを追跡し、これが共有ポストで明らかに列を持っているが。

2)投稿テーブルに投稿IDの外部キーである投稿IDを保存する別のテーブル共有投稿があります。プログラミングの観点で話す

基本的に私のポストに参加して、共有ポストテーブル

Post(post_id(PK), post_content, posted_by) 

    SharedPost(post_id(FK to Post.post_id), sharing_user, sharedfrom(in case someone shares from non owners profile)) 
別のテーブルにオリジナルのポストへのポインタを保持し、ユーザーと、共有のもので投稿を取得する必要があるとき、私は左を行います

私は第二の選択に賛成ですが、そこにいる専門家のアドバイスを知りたがっていますか?

私のwebappの1つのより多くの記事は、Facebookのサイズのツイートのサイズの行に多くなります。

答えて

1

あなたのシステムが2つのうちのいずれかを実行することをお勧めします。 元の投稿を参照する投稿のインラインコード(ハイパーリンクに似ています)を入れてください。あなたが画像や他のメディアを引っ張っているかどうかは分かりません。このインラインコードに遭遇すると、システムは、オリジナルを表示するためのハイパーリンクを作成するか、元のデータを共有しているポストにプルすることができます。

また、あなたのpostsテーブルはpost_idまたは外部アイテムへのハイパーリンクを共有することができどちらかshared_postの列を持つことができます。システムは、値がnullまたは-1であれば、それが共有ポストではないことを認識し、それを通常扱うことができます。

共有投稿の重複を保存するための新しいテーブルを作成することはお勧めしません。更新や更新はより困難になります。

さらに、このシステムに関連する共有グループを計画する場合、post_idsharing_group_idにリンクする別のテーブルが必要になることがあります。

+0

あなたは新しい投稿を作成し、投稿内容にオリジナルの投稿へのハイパーリンクを追加し、このリンクが再生されたら、このリンクが指しているオリジナルのコンテンツを表示すると言います。右? – codecool

+0

これは1つのオプションです。もう1つは、リンクを使用して(後続/クリックして)元の投稿の準備ビューに移動する必要があるということです。 – jheep

+0

ユーザーがリンクをたどったときに余分なdbクエリを取ることはありませんか?オリジナルの投稿コンテンツを持ってくると、自己参加になります。 – codecool

関連する問題