2016-05-12 21 views
0

私のプロジェクトの複数のテーブル間の関係を設計する方法がわかりません。私は通常、プロジェクトのアプリケーション部分で作業していますが、私はDB(PostgreSQL)の仕事を担当しています。私はDBを適切に設計する方法を理解するために最善を尽くしています。ソーシャルネットワークでさまざまなページタイプの投稿を処理する

プロジェクトは、ソーシャルネットワーク(Facebookなど)と非常によく似ています。個人はuserとしてサイトにサインアップします。 userには、businessまたはschoolなどのページを作成して管理する機能があります。すべてのユーザーとページには投稿を許可するフィードがあります。私は、共通の情報があまりないので、各ページタイプとユーザーを別々のテーブルに入れました。現在のところ、ページタイプは2種類しかありませんが、今後さらに追加されます。しかし、postsテーブルを設計する方法がわかりません。

ユーザーとページの両方が、他のユーザーまたはページの壁に投稿できます。ポスターとポスターの両方がuserであるか、または2つのページタイプのいずれかになる可能性があるので、いずれかへの参照を適切に保存する方法を理解できません。まず

は、私はそのようなfrom_idfrom_typeto_id、およびto_typeとして列を追加することを考えたが、それはこれがベストプラクティスではないことを私の理解です。すべてのユーザーとページが投稿を横断できるため、投稿セクションごとに表を作成するだけではありません(例:-)。

私は以下の記事を読んだが、私は、私は完全に答えを理解していないか、それも私がしようとしてるものに適用される場合:

Why can you not have a foreign key in a polymorphic association?

それが最善だろう上記の答えに示されているようなスーパーテーブルを作成するには?私はそれがどのように見えるかははっきりしていません。私は単に正しい方向に私を向ける誰かを探しています。

ありがとうございました。

答えて

0

投稿には著者(ユーザー)とターゲット(ユーザー、ビジネス、学校)があります。あなたが必要とするのは、posts_idにtarget_idを格納することだけです。ポストはターゲットのタイプについては気にしません。そのIDだけです。

+0

「id」からどのように区別することができますか?著者とターゲットの両方は、ユーザー、学校、またはビジネスになることができます。タイプがなければ、私はどのテーブルが「id」を指すのかを知りません。 – David

+0

テーブル間でIDを重複させるのではなく、一意にする必要があります。次に、 'users'テーブルと' businesses'テーブルの両方でidを探すことができます。 – zyamys

関連する問題