0

認証にデバイスを使用する User モデルでアプリを作成しています。また、すでに持っている多くのデータをシードとして使用し、持っていると予想されるデータ (ソーシャル ネットワークのプロファイルやまだ持っていない個人情報など) の列を作成しています。テーブルの列が増え始めたので、認証データ用の User テーブルを作成してから、プロファイル ページに表示されるユーザーの詳細用に User_Profile テーブルを作成することにしました。これがより良いアイデアであるか、すべてを1つのテーブルに貼り付けてから、ユーザーに関連する列をさらに追加し続けるかどうか疑問に思っています。

User.create!(


               devise related columns ommitted....

               firstname: "Marcy",
               middle: "Eve",
               lastname: "Bishopf",
               sex: "f",
               company: "Johnston Windows",
               address: "210-3260 North Dr",
               city: "Victoria",
               province: "BC",
               postal: "V9T 1XS",
               email: "mb@blahblah",
               phone: "(250) 756-3777",
               website: ""
               twitter: "",
               facebook: "",
               linkedin: "",
               year: "",
               school: ""
               motto: ""

               more columns for personal data that I haven't thought of yet


               )
4

1 に答える 1

0

私の理解が正しければ、ユーザー認証とユーザー メタ データ (名前およびその他のプロファイル フィールド) をデータベースに永続化する必要があります。
データベースは確実に正規化する必要があります。認証用のユーザー テーブルと、ユーザー テーブルの user_id によって参照される別のユーザー プロファイル テーブルを使用することをお勧めします。

これは、次の理由から重要です。

  1. ユーザーがログインする必要がある場合は、ユーザー テーブルに対してパスワードのハッシュを確認するだけです。
  2. ユーザーがログインしている場合、ログインしているユーザーの user_id を使用して、ユーザー プロファイル テーブルからプロファイルを取得するだけです。
  3. ユーザー プロファイル テーブルに新しい列が追加されても、ユーザー テーブルは影響を受けません。
  4. ただし、ユーザー数が多い場合、テーブルのユーザー プロファイルを変更すると、テーブルをロックする操作にコストがかかる可能性があります。
于 2013-01-19T05:20:08.767 に答える