1

私は Yii PHP フレームワークで Web アプリを構築することを学んでいますが、私の質問は Web アプリケーション全般に​​当てはまると思います。

写真や投稿など、さまざまな種類の親オブジェクトに関連するコメントのデータベース テーブルを構造化する方法を知りたいです。

写真と投稿は本質的に異なるものであり、同じテーブルに収まることはありません。ただし、これらのオブジェクトのコメントは、ほとんどの場合、同じ形式です。

私の質問は 2 つあります。複数の親オブジェクトのコメントを同じテーブルに入れることは可能ですか? [私には自然な解決策のように思えますが、外部/主キーなどでこれを処理する方法がわかりません。親オブジェクトのタイプを指すキーも必要だと思います...?]

次に、これらのコメントを同じテーブルに入れることができる場合、それは効率的ですか? 親オブジェクトごとにコメント テーブルを持つ方が効率的ですか?

事前に感謝します。それが誰かにとって十分に興味深いトピックであることを願っています.

乾杯、

ニック

4

3 に答える 3

1

もう 1 つのオプションは、すべての投稿が (タイプに関係なく) 関連する投稿テーブルを持つことです。したがって、それが写真であろうと通常の投稿であろうと、このテーブルにレコードが作成されます。

コンテンツのタイプに応じて、写真と通常の投稿の両方をこのテーブルに保存できます (それぞれにオプションのフィールドがあります。 Yii モデルの検証シナリオについて学びます)。

したがって、投稿テーブルは次のようになります。

  • ID
  • 投稿内容
  • 写真
  • 写真の種類
  • 等...

両方を同じテーブルに保存しないことを選択した場合、写真用に 1 つのテーブルと、post_id に関連する投稿用に 1 つのテーブルを持つことができます。

そうすれば、post_id に関連する単一のコメント テーブル (正しいルートに関係なく) を持つことができます。

于 2012-10-21T19:29:26.387 に答える
1

Comment を独自のテーブルとしてモデル化します。Comment テーブルには、PhotoId と PostId の列があります。これらは、null を許可する外部キーです。次に、データベース チェック制約により、PhotoId と PostId のいずれかが null であることを確認します。つまり、各コメントはちょうど 1 つの親に関連付けられます。

于 2012-10-22T01:08:24.523 に答える