0

FOSUserBundle を使用して Symfony2 で開発していますが、DDBB の設計についてはよくわかりません。私は自分の状況をできるだけ簡単に説明しようとします。私のプロジェクトはFacebookのようなものだとしましょう。したがって、エンティティ「ユーザー」がアプリケーション全体で最も重要で関連性があり、すべてがそれに関連していることがわかります。

ポイントは、FOSUserBundle で動作する DB 層 (テーブル、ドクトリン エンティティ、および関係) をどのように処理するかがよくわからないということです。デフォルトでは、エンティティ User にはすべての FOSUserBundle フィールド (username、email、token、email_canonical など) が必要です。したがって、「UserReal」など、他のエンティティとの関係を処理するために別のエンティティを作成する必要があるかどうかは疑問です。最初のエンティティ「ユーザー」と OneToOne の関係があり、魔女はログインまたはアクセスの目的でのみ使用されます。または、1 つのオブジェクト「ユーザー」を作成し、それですべてを処理します。

私のオプション:

1. - FosUserBundle User エンティティを拡張したエンティティ「UserSecurity」があり、アクセス (ログイン、ログアウト、登録) の場合にのみ使用されるように制限されています。- エンティティ「UserReal」があるか、「ユーザー」ウィッチだけがユーザーからのすべてのフィールド プロパティ (名前、姓、場所) を持っています。他のエンティティ (ページ、グループ、写真など) との関係があります。それは「主な」エンティティであり、魔女は生成された値の戦略を持っています。- UserSecurity は、UserSecurity->id_user を通じて、User と OneToOne の関係を持ちます。- 登録は両方のエンティティを挿入する必要があります。

  1. 逆に

    • ポイント1と同様ですが、メインエンティティは「UserSecurity」であるため、idがそこにあり、生成された値の戦略も含まれます。
    • ユーザー エンティティには、フィールド id_user があり、OneToOne と UserSecurity の関係があります。
  2. 1 つのオブジェクトを使用する

    • 1 つのエンティティで FOSUserBundle を拡張し、それにすべての関係を設定します。
    • セキュリティオプションを持たないクリーンなオブジェクトユーザーが必要なので、これは好きではありません。

Facebook には多くの User エンティティ インスタンス (たとえば、各友人に 1 つ) がありますが、ログに記録されたユーザーには 1 つのインスタンスしかないため、これをすべてに使用すると間違っていると考えています。

他の意見/提案を知りたいです。

混乱していないことを願っています(または混乱していませんでした)。

よろしくお願いします。

4

1 に答える 1

1

OneToOneFOS ユーザー クラスを拡張するだけで、ツイン エンティティとの関係を作成する必要はありません。

より多くのエンティティに分割すると、ハイドレーションと永続化のオーバーヘッドが発生しますが、さらに不要な分離ロジックが発生します。ユーザー プロパティ [ユーザー名、パスワード、名、姓など] を定義すると、それらはすべて同じエンティティに属します。

さまざまな種類のユーザーが必要な場合は、サブクラスを他のエンティティで構成することを検討する必要がありますが、それは質問の範囲を超えています。

于 2012-09-27T19:17:01.330 に答える