4

モデルUserには多くの機能ProjectがありますTask

User(id, email, password)
Project(id, user_id, name)
Task(id, user_id, project_id, title)

結合を行わずにアクセスを高速化するために、モデルのように上位の親のキャッシュ列を用意することをお勧めしますか、それとも古き良きソリューションに固執する必要がありますか?user_idTask:through

これが良いことよりも害を及ぼすのではないかといつも心配していたので、これについての考えを聞きたいです.

4

1 に答える 1

3

それを行うのは良い習慣だとは言えません。その追加のキーを親の同じキーと同期させておく必要があり、データは可能な限り正規化されていません。

よほどの理由がない限り、私はその道をたどりません。

関連する User モデルにたどり着くためにモデル階層をたどる必要があるのがあまりにも不便であることが理由である場合は、そのコードを表現するためのより良い方法があるので、そうし続ける必要はありません。多くのルックアップ/結合?

それが主にパフォーマンス上の理由である場合は、より良い解決策があるかもしれません - キャッシング、データベース インデックス、および役立つ可能性のあるその他の手法です。

余分なキーを追加することが、あなたがやろうとしていることに対する最良/最も簡単な解決策である場合は、問題ありません。最初にもっと良い方法があるかどうかを検討します。

于 2012-11-06T23:04:34.567 に答える