1

Devise で生成された User モデルがあります。

今、すべてのユーザーに他の列を持たせたい

- balance
- paperclip logo
- website
- address
- phone
etc

そのようなデータを整理する最良の方法は何ですか?

別のテーブル (Phones テーブル、Address テーブル、Userlogo テーブルなど) を作成して、1 対 1 の関係を確立する必要がありますか?

すべてを 1 つのテーブルにまとめるのが悪いと聞いたことがあります。

色々な意見が聞けて良かったです。

4

1 に答える 1

1

すべてを 1 つのテーブルにまとめる:

  • 利点: ユーザー モデルを取得するために結合する必要がないため、クエリ時間を節約できます。
  • 欠点: ユーザー モデルには大量のデータが含まれるため、1000 ユーザーの配列を保持している場合、それらはメモリを消費します。

属性の分離:

  • 利点: ユーザー モデルはほとんどメモリを消費しません (メール、名前などの基本のみ)。
  • 欠点: ユーザーに関する情報を取得するための多数の結合

選択はアプリケーションの機能に大きく依存すると思います。そのため、ユーザーに関するすべての情報が常に必要な場合は、すべてを 1 つのテーブルに配置するか、データを分離することができます。userとにかく、モデルと という名前の別のモデルを持つことができるので、両方を行うことができ、そのモデルは、user_dataなどのすべての追加情報を保持します。このようにして、両方のアプローチから利点を得ることができます。phoneaddress

于 2012-12-24T20:02:33.687 に答える