私のプロジェクトの複数のテーブル間の関係を設計する方法がわかりません。私は通常、プロジェクトのアプリケーション部分で作業していますが、私はDB(PostgreSQL)の仕事を担当しています。私はDBを適切に設計する方法を理解するために最善を尽くしています。ソーシャルネットワークでさまざまなページタイプの投稿を処理する
プロジェクトは、ソーシャルネットワーク(Facebookなど)と非常によく似ています。個人はuser
としてサイトにサインアップします。 user
には、business
またはschool
などのページを作成して管理する機能があります。すべてのユーザーとページには投稿を許可するフィードがあります。私は、共通の情報があまりないので、各ページタイプとユーザーを別々のテーブルに入れました。現在のところ、ページタイプは2種類しかありませんが、今後さらに追加されます。しかし、posts
テーブルを設計する方法がわかりません。
ユーザーとページの両方が、他のユーザーまたはページの壁に投稿できます。ポスターとポスターの両方がuser
であるか、または2つのページタイプのいずれかになる可能性があるので、いずれかへの参照を適切に保存する方法を理解できません。まず
は、私はそのようなfrom_id
、from_type
、to_id
、およびto_type
として列を追加することを考えたが、それはこれがベストプラクティスではないことを私の理解です。すべてのユーザーとページが投稿を横断できるため、投稿セクションごとに表を作成するだけではありません(例:-)。
私は以下の記事を読んだが、私は、私は完全に答えを理解していないか、それも私がしようとしてるものに適用される場合:
Why can you not have a foreign key in a polymorphic association?
それが最善だろう上記の答えに示されているようなスーパーテーブルを作成するには?私はそれがどのように見えるかははっきりしていません。私は単に正しい方向に私を向ける誰かを探しています。
ありがとうございました。
「id」からどのように区別することができますか?著者とターゲットの両方は、ユーザー、学校、またはビジネスになることができます。タイプがなければ、私はどのテーブルが「id」を指すのかを知りません。 – David
テーブル間でIDを重複させるのではなく、一意にする必要があります。次に、 'users'テーブルと' businesses'テーブルの両方でidを探すことができます。 – zyamys